Junko IKEDA
tsuki****@gmail*****
2012年 1月 26日 (木) 19:00:47 JST
松浦様 NTTデータ先端技術の池田です。 > <問題点> > (1)はフェイルオーバーすることが確認出来ました。 (1)でpingdの設定に問題はないことが確認できているということなので pingdの設定を省略して、DRBD+groupで動作確認を行ってみてください。 管理するリソースが増えてくると、設定ファイルも複雑になってきます。 うまくいかない部分のみを切り出して動作確認をしてみると 問題の解決につながる場合があります。 > (2)はスレーブノード上でDRBDリソースが一瞬マスターに切り替わるのですが、 > すぐにスレーブに戻ってしまい、うまく切り替わりません。 > > <環境> > CentOS5.6 64bit > Pacemaker 1.0.11 > Heartbeat 3.0.5 > drbd 8.3.8 Pacemaker 1.0.11にはMaster/Slaveリソースの動作にバグがあることが確認されています。 参考 http://linux-ha.sourceforge.jp/wp/archives/2468/2 解決策 http://linux-ha.sourceforge.jp/wp/archives/2468/3 http://sourceforge.jp/projects/linux-ha/lists/archive/japan/2011-September/000942.html 下記の例を参考にして DRBD+group(Filesystem+IPaddr2)の動作確認を行ってみてください。 もしうまくいったらpingdも追加してみてください。 property \ no-quorum-policy="ignore" \ stonith-enabled="false" \ startup-fencing="false" \ crmd-transition-delay="2s" rsc_defaults \ resource-stickiness="INFINITY" \ migration-threshold="1" primitive res_drbd0 ocf:linbit:drbd \ params \ drbd_resource="r0" \ drbdconf="/etc/drbd.conf" \ op start interval="0s" timeout="240s" on-fail="restart" \ op monitor interval="10s" timeout="60s" on-fail="restart" role="Master" \ op monitor interval="11s" timeout="60s" on-fail="restart" role="Slave" \ op promote interval="0s" timeout="90s" on-fail="restart" \ op demote interval="0s" timeout="90s" on-fail="block" \ op stop interval="0s" timeout="100s" on-fail="block" primitive res_fs_drbd0 ocf:heartbeat:Filesystem \ params \ device="/dev/drbd0" \ directory="/chroot" \ fstype="ext3" \ op start interval="0s" timeout="60s" on-fail="restart" \ op monitor interval="10s" timeout="60s" on-fail="restart" \ op stop interval="0s" timeout="60s" on-fail="block" primitive res_vip ocf:heartbeat:IPaddr2 \ params \ nic="eth0" \ ip="192.168.0.111" \ cidr_netmask="24" \ op start interval="0s" timeout="90s" on-fail="restart" \ op monitor interval="10s" timeout="60s" on-fail="restart" \ op stop interval="0s" timeout="100s" on-fail="block" ms ms_drbd0 res_drbd0 \ meta \ master-max="1" \ master-node-max="1" \ clone-max="2" \ clone-node-max="1" \ notify="true" group rg_drbd \ res_vip res_fs_drbd0 location rsc_location-1 msDRBD \ rule role=master 200: #uname eq node01 \ rule role=master 100: #uname eq node02 \ rule role=master -inf: defined fail-count-res_fs_drbd0 \ rule role=master -inf: defined fail-count-res_vip \ colocation rg_on_drbd inf: rg_drbd ms_drbd0:Master order ord_rg_aft_drbd inf: ms_drbd0:promote rg_drbd:start ちょっと不思議だったのは、Hearbeatを使用しているのに cluster-infrastructureにopenaisが指定されているところです。 cluster-infrastructureは特に設定する必要はありません。 > property $id="cib-bootstrap-options" \ > cluster-infrastructure="openais" \ 以上よろしくお願いいたします。 池田淳子 2012年1月26日15:43 <midja****@tsuna*****>: > 松浦と申します。 > 初めて投稿させていただきます。 > > 現在Heartbeat+DRBDにてクラスタ構成を検討しており、 > 下記のとおりフェイルオーバー動作する事を想定しています。 > > (1)node01/node02からルータ(192.168.0.1)に向けてPINGを送信し、 > 応答が無い場合はマスターノードのリソースをスレーブノードに切り替える。 > (2)マスターノードのHeartbeatサービスを停止、またはノードをシャットダウンした際に、 > リソースををスレーブノードに切り替える。 > > <問題点> > (1)はフェイルオーバーすることが確認出来ました。 > (2)はスレーブノード上でDRBDリソースが一瞬マスターに切り替わるのですが、 > すぐにスレーブに戻ってしまい、うまく切り替わりません。 > > <環境> > CentOS5.6 64bit > Pacemaker 1.0.11 > Heartbeat 3.0.5 > drbd 8.3.8 > > Pacemaker設定ファイル > ------------------------------------------------------------------------------------------- > property $id="cib-bootstrap-options" \ > cluster-infrastructure="openais" \ > expected-quorum-votes="2" \ > no-quorum-policy="ignore" \ > stonith-enabled="false" \ > startup-fencing="false" \ > dc-deadtime="20s" > > rsc_defaults $id="rsc-options" \ > resource-stickiness="INFINITY" \ > migration-threshold="1" > > primitive res_drbd0 ocf:linbit:drbd \ > params \ > drbd_resource="r0" \ > drbdconf="/etc/drbd.conf" \ > op start interval="0s" timeout="240s" on-fail="restart" \ > op monitor interval="11s" timeout="60s" on-fail="restart" \ > op monitor interval="10s" timeout="60s" on-fail="restart" role="Master" \ > op stop interval="0s" timeout="100s" on-fail="block" > > primitive res_fs_drbd0 ocf:heartbeat:Filesystem \ > params \ > device="/dev/drbd0" \ > directory="/chroot" \ > fstype="ext3" \ > op start interval="0s" timeout="60s" on-fail="restart" \ > op monitor interval="10s" timeout="60s" on-fail="restart" \ > op stop interval="0s" timeout="60s" on-fail="block" > > primitive res_vip ocf:heartbeat:IPaddr2 \ > params \ > nic="eth0" \ > ip="192.168.0.111" \ > cidr_netmask="24" \ > op start interval="0s" timeout="90s" on-fail="restart" \ > op monitor interval="10s" timeout="60s" on-fail="restart" \ > op stop interval="0s" timeout="100s" on-fail="block" > > primitive res_ping ocf:pacemaker:pingd \ > params \ > name="default_ping_set" \ > host_list="192.168.0.1" \ > multiplier="100" \ > dampen="0" \ > meta \ > migration-threshold="10" \ > op start interval="0" timeout="90s" on-fail="restart" \ > op monitor interval="10s" timeout="60s" on-fail="restart" \ > op stop interval="0" timeout="100s" on-fail="ignore" > > group rg_drbd \ > res_vip res_fs_drbd0 > > ms ms_drbd0 res_drbd0 \ > meta \ > master-max="1" \ > master-node-max="1" \ > clone-max="2" \ > clone-node-max="1" \ > notify="true" > > clone cl_ping res_ping \ > meta \ > clone-max="2" \ > clone-node-max="1" > > location loc_rg_drbd rg_drbd \ > rule 200: #uname eq node01 \ > rule 100: #uname eq node02 \ > rule -INFINITY: defined default_ping_set and default_ping_set lt 100 > > location loc_ms_drbd0 ms_drbd0 \ > rule 200: #uname eq node01 \ > rule 100: #uname eq node02 \ > rule role=master -INFINITY: defined default_ping_set and default_ping_set lt 100 > > colocation rg_on_drbd inf: rg_drbd ms_drbd0:Master > colocation cl_ping_col 1000: rg_drbd cl_ping > order ord_rg_aft_drbd inf: ms_drbd0:promote rg_drbd:start > ------------------------------------------------------------------------------------------- > > drbd.conf > ------------------------------------------------------------------------------------------- > global { usage-count yes; } > common { syncer { rate 250M; } } > resource r0 { > protocol C; > startup { > degr-wfc-timeout 120; > } > net { > cram-hmac-alg sha1; > shared-secret "qawsedrftgyhujiko"; > } > on node01 { > device /dev/drbd0; > disk /dev/sda8; > address 192.168.100.1:7789; > meta-disk internal; > } > on node02 { > device /dev/drbd0; > disk /dev/sda8; > address 192.168.100.2:7789; > meta-disk internal; > } > } > ------------------------------------------------------------------------------------------- > > Heartbeatサービスを停止した際の/var/log/messages > ------------------------------------------------------------------------------------------- > Jan 26 14:49:38 node01 kernel: block drbd0: role( Primary -> Secondary ) > Jan 26 14:49:43 node01 kernel: block drbd0: peer( Secondary -> Unknown ) conn( Connected -> Disconnecting ) pdsk( UpToDate -> DUnknown ) > Jan 26 14:49:43 node01 kernel: block drbd0: short read expecting header on sock: r=-512 > Jan 26 14:49:43 node01 kernel: block drbd0: meta connection shut down by peer. > Jan 26 14:49:43 node01 kernel: block drbd0: asender terminated > Jan 26 14:49:43 node01 kernel: block drbd0: Terminating asender thread > Jan 26 14:49:43 node01 kernel: block drbd0: Connection closed > Jan 26 14:49:43 node01 kernel: block drbd0: conn( Disconnecting -> StandAlone ) > Jan 26 14:49:43 node01 kernel: block drbd0: receiver terminated > Jan 26 14:49:43 node01 kernel: block drbd0: Terminating receiver thread > Jan 26 14:49:43 node01 kernel: block drbd0: disk( UpToDate -> Diskless ) > Jan 26 14:49:43 node01 kernel: block drbd0: drbd_bm_resize called with capacity == 0 > Jan 26 14:49:43 node01 kernel: block drbd0: worker terminated > Jan 26 14:49:43 node01 kernel: block drbd0: Terminating worker thread > ------------------------------------------------------------------------------------------- > Jan 26 14:49:38 node02 kernel: block drbd0: peer( Primary -> Secondary ) > Jan 26 14:49:43 node02 kernel: block drbd0: peer( Secondary -> Unknown ) conn( Connected -> TearDown ) pdsk( UpToDate -> DUnknown ) > Jan 26 14:49:43 node02 kernel: block drbd0: asender terminated > Jan 26 14:49:43 node02 kernel: block drbd0: Terminating asender thread > Jan 26 14:49:43 node02 kernel: block drbd0: Connection closed > Jan 26 14:49:43 node02 kernel: block drbd0: conn( TearDown -> Unconnected ) > Jan 26 14:49:43 node02 kernel: block drbd0: receiver terminated > Jan 26 14:49:43 node02 kernel: block drbd0: Restarting receiver thread > Jan 26 14:49:43 node02 kernel: block drbd0: receiver (re)started > Jan 26 14:49:43 node02 kernel: block drbd0: conn( Unconnected -> WFConnection ) > Jan 26 14:49:45 node02 kernel: block drbd0: role( Secondary -> Primary ) > Jan 26 14:49:45 node02 kernel: block drbd0: Creating new current UUID > Jan 26 14:49:45 node02 kernel: block drbd0: State change failed: Need access to UpToDate data > Jan 26 14:49:45 node02 kernel: block drbd0: state = { cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown r--- } > Jan 26 14:49:45 node02 kernel: block drbd0: wanted = { cs:WFConnection ro:Primary/Unknown ds:Outdated/DUnknown r--- } > Jan 26 14:49:46 node02 kernel: block drbd0: role( Primary -> Secondary ) > Jan 26 14:49:46 node02 kernel: block drbd0: disk( UpToDate -> Outdated ) > ------------------------------------------------------------------------------------------- > > 大変お手数ですが、どなたかご教授頂けますでしょうか。 > 以上よろしくおねがいします。 > > _______________________________________________ > Linux-ha-japan mailing list > Linux****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan