[Linux-ha-jp] DRBD シャットダウン時にフェイルオーバーできない

Zurück zum Archiv-Index

midja****@tsuna***** midja****@tsuna*****
2012年 1月 27日 (金) 10:31:16 JST


池田様

対処方法教えていただきありがとうございます。
Pacemaker1.0.11のバグということで、対処方法を参考にして
リソースの配置制約に-inf: defined fail-count-<リソース名>を指定しました。
しかし、動作は以前と変わらず、一瞬マスターに切り替わりすぐにスレーブに戻ってしまいました。

どうもlinbit:drbd RAのバグのようにも思えるのですが、
同様の症状と言うのは報告されているものなのでしょうか。

以上よろしくお願いします。

> 松浦様
> 
> 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
> 
> _______________________________________________
> Linux-ha-japan mailing list
> Linux****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan
> 





Linux-ha-japan メーリングリストの案内
Zurück zum Archiv-Index