Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Linux-HA: Japanese

Re: DRBD シャットダウン時にフェイルオーバーできない

 

 

Linux-HA japanese RSS feed   Index | Next | Previous | View Threaded


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

Linux-HA japanese RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.