こんばんは、この記事では、WSFC (Windows Server Failover Clustering)に登場する、”クォーラムモード”と”投票”の概念について学んだことをまとめておきたいと思います。
なぜこんなことを急に調べようと思ったかというと、この技術がSQL Serverの可用性を高める、AlwaysOn可用性グループ(AG)やAlwaysOnフェールオーバークラスターインスタンス(FCI)の土台として使われているためです。
SQL ServerもAzureのPaaSオファリング(Azure SQL Database)を利用していれば意識することはないと思いますが、IaaSやオンプレミス上で運用している場合には、このAGやFCIを活用するかと思いますので、その土台の技術についてもちゃんと理解しておこうと思った次第です。
それではまいります。
Contents
クォーラムとは?
クォーラム(Quorum)の辞書による意味は「定足数」、つまり、例えば議会などで議案を議決したりする場合に得票しないといけない数、のような意味です。
転じて、今回解説するWSFCのみならず、分散システムにおいてよく利用される言葉となっています。分散システムにおけるクォーラムについては、以下によくまとまっていましたので、リンクを貼っておきます。
https://qiita.com/everpeace/items/632831371da5ff215995
WSFCにおけるクォーラムについては以下のようにまとめられます。
- クォーラムはクラスターの全体的な正常性を監視するために利用される
- WSFC内の各ノードは、定期的なハートビート監視に参加して、ノードの正常性状態を他のノードと共有している。応答しないノードは正常でないとみなされる。
- 加えてWSFC内の全体的な正常性を監視するため、これらWSFC内の大多数のノードをクォーラムノードセットとして束ね、定期的に(正常かどうかの)投票を行う。
- クォーラムが存在(=正常であるとの投票が定足数を上回る)する場合、WSFCクラスターは正常とみなされ、そうでない場合には正常でないとみなされる。
参考:
クォーラムが存在しないとどうなる?
WSFCでは、上記のしくみで定期的な投票を行うわけですが、このときクォーラムが存在しなければ、WSFCは予防策としてオフラインとなり、例えばクラスターに登録されたSQL Serverの全てのインスタンスが停止することになります。
参考:
3つのクォーラムモード
WSFCでは、投票結果の決定方法として、以下の3つの方法(クォーラムモード)が提供されています。
- ノードマジョリティ:クラスター内ノードの過半数が正常の投票をした場合に正常とみなす
- ノードおよびファイル共有マジョリティ:上記のノードに加えて、投票監視(クォーラム監視)として構成したリモートファイル共有へのノードからの接続も正常投票とカウントし、過半数の正常の投票を得た場合に正常とみなす
- ノードおよびディスクマジョリティ:ノードに加えて投票監視として構成した共有ディスククラスターへのノードからの接続も正常投票とカウントし、過半数の正常の投票を得た場合に正常とみなす
- ディスクのみ:共有ディスククラスターから。過半数の正常の投票を得た場合に正常とみなす
参考:
スプリットブレインとクォーラム監視
分散システムにおいては、ノード間の通信障害などによってスプリットブレインと呼ばれる状況が発生することがあります。
このような場合に備えて、クラスターの外部にクォーラムを配置して監視するように構成すると、クラスターの可用性を高めることができます。
この点は、以下の記事に分かりやすくまとまっていました。
https://atmarkit.itmedia.co.jp/ait/articles/1510/29/news020.html
力尽きたので今日はここまで・・・。また文章推敲してUpdateします。
以下の公式ドキュメントに、以下のように記載があります。