CentOSへのインストールメモ
Linuxサーバーを簡単にクラスタ化できるdrbdのインストールメモ。OSはCentOS4.5を使用。
- インストール
yum -y install drbd
続いて、drbdのkernelモジュールのインストール
yum -y install kernel-module-drbd
これだと、kernel-module-drbd が、kernelのバージョンが異なるものがインストールされてしまった。( modprobe drbd でエラーが出る。)
uname -a すると、 「2.6.9-55.EL」なのに、インストールされるのは、「kernel-module-drbd-2.6.9-42.EL-0.7.21-1.c4」のように、「2.6.9-42」用のものがインストールされてしまい、kernelモジュールがロードされずにdrbdが起動できない。
そのため、
yum search kernel-module-drbd
を実行して、kernelのバージョンがマッチしているものを探し、
rpm -e kernel-module-drbd-2.6.9-42.EL.i686
のように間違ったバージョンのものをアンインストールし、
yum -y install kernel-module-drbd-2.6.9-55.ELsmp.i686
のように正しいバージョンのものをインストールする。
- 設定
/usr/share/doc/drbd-0.7.23/drbd.conf を /etc/drbd.conf にコピーして編集する。
設定例
resource r0 { protocol C; incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f"; startup { degr-wfc-timeout 120; # 2 minutes. } disk { on-io-error detach; } net { sync-min=600M; sync-max=600M; } syncer { rate 10M; group 1; al-extents 257; } on web01.rukatan.com { device /dev/drbd0; disk /dev/sdb1; address 192.168.0.101:7788; meta-disk internal; } on web02.rukatan.com { device /dev/drbd0; disk /dev/sdb1; address 192.168.0.102:7788; meta-disk internal; } }
- 起動
今はもう1台が見つからないので、以下のような結果になる。
# service drbd start Starting DRBD resources: [ d0 s0 n0 ]. .......... *************************************************************** DRBD's startup script waits for the peer node(s) to appear. - In case this node was already a degraded cluster before the reboot the timeout is 120 seconds. [degr-wfc-timeout] - If the peer was available before the reboot the timeout will expire after 0 seconds. [wfc-timeout] (These values are for resource 'r0'; 0 sec -> wait forever) To abort waiting enter 'yes' [ 25]:
「yes」と入力。
そして、
# cat /proc/drbd version: 0.7.23 (api:79/proto:74) SVN Revision: 2686 build by buildcentos@build-i386, 2007-05-23 09:30:50 0: cs:WFConnection st:Secondary/Unknown ld:Inconsistent ns:0 nr:0 dw:0 dr:0 al:0 bm:1008 lo:0 pe:0 ua:0 ap:0 1: cs:Unconfigured
自分自身が「Secondary」で、もう一台が「Unknown」状態は「Inconsistent」。
# drbdsetup /dev/drbd0 primary ioctl(,SET_STATE,) failed: Input/output error Local replica is inconsistent (--do-what-I-say ?)
自分自身をprimaryにしようとすると、エラーがでる。
# drbdadm -- --do-what-I-say primary all # cat /proc/drbd version: 0.7.23 (api:79/proto:74) SVN Revision: 2686 build by buildcentos@build-i386, 2007-05-23 09:30:50 0: cs:WFConnection st:Primary/Unknown ld:Consistent ns:0 nr:0 dw:0 dr:0 al:0 bm:1008 lo:0 pe:0 ua:0 ap:0 1: cs:Unconfigured
自分自身が「Primary」で、もう一台が「Unknown」状態は「Consistent」。
これで、1台目の準備完了。
- 使ってみる
# mkfs.ext3 /dev/drbd0 mke2fs 1.35 (28-Feb-2004) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 1032192 inodes, 2063706 blocks 103185 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2113929216 63 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 30 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
マウントする場所を作成して、マウントする。
# mkdir /www # mount /dev/drbd0 /www # touch /www/test # ls /www lost+found test
ばっちり。
- もう1台の方のセットアップ
1台目と同様にセットアップ。/etc/drbd.conf は1台目のコピーで問題なし。 ホスト名、IPアドレスは設定ファイルに合わせる。drbdで使うディスクは、/etc/drbd.conf のとおり/dev/sdb1にして1台目と同じサイズにしておく。両方のマシンを起動して、両方のマシンで、service drbd start させれば、勝手に同期が始まる。同期中も1台目をprimaryにしてマウントし、ファイルの書き込みが出来た。すごい。これなら、運用中に障害が起きてもサービス停止する必要がなくなる。