HeartBeat2 リソース設定
・heartBeatが起動している場合は、停止する。
・新規構築のため不要ファイルは削除する。
(/var/lib/heartbeat/crm/cib.xml, cib.xml.si, cib.xml.last, cib.xml.sig.last)
・PostgreSQLが自動起動している場合は、OFFにする。
(# chkconfig postgresql off)
・DRBD
・VIP
・PostgreSQL
# vi /etc/ha.d/haresources.tmp
dev-db01 drbddisk::db01 \ Filesystem::/dev/drbd0::/db::ext3 \ IPaddr::10.96.146.102/20/eth0 \ pgsql※/etc/ha.d/haresources.tmpは、cib.xmlファイルを作成するための一時ファイルです。
/etc/ha.d/resource.d
/etc/init.d
サービスが停止中の場合には「stopped」
サービスが稼動中の場合には「running」
・IPaddrは仮想IPの発生にifconfigを使い、ネットワークエイリアスとして生成する。
・IPaddr2はiproute2を使い、副IPアドレスをifaceに直接付加する。
# ip addr show 1: lo:mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:56:b6:75:2a brd ff:ff:ff:ff:ff:ff inet 10.96.146.101/20 brd 10.96.159.255 scope global eth0 inet6 fe80::250:56ff:feb6:752a/64 scope link valid_lft forever preferred_lft forever 3: eth1: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:56:b6:49:bd brd ff:ff:ff:ff:ff:ff inet 192.168.100.104/24 brd 192.168.100.255 scope global eth1 inet6 fe80::250:56ff:feb6:49bd/64 scope link valid_lft forever preferred_lft forever 4: sit0: mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0
# /usr/lib64/heartbeat/haresources2cib.py /etc/ha.d/haresources.tmp・生成されたcib.xmlを修正する。
修正前:name="nic" value="20"/ 修正後:name="nic" value="eth0"/
・name="cidr_netmask"の値修正前:name="cidr_netmask" value="eth0"/ 修正後: name="cidr_netmask" value="20"/
# vi /var/lib/heartbeat/crm/cib.xml
<primitive class="ocf" id="IPaddr_10_96_146_102" provider="heartbeat" type="IPaddr"> <operations> <op id="IPaddr_10_96_146_102_mon" interval="5s" name="monitor" timeout="5s"/> </operations> <instance_attributes id="IPaddr_10_96_146_102_inst_attr"> <attributes> <nvpair id="IPaddr_10_96_146_102_attr_0" name="ip" value="10.96.146.102"/> <nvpair id="IPaddr_10_96_146_102_attr_1" name="nic" value="eth0"/> <nvpair id="IPaddr_10_96_146_102_attr_2" name="cidr_netmask" value="20"/> </attributes> </instance_attributes> </primitive>
フェイルバック無効:value="INFINITY"
フェイルバック有効:value="0"
# vi /var/lib/heartbeat/crm/cib.xml
<nvpair id="cib-bootstrap-options-default-resource-stickiness" name="default-resource-stickiness" value="INFINITY"/>※既にHeartBeatを起動している状態であれば、以下のコマンドでcib.xmlファイルを更新する。
# cibadmin -o crm_config -U -X '<nvpair id="cib-bootstrap-options-default-resource-stickiness" name="default-resource-stickiness" value="INFINITY"/>'
# vi /var/lib/heartbeat/crm/cib.xml
<nvpair id="cib-bootstrap-options-default-resource-failure-stickiness" name="default-resource-failure-stickiness" value="-INFINITY"/>Localでの再起動無効:value="-INFINITY"
# chown hacluster:haclient /var/lib/heartbeat/crm/cib.xml
# crm_verify -x /var/lib/heartbeat/crm/cib.xml※記述の誤りがある場合は、メッセージが表示される。表示されない場合は、記述誤りがないことを示す。
PostgreSQL+DRBDのリソース設定
■PostgreSQLの起動制御# chkconfig --del postgresql
# vi /usr/lib/ocf/resource.d/heartbeat/pgsql
: ${OCF_RESKEY_pgctl=/usr/bin/pg_ctl} : ${OCF_RESKEY_psql=/usr/bin/psql} : ${OCF_RESKEY_pgdata=/db/pgsql/data} : ${OCF_RESKEY_pgdba=postgres} : ${OCF_RESKEY_pgport=5432} : ${OCF_RESKEY_pgdb=template1} : ${OCF_RESKEY_logfile=/dev/null} : ${OCF_RESKEY_stop_escalate=30}
# vi /etc/init.d/postgresql
PGDATA=/db/pgsql/data : : start(){ #20100416 本番のみ H_LOCAL_STAT=`/usr/sbin/drbd-overview |awk '{print $3}'|awk -F/ '{print $1}'` if [ $H_LOCAL_STAT != Primary ]; then echo "Primaryではないため起動できません" exit 1 fi #20100416 end※DRBDのレプリケーション対象は、[/db]である。
HeartBeatの起動
プライマリ、セカンダリサーバでHearBeatの自動起動設定し、起動をする。# chkconfig heartbeat on # /etc/init.d/heartbeat start
HeartBeat2+DRBD構築【目次】
01. HeartBeat2+DRBD構築 【DRBD構築手順】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構築手順】