[Linux-ha-jp] DRBDスプリットブレインの発生原因に関して

Back to archive index

Motoharu Kubo mkubo****@3ware*****
2015年 2月 17日 (火) 23:15:55 JST


久保です。

>> なお、貼り付けていただいたログの範囲内では、スプリットブレインは起こって
>> いません。単に一時的にネットワーク障害か何かの原因で、レプリケーションが
>> 途切れただけです。
> セカンダリ側のログがプライマリの内容になっていました。申し訳ございません。
> 以下の「Split-Brain detected but unresolved, dropping connection!」より
> スプリットブレインと判断しました。

なるほど。たしかに18:00:27にSplit-Brain...が表示されていますね。

時系列に追いかけると、次のような状態になっていたことになります。

18:00:05頃  ネットワークの通信障害が起きて両ノードのDRBDはともにいったん
            接続を切って、再度相手との接続待ちに入った。

            その後ネットワーク障害が続き、両ノードとも相手との接続待ち状
            態のまま待ち続けることになってしまった(WFConnection)

18:00:26頃  セカンダリ側のCorosync/Pacemakerがフェールオーバすることを決
            断。server2のPacemakerはDRBDをプライマリに昇格させた。DRBDは
            相手とのコネクションが切れたままなので、実際にプライマリに切
            り替わった(role(Secondary -> Primary))。

            たまたまプライマリに切り替わった直後に、両ノード間の通信が可
            能になった(Handshake successful)。

この時点でserver1とserver2の両方が、相手と無関係にプライマリになってしま
い、スプリットブレインが発生してしまったわけです。

ただし実際にDRBDがスプリットブレインを検出するには、相互のコネクションが
再度確立する必要があり、18:00:27にSplit-Brain ....が表示されました。

原因は、ネットワークの疎通が一時的になくなっていたことです。これは、cs:
(ログではconn)がWFConnectionの状態が20秒近く続いたことから明らかです。
ネットワークの疎通が正常な場合、WFConnection->WFReportParams->....という
状態遷移が通常1秒以下のうちに進み、Connectedになるはずです。

正常に動作していたときのログのconn(...)の遷移を追いかけて比較するとよく
わかるんじゃないかと思いますよ。

-- 
久保  元治             (株)サードウェア





Linux-ha-japan メーリングリストの案内
Back to archive index