【SQL Server AlwaysOn】WSFCのクォーラムモードと投票について解説する

こんばんは、この記事では、WSFC (Windows Server Failover Clustering)に登場する、”クォーラムモード”と”投票”の概念について学んだことをまとめておきたいと思います。

なぜこんなことを急に調べようと思ったかというと、この技術がSQL Serverの可用性を高める、AlwaysOn可用性グループ(AG)やAlwaysOnフェールオーバークラスターインスタンス(FCI)の土台として使われているためです。

SQL ServerもAzureのPaaSオファリング(Azure SQL Database)を利用していれば意識することはないと思いますが、IaaSやオンプレミス上で運用している場合には、このAGやFCIを活用するかと思いますので、その土台の技術についてもちゃんと理解しておこうと思った次第です。

それではまいります。

クォーラムとは?

クォーラム(Quorum)の辞書による意味は「定足数」、つまり、例えば議会などで議案を議決したりする場合に得票しないといけない数、のような意味です。

転じて、今回解説するWSFCのみならず、分散システムにおいてよく利用される言葉となっています。分散システムにおけるクォーラムについては、以下によくまとまっていましたので、リンクを貼っておきます。

https://qiita.com/everpeace/items/632831371da5ff215995

WSFCにおけるクォーラムについては以下のようにまとめられます。

  • クォーラムはクラスターの全体的な正常性を監視するために利用される
  • WSFC内の各ノードは、定期的なハートビート監視に参加して、ノードの正常性状態を他のノードと共有している。応答しないノードは正常でないとみなされる。
  • 加えてWSFC内の全体的な正常性を監視するため、これらWSFC内の大多数のノードをクォーラムノードセットとして束ね、定期的に(正常かどうかの)投票を行う。
  • クォーラムが存在(=正常であるとの投票が定足数を上回る)する場合、WSFCクラスターは正常とみなされ、そうでない場合には正常でないとみなされる。

参考:

https://docs.microsoft.com/ja-jp/sql/sql-server/failover-clusters/windows/wsfc-quorum-modes-and-voting-configuration-sql-server?view=sql-server-ver15

クォーラムが存在しないとどうなる?

WSFCでは、上記のしくみで定期的な投票を行うわけですが、このときクォーラムが存在しなければ、WSFCは予防策としてオフラインとなり、例えばクラスターに登録されたSQL Serverの全てのインスタンスが停止することになります。

参考:

https://docs.microsoft.com/ja-jp/sql/sql-server/failover-clusters/windows/wsfc-quorum-modes-and-voting-configuration-sql-server?view=sql-server-ver15

3つのクォーラムモード

WSFCでは、投票結果の決定方法として、以下の3つの方法(クォーラムモード)が提供されています。

  • ノードマジョリティ:クラスター内ノードの過半数が正常の投票をした場合に正常とみなす
  • ノードおよびファイル共有マジョリティ:上記のノードに加えて、投票監視(クォーラム監視)として構成したリモートファイル共有へのノードからの接続も正常投票とカウントし、過半数の正常の投票を得た場合に正常とみなす
  • ノードおよびディスクマジョリティ:ノードに加えて投票監視として構成した共有ディスククラスターへのノードからの接続も正常投票とカウントし、過半数の正常の投票を得た場合に正常とみなす
  • ディスクのみ:共有ディスククラスターから。過半数の正常の投票を得た場合に正常とみなす
推奨されるクォーラムモード

以下の公式ドキュメントに、以下のように記載があります。

Always On 可用性グループ に非対称ストレージ構成を使用する場合は、通常、投票ノード数が奇数の場合はノード マジョリティ クォーラム モードを使用し、偶数の投票ノードがある場合はノードとファイル共有マジョリティ クォーラム モードを使用する必要があります。

参考:

https://docs.microsoft.com/ja-jp/sql/sql-server/failover-clusters/windows/wsfc-quorum-modes-and-voting-configuration-sql-server?view=sql-server-ver15#QuorumMode

スプリットブレインとクォーラム監視

分散システムにおいては、ノード間の通信障害などによってスプリットブレインと呼ばれる状況が発生することがあります。

このような場合に備えて、クラスターの外部にクォーラムを配置して監視するように構成すると、クラスターの可用性を高めることができます。

この点は、以下の記事に分かりやすくまとまっていました。

https://atmarkit.itmedia.co.jp/ait/articles/1510/29/news020.html

力尽きたので今日はここまで・・・。また文章推敲してUpdateします。

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。