
renayama19661014 at ybb
Jan 26, 2012, 6:50 PM
Post #1 of 1
(329 views)
Permalink
|
|
Re: DRBD シャットダウン時にフェイルオーバーできない
|
|
松浦さん こんにちは、山内です。 corosync+PM1.0.11ですが、簡易なリソースに代替して動作を確認してみました。 (drbdは、Statefulリソースに、filesystemはDummyに、その他は基本的に同じです) また、停止からの動作確認なので、池田さんの指摘したバグに関する設定は影響しないはずなので、適用していません。(最終的には、1.0.11では故障からのFOなどの為に設定は必要になります) 結果は、Masterノードをcorosyncを停止した場合にも、正しく、Statefulは遷移しています。 ============ Last updated: Fri Jan 27 20:35:33 2012 Stack: openais Current DC: rh61-coro2 - partition WITHOUT quorum Version: 1.0.11-6e010d6b0d49a6b929d17c0114e9d2d934dc8e04 2 Nodes configured, 2 expected votes 3 Resources configured. ============ Online: [ rh61-coro2 ] OFFLINE: [ rh61-coro1 ] Resource Group: rg_drbd res_vip (ocf::heartbeat:IPaddr2): Started rh61-coro2 res_fs_drbd0 (ocf::heartbeat:Dummy): Started rh61-coro2 Master/Slave Set: ms_drbd0 Masters: [ rh61-coro2 ] Stopped: [ res_drbd0:0 ] Clone Set: cl_ping Started: [ rh61-coro2 ] Stopped: [ res_ping:0 ] Migration summary: * Node rh61-coro2: よって、drbd関連に問題がある可能性が高いのではないかと推測します。 また、最初の投稿にあるdrbdの/var/log/messageに以下が出ているので、このあたりに問題があるような気がします。 (drbdには詳しくありませんので、詳細はわかりません) > >> > 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 ) また、池田さんの指摘されていた、cluster-infrastructureの件ですが、基本的には設定してもしなくても問題ありません。 環境変数から、自動的に判断されて設定されるようです。 以上、宜しく御願いいたします。 --- On Fri, 2012/1/27, Junko IKEDA <tsukishima.ha [at] gmail> wrote: > 松浦様 > > ご連絡ありがとうございます。 > > > どうもlinbit:drbd RAのバグのようにも思えるのですが、 > > 同様の症状と言うのは報告されているものなのでしょうか。 > > バグだと思われたのは、なにか特定のログメッセージなどが出力されたということでしょうか。 > RAのバグを疑われているのであれば > 最新版のRAに更新して動作を確認してみてください。 > > DRBD 8.3系の最新版は8.3.12となります。 > http://oss.linbit.com/drbd/ > > 8.4系には新規機能が追加されていますがまだ開発途中なので > 安定版の8.3系を使用されることをおすすめします。 > > また、Pacemakerの設定がうまくいっていないのではなく > DRBDの設定や同期がうまくいっていないということも考えられます。 > DRBDの手動F/Oなどが正常に動作してしていることも > 確認してみてください。 > > 以上よろしくお願いいたします。 > > 池田淳子 > > 2012年1月27日10:31 <midjam [at] tsunakan>: > > 池田様 > > > > 対処方法教えていただきありがとうございます。 > > 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 <midjam [at] tsunakan>: > >> > 松浦と申します。 > >> > 初めて投稿させていただきます。 > >> > > >> > 現在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-ha-japan [at] lists > >> > http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan > >> > >> _______________________________________________ > >> Linux-ha-japan mailing list > >> Linux-ha-japan [at] lists > >> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan > >> > > > > _______________________________________________ > > Linux-ha-japan mailing list > > Linux-ha-japan [at] lists > > http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan > > _______________________________________________ > Linux-ha-japan mailing list > Linux-ha-japan [at] lists > http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan > _______________________________________________ Linux-ha-japan mailing list Linux-ha-japan [at] lists http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan
|