[Linux-ha-jp] heartbeat+drbd構成においてミラーパーティションのスプリットブレイン発生事象について

アーカイブの一覧に戻る

kinos****@tdc***** kinos****@tdc*****
2010年 1月 22日 (金) 22:09:15 JST


木下です。

以前、「 ゲートウェイアドレスへのping不達での系切り替えがうまくいかない」で
は、
お世話になりました。

スプリットブレインについて、気になったことがあったので、識者の方に自分の考
えが
間違っていないのかコメントを頂きたいと思い投稿いたします。
一応、実際に試した結果を元に書いています。

たとえば、下記環境において、DBサーバーを冗長化しているとします。

CentOS4.7 2.6.9-78.ELsmp
heartbeat 2.1.3-3(v2モードで利用)
drbd 8.2.6-1
postgresql 8.4.1

sv01(アクティブ)
sv02(スタンバイ)

failback on設定

同期用には、シリアルケーブルとLANケーブル(クロス)を利用しています。

この状態で、同期用LANケーブルを抜いた場合の動作は、シリアルで同期が
取れているので、DRBDはheartbeat配下でコントロールされている。
よって、Primary/Secondaryが切り替わらない。
つまり、DRBDパーテテションのスプリットブレインは発生しない。
ステータスは、WFconnectionになるのみ。
また、LANケーブルを戻すと、ステータスは、connectedに戻る。
書き込みデータに差異があれば、DRBDがsyncする。

また、シリアルケーブルを抜いた場合も同期用LANケーブルで同期が
取れているので、シリアルが抜けたよとのメッセージがログには記録されるが、
DRBDパーティションにはなんら変化はなし。
これもスプリットブレインは発生しない。

次に、同期用にシリアルケーブルを使わない場合、LANケーブル(クロス)のみ。

この状態で、同期用LANケーブルを抜いた場合、対向のheartbeatプロセスと
通信が途絶えるので、sv02がアクティブとして起動する。
VIPも起動する。sv02ののDRBDパーティションもPrimary/Unknowで起動する。
そてし、ステータスは、WFconnectionになる。
この状態で、sv01、sv02共にアクティプになる。
heartbeatのスプリットブレインが発生する。

この場合、最初にアクティブで起動していたsv01のVIPはsv02が起動した
VIPの情報にMACを書き換えられ、データは後から起動したsv02サーバーの方に
書き込まれる。

その状態から、同期用LANケーブルを接続した場合、heartbeatは対向が
見えるようになり、sv02は、スタンバイに戻る。DRDBのステータスは、
standaloneになり、DRBDのスプリットブレイが発生する。


いまのところ、スプリットブレインを発生させない為には、同期用LANケーブル+
シリアルケーブルが必須と考えていますが、間違いないでしょうか?

もしくは、シリアルケーブルを利用しない、同期用LANケーブル1本だけでも
スプリットブレインを回避するcib.xmlへの記述方式はあるのでしょうか?

よろしくお願いいたします。





Linux-ha-japan メーリングリストの案内
アーカイブの一覧に戻る