連載
» 2008年03月06日 00時00分 公開

Heartbeatでかんたんクラスタリング(4):ミラーリングツール「DRBD」によるデータ保護 (2/3)

[花島タケシ,VA Linux Systems Japan株式会社]

DRBDを動作させてみよう

DRBDのインストール

 DRBDのインストール自体は、特に難しい作業は必要ありません。一般的なオープンソースソフトウェア同様、ソースコードを入手後、

$ tar zxf drbd-0.7.25.tar.gz
$ cd drbd-0.7.25 && make
# make install

のように行えばいいだけです。

 ただ、Red Hat系のディストリビューションを使用するなら、rpmで管理したいところでしょう。その場合は、ソースコード中にあるdrbd.spec.inをベースにしてrpmファイルを作成した後、インストールする方がいいでしょう。参考までに、サンプルファイルの「drbd-0.7.x.spec」を用意しておきました。

(一般ユーザーでrpmを作成できることを前提としています)
$ rpmbuild -ba drbd-0.7.25.spec
# rpm -ivh (anywhere)/drbd-0.7.25-1.i386.rpm \
(anywhere)/drbd-km_2.6.9-67.0.1.EL-0.7.25-1.i386.rpm

としてインストールを行います。

 上記を見れば分かると思いますが、drbdは、カーネルランドで動作するためのカーネルモジュールをインストールします。ですので、カーネル本体をアップデートした後には、再度drbdのビルド&インストールという作業が必要になります。

サンプル環境におけるDRBDの設定

 以降は、第2回「インストールとApache用の設定方法」で紹介したテスト環境を用いて、DRBDの設定方法を紹介していきます。

図2 DRDBを組み合わせたテスト環境 図2 DRDBを組み合わせたテスト環境

 DRBDをマスター側とスレイブ側の両方にインストールした後に、設定ファイル「/etc/drbd.conf」の記述を行います。

resource drbd0 {
 protocol C;
 syncer {
  rate 200M;
 }
 disk {
  on-io-error pass_on;
 }
 on surr {
  device /dev/drbd0;
  disk /dev/hda2;
  address 192.168.0.1:7789;
  meta-disk internal;
 }
 on tomato {
  device /dev/drbd0;
  disk /dev/hda2;
  address 192.168.0.2:7789;
  meta-disk internal;
 }
}

 ここでは、簡単な設定ファイルにとどめていますが、詳細な情報は、

$ man drbd.conf

とすれば、英語によるオンラインマニュアルを参照できます。

 設定内容を簡単に説明しておきましょう。protocol部は、「どの時点でデータの同期(sync)を完了と見なすか」を決定する部分で、A、B、Cの3段階が指定できます。マニュアルによると、

選択肢 特徴
A write IO is reported as completed, if it has reached local disk and local TCP send buffer.
(データを自分のディスクとTCP送信バッファに送った時点で完了)
B write IO is reported as completed, if it has reached local disk and remote buffer cache.
(データを自分のディスクと相手ノードのバッファキャッシュに送った時点で完了)
C write IO is reported as completed, if it has reached both local and remote disk.
(データを自分と相手のディスクに送った時点で完了)

となっています。当面は、安全性のためにCを設定すべきでしょう。

 また、

on surr {
 device /dev/drbd0;
 disk /dev/hda2;
 address 192.168.0.1:7789;

の部分は、「ディスクパーティション『/dev/hda2』を『/dev/drbd0』に割り当てて、ホスト『surr』のIPアドレス192.168.0.1の7789番ポートを用いてsyncを行う」といった意味になっています。

 ここでの注意点として、HeartbeatからDRBDを利用する場合、surrとtomatoの双方において「/dev/drbd0」部を共通にしていく必要があります。

 次に、surrとtomatoの双方において、以下のように実行します。

# /sbin/modprobe drbd   ←drbdモジュールを読み込む
# /sbin/lsmod | grep drbd ←モジュールがロードされているか確認する
# drbdsetup /dev/drbd0 disk /dev/hda2 internal -1
# drbdsetup /dev/drbd0 net 192.168.0.1 192.168.0.2 C
    ←surrで実行。IPの部分は <surr> <tomato>の順になる
# drbdsetup /dev/drbd0 net 192.168.0.2 192.168.0.1 C
    ←tomatoで実行。IPの部分は上と逆なので注意

 この時点でステータスを確認すると、

[root@surr crm]# cat /proc/drbd
version: 0.7.25 (api:79/proto:74)
SVN Revision: 2875 build by foo@surr, 2007-12-25 09:59:41
0: cs:WFConnection st:Secondary/Unknown ld:Consistent
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
1: cs:Unconfigured

と見えます。ここで「Unknown」と表示されているのは、tomatoで実行していないためです。

 さらに、surr側で、

# drbdsetup /dev/drbd0 primary

と入力して、surrをdrbdサービスのプライマリ(Primary)に格上げします。ステータスを確認すると、

version: 0.7.25 (api:79/proto:74)
SVN Revision: 2875 build by foo@surr, 2007-12-25 09:59:41
0: cs:Connected st:Primary/Secondary ld:Consistent
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
1: cs:Unconfigured

のように、Primaryに変化しているのが確認できます。さらに、

# drbdadm -- --do-what-I-say primary all

とすると、syncが開始されます。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。