第6回 HAクラスター構成の敵「スプリットブレイン対策」はこれだ!

こんにちは、SCSK 池田です。

早いもので2023年も終わりを告げようとしています。皆さんにとってはどのような1年でしたか?
私は、このTech HarmonyでLifeKeeperに関するブログを投稿し始めた思い出深い1年となりました。

さて前回は、前田さんより、AWS環境におけるLifeKeeperで対応可能ないくつかの接続方法についてお伝えしました。
6回目の今回は、HAクラスター構成の敵とも言える「スプリットブレイン」についてLifeKeeperでどのよぅな対策がなされているのかについてお伝えします。

スプリットブレインとは?

「スプリットブレイン?」「脳が分かれる?」。またまた聞きなれない用語が出てきました。「スプリットブレイン」とはどのような状態なのでしょうか?

HA クラスターシステムは、多くの場合において、2台のサーバでアクティブ-スタンバイの構成となり、2台のうちのどちらか一方だけのサービスが起動している状態です。ところがある条件下において、2台ともがサービスを起動しようとしてしまい、正しくサービスが提供できなくなることがあります。
この状態のことを「スプリットブレイン」もしくは「スプリットブレイン シンドローム」と呼びます。

本来1台だけでサービス提供するところ、
誤って2台が提供しようとして障害になってしまうのは問題だね

ではどんな時にスプリットブレインが起きてしまうのでしょうか?

まず2台のサーバでクラスタを構成している前提とします。2台はお互いの死活状態を確認しています。
この動作をハートビートと言いますが、ネットワークの障害など何らかの原因によって、お互いの死活状態を確認できなくなった場合に、それぞれのサーバは、相手のサーバが停止しサービス提供ができなくなったと判断し、自らが稼働系になろうとします。これによってスプリットブレイン状態になってしまうのです。

スプリットブレイン状態となった時に一番怖いのが、両方のサーバから共有ディスクに書き込んだ場合です。これが起きてしますと最悪共有ディスク上のデータで不整合が発生して、データ破損に繋がってしまいます。

せっかくのHAクラスタ構成なのに
データの不整合が起きてしまうのは避けたいわ

LifeKeeper では、この様なスプリットブレインを発生させないために、Quorum/Witness(クォーラム/ウィットネスと呼びます) をいう機能を利用することが出来ます。

Quorum/Witnessとはなに?

また新しい言葉が出てきましたが「Quorum/Witness」とは、スプリットブレインが発生した場合に、どちらのサーバが稼働系になるべきかを判断する為の機能となります。

「Quorum」の主な機能は、多数決の仕組みを使って稼働系となるべきサーバを決定する機能です。「Witness」は障害が発生したノードのステータスについて「セカンドオピニオン」を取る機能です。「Quorum」による多数決だけでは、本当に稼働すべきサーバか判断が付きかねる場面において、障害が発生していると思われるサーバについて、Witnessサーバの「セカンドオピニオン」を取ることで、より確実な判断をすることができるようになります。
まずは一般的な障害シナリオを見てみましょう。

シナリオ1 サーバAと他の全ノードとの間の通信に障害発生(サーバAに障害発生)

シナリオ2 サーバAとサーバBの間の通信で障害発生

次に、サーバ間の通信で障害が発生したものの、Quorum/Witnessサーバがいるお陰で、不要なフェイルオーバを抑止するパターンをご紹介します。

シナリオ2の場合では、もしもQuorum/Witnessサーバが存在しなかった場合は、サーバAで継続してサービス提供可能にも関わらず、フェイルオーバが発生してしまい、一時的ではありますが、サービスが利用できない時間帯ができてしまいます。

Quorum/Witness機能を実装するために必要な費用及び維持していく費用と、要求する可用性レベルとの天秤になるポイントとなりますので、お客様との十分なすり合わせが必要となります。

まとめ

今回は、Quorum/Witness機能についてご説明しましたがいかがでしたでしょうか?
システムとしてデータの整合性や一貫性が損なわれてしまうのは一大事ですよね。
非常に重要な機能ではありますが、LifeKeeperではQuorum/Witnessがオプションとして用意されているので、簡単に組み込むことができます。

まとめますと

Quorum/Witnessは、スプリットブレイン対策として有効な機能
Quorumは、多数決により、どのサーバでサービス提供すべきかを判断する機能
Witnessは、第三者を介して相手ノードの状態についてセカンドオピニオンを取る機能

次回は、「たった1台で可用性を高められる!? ~ Single Server Protection ~」についてお伝えします。お楽しみに!!

良いお年を!!

 

著者について
池田 雄介

中学時代にMSXを手に入れ、N88-Basicでのプログラミングを覚える。その後、ユーザ企業の情シスから社会人人生をスタート。100人に1台程度しかパソコンが割り当たっていない時代に、Windows95のパソコンを全国展開、本社、支店、工場のLAN/WAN化を推進。WindowsNTサーバを弄りながら流行りのイントラネットや社外向けのサイト作成・運用など担う。
2002年に現在のSIerへ転職。2007年からオンプレミスや仮想環境を中心としたインフラ基盤の構築に携わり、2013年からLifeKeeperを担当。以来10年以上に渡り、LifeKeeperに携わってきた。
趣味は、草野球、ボウリング、バドミントン、キャンプ、天体観測、ゴルフ、お酒を嗜むこと、ドライブなど

池田 雄介をフォローする

クラウドに強いによるエンジニアブログです。

SCSKでは、自社クラウドと3大メガクラウドの強みを活かし、ハイブリッドクラウド/マルチクラウドのソリューションを展開しています。業界の深い理解をもとに、お客様の業務要件に最適なアーキテクチャをご提案いたします。サービスサイトでは、お客様のDX推進をワンストップで支援するサービスの詳細や導入事例を紹介しています。

LifeKeeperプロダクト
シェアする
タイトルとURLをコピーしました