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への記述方式はあるのでしょうか? よろしくお願いいたします。