AlwaysOn Availability Groups / Failover Clustering はクラスター環境 (WSFC) が必須となります。
# WSFC の環境を構築するためには AD も必須となります。
AlwaysOn Availability Groups はローカルのディスク上に作成したデータベース、AlwaysOn Failover Clustering は SMB のサポートにより共有フォルダにデータベースを配置できるようになります。
どちらの構成もクラスター環境を共有ディスクを使用しないで構築することが可能となっています。
共有ディスクを使用しないで、クラスターを構築した場合、クラスター クォーラムの構成は [ノードマジョリティ] となります。
この構成だとクラスターを構成する一台で障害が発生すると Availability Groups で可用性を持たせているデータベース / Failover Clustering で可用性を持たせているインスタンスが停止してしまいます。
今回の投稿ではこの設定についてまとめてみたいと思います。
クラスターの概要に関しては以下の技術文章がわかり易いと思います。
Windows Server 2008 フェールオーバー クラスタリングの概要
■2 台構成のノードマジョリティについて
2 台のノードでノードマジョリティを使用した場合ですが、どちらか 1 台のノードが起動していない状態ではクラスターを起動することができません。
ノードマジョリティの場合、[ノード数 / 2 + 1] 台が起動している必要があり、 2 台構成の場合は [2 台 / 2 + 1 = 2 台] のノードが起動している必要があります。
2 台とも起動していないとダメということですね。
以下のような 2 台のノードでクラスターを構築しています。
この時のクォーラム構成は [ノードマジョリティ] として設定がされます。
# 共有ディスクがない状態でクラスターを組んだ際の初期状態が [ノードマジョリティ] となります。
この状態でフェールオーバー クラスター マネージャーからノードを一台停止してみます。
2 台構成のノードマジョリティではどちらかのノードが停止するとクォーラムが失われるとクラスターのサービスを維持することができなくなります。
そのため、管理コンソールからはクラスターのサービスを停止することができないようになっています。
MMC のサービスからは停止することができますのでこちらからクラスターのサービスを停止してみます。
今回は[2008R2-SQL11-02] の [Cluster Services] のみ停止したのですが、ノードマジョリティで必要となる 2 台のノード数が確保できないためクラスターを起動しておくことができず、停止をしていない [2008R2-SQL11-01] の [Cluster Services] も停止してしまいます。
# サービスが停止しないこともあるようですが、クラスターとしては機能していない状態となります。
クラスターでインストールした SQL Server のインスタンスは Cluster Services が起動していない状態ではインスタンスが停止している状態となりますので、クラスターを構成するノードのどちらか 1 台が停止してしまうと SQL Server が使用できなくなってしまいます。
それでは、Availability Groups はどうなるでしょう。
Availability Groups はサーバーのローカルにインストールしたインスタンス上のデータベース同士を使用して可用性を持たせる環境になります。
そのためクラスターが停止していても SQL Server のサービスは起動した状態となります。
ただし、この状態でデータベースを開こうとすると以下のようなエラーが発生します。
可用性グループ (Availability Groups) を設定しているデータベースですが、クラスター上に可用性グループ用のクラスターグループが作成され、可用性グループのリスナーとして設定した値が CAP (クライアントアクセスポイント) のリソースとして、可用性グループの管理のための [SQL Server Availability Group] のリソースが作成されます。
このリソースが起動していない場合、可用性グループに設定しているデータベースにアクセスができなくなります。
可用性グループを使用している場合、実行しているのはローカルのインスタンスですが、クラスターリソースの起動状態にも気を付ける必要が出てきます。
■ノードおよびファイル共有マジョリティを使用する
2 台構成でクラスターを構築する場合は [ノードマジョリティ] ではなく、[ノードおよびファイル共有マジョリティ] を使用することで SQL Server が一台故障してもクラスターを起動した状態にすることが可能です。
設定の方法はこちらから
共有フォルダに対してクラスターのコンピューターアカウント (コア クラスターリソースのコンピューター名) とクラスターマネージャーを実行しているユーザーが Administraotrs / Power Users のメンバーであれば設定できると思います。
WSFC 構築手順 [設定編] ファイル共有マジョリティの設定
この構成の場合は、共有フォルダも票 (Vote) を持つことが可能となりますので、
といった障害に耐えることができるようになります。
というような 2 台の障害には耐えられないので注意が必要です。
AlwaysOn Failover Clustering はクラスターなので通常の運用と変わりませんが、AlwaysOn Availability Groups もクラスターの稼働状況を考慮する必要が出てきそうですね。