HeartBeat2 基本設定内容
■HeartBeat設定内容ノード1 | サーバ名 | dev-db01 |
RIP(物理IP) | 10.96.146.100 | |
レプリケーション用IP | 192.168.100.103 | |
ノード2 | サーバ名 | dev-db02 |
RIP(物理IP) | 10.96.146.101 | |
レプリケーション用IP | 192.168.100.104 | |
共通 | リソース | VIP,DRBD,PostgreSQL |
VIP | 10.96.146.102 | |
ヘルスチェック用PING先1 | 10.240.10.53 | |
ヘルスチェック用PING先2 | 10.240.10.56 | |
ファイルシステム デバイス(マウント) |
/dev/drbd0(/db) |
ファイル名 | 説明 |
/etc/ha.d/ha.cf | クラスタの基本的な構造の設定用ファイル |
/etc/ha.d/autheys | ノード間のハードビート通信のためのパスフレーズの記述用ファイル |
/var/lib/heartbeat/crm/cib.xml | 提供するサービスやノード、ポリシーなどクラスタの詳細な設定ファイル |
HeartBeat2 インストール
■関連パッケージのインストール# yum install libnet.x86_64 # yum install libtool-ltdl.x86_64 libtool-ltdl-devel.x86_64 # yum install OpenIPMI-devel.x86_64
# yum install net-snmp-devel.x86_64 net-snmp.x86_64
# groupadd -g 1310 haclient # useradd -g 1310 -u 1310 -s /sbin/nologin hacluster※RPMでインストールする場合、事前にユーザを作成しないと、haclusterグループが作成されてしまうため、 両ノードで異なるID番号になってしまう。
# passwd hacluster
# yum install heartbeat.x86_64 heartbeat-pils.x86_64 heartbeat-stonith.x86_64 heartbeat-devel.x86_64※heartbeat-devel.x86_64は必須ではありません。
# yum install heartbeat-gui.x86_64
# /usr/lib64/heartbeat-gui/haclient.py※Xのログイン画面よりログイン(ユーザ:hacluster / パスワード :haclusterのパスワード)
HeartBeat初期設定
■クラスタ設定# vi /etc/ha.d/ha.cf
#v2設定をするための記述 crm on #ログ関連 use_logd yes #ログの出力先ファイルを/etc/ha.d/logd.cfに記述 #logfile /var/log/heartbeat/ha-log #debugfile /var/log/heartbeat/ha-debug #システムログへの出力方法 logfacility none #※ initdead > deadtime > warntime > keepalive #ハートビートの間隔 keepalive 3 #ハートビートが返ってこないと警告となる時間 warntime 10 #ノードが障害と認知する時間 deadtime 30 #起動時にのみ使用されるノード障害認知時間 initdead 100 #pingの返事がない場合に障害と認知する時間 deadping 40 #ハートビートで使用するポート udpport 694 #ノード復旧後にサービスを自動的に戻さない(HeartBeat1のみ) #auto_failback off # eth0インターフェースで、相手先ホストにパケットを送信する。 # [for (dev-db02)] ucast eth0 10.96.146.101 # [for (dev-db01)] ucast eth0 10.96.146.100 ucast eth0 10.96.146.101 # eth1インターフェースで、相手先ホストにパケットを送信する。 # [for (dev-db01)] ucast eth1 192.168.100.104 # [for (dev-db02)] ucast eth1 192.168.100.103 ucast eth1 192.168.100.104 #クラスタに参加するノード名(hostnameコマンドで表示されるもの)をすべて記述 node dev-db01 node dev-db02 #リソース監視 #respawn root /usr/lib64/heartbeat/pingd -m 100 -d 5s -a default_ping_set #ping_group ping_group1 10.240.10.53 10.240.10.56 #respawn hacluster /usr/lib64/heartbeat/ipfail #apiauth ipfail gid=haclient uid=hacluster※ucastの値は、プライマリサーバとセカンダリサーバとでは異なる値になるのでそれぞれ書き換える。
# cp /usr/share/doc/heartbeat-2.1.3/logd.cf /etc/logd.cf # vi /etc/logd.cf
debugfile /var/log/heartbeat/ha-log logfile /var/log/heartbeat/ha-log※「use_logd」を有効にした場合、パフォーマンスが向上します。
# mkdir /var/log/heartbeat # chown hacluster /var/log/heartbeat・ログローテート
# vi /etc/logrotate.d/heartbeat
/var/log/heartbeat/ha-debug { missingok } /var/log/heartbeat/ha-log { missingok }
# vi /etc/ha.d/authkeys
auth 1 1 sha1 HAheart77
# chown hacluster /etc/ha.d/authkeys # chmod 600 /etc/ha.d/authkeys
HeartBeat2+DRBD構築【目次】
01. HeartBeat2+DRBD構築 【DRBD構築手順】DRBDの起動と確認
■プライマリサーバでのDRBDの起動# drbdadm up db01
# cat /proc/drbd version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 0: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r---- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:6152896 「cs:WFConnection」コネクション状態が接続待ち 「ro:Secondary/Unknown」ローカルサーバがSecundary状態でリモートサーバがUnknown(不明)状態 「ds:Inconsistent/DUnknown」ローカルサーバのデータ状態がInconsistent(一貫性がとれていない)状態
cat /proc/drbd version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r---- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:6152896※「cs:Connected」CS状態がConnectedになっていることを確認する。
# drbdsetup /dev/drbd0 primary -o
# cat /proc/drbd version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---- ns:725824 nr:0 dw:0 dr:732992 al:0 bm:43 lo:1 pe:297 ua:224 ap:0 ep:1 wo:b oos:5436544 [=>..................] sync'ed: 11.8% (5308/6008)M delay_probe: 45 finish: 0:01:14 speed: 73,288 (44,772) K/sec※[=>..................] sync'ed: 11.8%で進捗状態を確認できる。
# cat /proc/drbd version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r---- ns:6152895 nr:0 dw:0 dr:6152895 al:0 bm:376 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0※「ro:Primary/Secondary」ro状態がPrimaryになっていることを確認する。
# 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) : : This filesystem will be automatically checked every 23 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.※プライマリサーバで一度実施する。
# mkdir /db # mount /dev/drbd0 /db※両サーバで/dbは作成する。mountは、プライマリサーバのみで実施する。
# chkconfig --add drbd # chkconfig drbd on※両サーバで実施する。
HeartBeat2+DRBD構築【目次】
01. HeartBeat2+DRBD構築 【DRBD構築手順】DRBD構築手順
DRBDのインストールと設定の構築手順を説明します。DRBDインストール
DRBDとDRBDカーネルモジュールの2つのパッケージをインストールする# yum install drbd83.x86_64 kmod-drbd83.x86_64※kernel-develパッケージが必要です。
DRBDの設定
■DRBDパーティション設定# fdisk /dev/sdb コマンド (m でヘルプ): p Disk /dev/sdb: 6442 MB, 6442450944 bytes 255 heads, 63 sectors/track, 783 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System※メタデータ領域として128MBを必要とする。128MB確保するための計算をする。(128*1024*1024)/8225280 = 16.3177
# fdisk /dev/sdb コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-783, default 1): Using default value 1 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-783, default 783): 17 コマンド (m でヘルプ): p Disk /dev/sdb: 6442 MB, 6442450944 bytes 255 heads, 63 sectors/track, 783 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/sdb1 1 17 136521+ 83 Linux コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 2 最初 シリンダ (17-783, default 17): Using default value 17 終点 シリンダ または +サイズ または +サイズM または +サイズK (17-783, default 783): Using default value 783 コマンド (m でヘルプ): w 領域テーブルは交換されました!
# uname -n dev-db01※アクティブ側、スタンバイ側のホスト名を確認する
# vi /etc/drbd.conf global { usage-count no; } common { syncer { rate 24M; } } resource db01 { protocol C; handlers { local-io-error "echo o > /proc/sysrq-trigger ; halt -f"; } startup { degr-wfc-timeout 120; # 2 minutes. } disk { on-io-error call-local-io-error; } on dev-db01 { device /dev/drbd0; disk /dev/sdb2; address 192.168.100.103:7788; meta-disk /dev/sdb1[0]; } on dev-db02 { device /dev/drbd0; disk /dev/sdb2; address 192.168.100.104:7788; meta-disk /dev/sdb1[0]; }※meta-diskは外部メタデータが推奨(http://www.drbd.jp/doc_biginer.html)
# modprobe drbd minor_count=1
# /sbin/lsmod | grep drbd drbd 277272 0
# cat /proc/drbd version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
# drbdadm create-md db01 Writing meta data... initializing activity log NOT initialized bitmap New drbd meta data block successfully created.
HeartBeat2+DRBD構築【目次】
01. HeartBeat2+DRBD構築 【DRBD構築手順】