DRBD でHA環境を構築(CENTOS 5)
最近DRBDっていう、HAソフトがはやっているっぽいので、ちょっと試してみました。。DRBDって何?に関しては、 googleで調べてみてください。利用範囲は多岐にわたり、たとえばデーベースであったり、ファイルサーバであったり色々と使える場面があるかと思います。
以下の説明で、プロンプトの部分が、Primary_standby と書かれている場合は、同様の設定になります。 上記とは別に、ホスト名が書かれている箇所につきましては、そのホスト固有の設定になります。
また青文字が書かれている部分は、入力する部分になります。
1.DRBD メタディスク用パーティションの作成
[root@Primary_standby ~]# fdisk /dev/sdb デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも 含んでいません 新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
このディスクのシリンダ数は 2610 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) 警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって 正常になります
コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-2610, default 1): 1 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2610, default 2610): +200M
2.上記の残りをすべてデータ領域に設定する。
コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 2 最初 シリンダ (26-2610, default 26): Using default value 26 終点 シリンダ または +サイズ または +サイズM または +サイズK (26-2610, default 2610): Using default value 2610
- パーティション情報をセーブして終了します コマンド (m でヘルプ): w 領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。
4.DRBDのインストール
[root@Primary_standby ~]# yum install drbd83
Package Arch Version Repository Size
Installing: drbd83 x86_64 8.3.8-1.el5.centos extras 223 k
Transaction Summary
Install 1 Package(s) Upgrade 0 Package(s)
[root@Primary_standby ~]# yum install kmod-drbd83
Package Arch Version Repository Size
Installing: kmod-drbd83 x86_64 8.3.8-1.el5.centos extras 126 k
Transaction Summary
Install 1 Package(s) Upgrade 0 Package(s)
5./etc/drbd.confの編集 以下のとおり、drbd.confを作成した。 #
please have a a look at the example configuration file in
/usr/share/doc/drbd83/drbd.conf
# global { usage-count no; }
common { syncer { rate 10M; } }
resource r0 { protocol B; startup { wfc-timeout 120; } disk { on-io-error pass_on; } on Primary_standby.konoha.local { # uname -n device /dev/drbd0; disk /dev/sdb2; address 192.168.0.53:7788; meta-disk /dev/sdb1[0]; } on sai.konoha.local { # uname -n device /dev/drbd0; disk /dev/sdb2; address 192.168.0.64:7788; meta-disk /dev/sdb1[0]; } }
6.メタディスクの作成 [root@Primary_standby ~]# drbdadm create-md r0 Writing meta data… initializing activity log NOT initialized bitmap New drbd meta data block successfully created.
7.自動起動の設定 [root@Primary_standby ~]# chkconfig drbd on
[root@Primary_standby ~]# chkconfig list drbd drbd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- マウントディレクトリの作成 [root@Primary_standby ~]# mkdir /data [root@Primary_standby ~]# chmod 777 /data 8.DRBDの起動 ▼Primary側 [root@asuma ~]# drbdadm create-md r0 Writing meta data… initializing activity log NOT initialized bitmap New drbd meta data block successfully created. [root@asuma ~]# chkconfig drbd on [root@asuma ~]# chkconfig list drbd drbd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@asuma ~]# /etc/init.d/drbd start Starting DRBD resources: [ r0 Found valid meta data in the expected location, 0 bytes into /dev/sdb1. d(r0) s(r0) n(r0) ]……….
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 0 seconds. [degr-wfc-timeout] - If the peer was available before the reboot the timeout will expire after 120 seconds. [wfc-timeout] (These values are for resource 'r0'; 0 sec -> wait forever) To abort waiting enter 'yes' [ 14]: yes
※yesと入力し、コンソールをアボートしてください。(初回一回のみ)
▼standby側 [root@sai ~]# /etc/init.d/drbd start Starting DRBD resources: [ r0 Found valid meta data in the expected location, 0 bytes into /dev/sdb1. d(r0) s(r0) n(r0) ].
- 状態の確認 ▼Primary側 [root@asuma ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 m:res cs ro ds p mounted fstype 0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent B
※初回起動時は、 Secondary/Secondaryになっております ▼Secondary側 [root@sai ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 m:res cs ro ds p mounted fstype 0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent B
※初回起動時は、 Secondary/Secondaryになっております
10.Primary/Secondary 設定および設定確認 ▼Primary側
[root@asuma ~]# drbdadm overwrite-data-of-peer primary r0
※asumaをPrimaryに昇格
[root@asuma ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 m:res cs ro ds p mounted fstype 0:r0 SyncSource Primary/Secondary UpToDate/Inconsistent B … sync'ed: 2.8% (19732/20276)M delay_probe:
※上記作業を行うと、Primary/Secondaryになります。
▼Secondary側 [root@sai ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 m:res cs ro ds p mounted fstype 0:r0 SyncTarget Secondary/Primary Inconsistent/UpToDate B … sync'ed: 18.5% (16536/20276)M queue_delay: ms
※上記作業を行うと、自動的に、Secondary/Primaryになります。
※根拠はあまりないのですが、ここでPrimary/Secondaryの同期が完了するまでしばし待ちます(かなり待ちます) 11 DRBDボリュームのマウント ▼Primary側 ext3ファイルシステムの作成 [root@asuma ~]# mke2fs -j /dev/drbd0 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 2599968 inodes, 5191003 blocks 259550 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 159 block groups 32768 blocks per group, 32768 fragments per group 16352 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 32 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
▼Primary側 ファイルのマウント [root@asuma ~]# mount -t ext3 /dev/drbd0 /data/
[root@asuma ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 m:res cs ro ds p mounted fstype 0:r0 SyncSource Primary/Secondary UpToDate/Inconsistent B /data ext3 … sync'ed: 29.5% (14312/20276)M delay_probe:
▼Secondary側 [root@sai ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 m:res cs ro ds p mounted fstype 0:r0 SyncTarget Secondary/Primary Inconsistent/UpToDate B … sync'ed: 31.0% (14008/20276)M queue_delay: ms
12 動作確認 ▼プライマリ側 [root@asuma ~]# echo test > /data/test.txt ※DRBD領域に、ファイルを生成
[root@asuma ~]# umount /data ※/data をアンマウント
[root@asuma ~]# drbdadm secondary r0 ※Secondaryに降格
[root@asuma ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 m:res cs ro ds p mounted fstype 0:r0 SyncSource Secondary/Secondary UpToDate/Inconsistent B … sync'ed: 82.5% (3556/20276)M delay_probe:
※マウントがはずれ、Secondary/Secondaryになっていることを確認
▼Secondary側 [root@sai ~]# drbdadm primary r0 ※プライマリに昇格 [root@sai ~]# mount -t ext3 /dev/drbd0 /data ※ /data領域をマウント
[root@sai ~]# cat /data/test.txt test ※プライマリで生成したファイルが見れることを確認
[root@sai ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 m:res cs ro ds p mounted fstype 0:r0 SyncTarget Primary/Secondary Inconsistent/UpToDate B /data ext3 … sync'ed: 87.2% (2604/20276)M queue_delay: ms
※/dataがマウントがされ、 Primary/Secondaryになっていることを確認
[補足]
障害からの復旧に関しては、ここは一番参考になりました。 http://d.hatena.ne.jp/hogem/20080706/1215341445#