HAクラスタリングソフトウェア利用時のネットワークパーティションを考慮する

2016.01.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、千葉です。

本日はクラスタに関してのTipsとなります。

一般的にHAクラスタはハートビートと呼ばれる通信を行い、Active側とStandby側とで死活確認を行います。

今回は、ネットワーク障害等でハートビート通信が失われた時の動作について調査しましたので残しておきます。

ネットワークパーティション問題

ネットワーク障害等でハートビート通信が失われ、お互いの死活状態を確認できなくなることをネットワークパーティション問題またはスプリットブレインシンドロームなどと呼ばれたりします。

AWSではAZレベルでの障害が考えられます。参考

このとき何が問題かというと、どちらでクラスタグループ(例えばデータベース等)を起動すればよいか判断できないことです(排他制御)。間違って両系で起動した場合、共有ディスクへの同時書き込みが発生し最悪の場合、データが破損する可能性があります。

cluster-np-1

どうやって解決するか?

ハートビート以外で自分が正常だということを証明します。つまり、別の方法で正常性を確認します。方法は複数あります。

共有ディスクで正常性確認

AWSで実現するとしたら、EFS等のNFSを利用することが考えられます。ただし、ソフト側でNFSをサポートしている必要があります。(S3とかもあるので対応してたらいいな。観測的希望)

cluster-np-2

ping正常性確認

ネットワーク障害の問題なので、自ネットワークが正常なことをpingにて確認します。何を持って正常と判断するかpingの向き先は考慮する必要がありますね。

cluster-np-3

さいごに

クラスタを利用する上で必ず考慮しないといけないポイントとなります。可用性を確保したのに、データ破損してしまってはダメですね。大切なデータを守るために必ず考慮する必要がありますね。