Database JUNKY

MySQL,MariaDBを中心としたブログです

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

  1. パーティション情報をセーブして終了します コマンド (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

  1. マウントディレクトリの作成 [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) ].

  1. 状態の確認 ▼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#