開いているトランザクション: フェールオーバー可用性グループ内のデータベースに対して開かれているトランザクションは、閉じられ、ロールバックされるので、手動で再接続する必要があります。 たとえば、SQL Server Management Studio で、クエリ ウィンドウを閉じて、新しいウィンドウを開きます。
注意
同じクラスターに複数の AG または FCI があり、DNN または VNN リスナーを使用する場合、各 AG または FCI には独自の独立したコネクション ポイントが必要です。
従来のオンプレミスの Windows Server フェールオーバー クラスター (WSFC) で可用性グループ リスナーを作成すると、指定した IP アドレスを持つリスナーの DNS レコードが作成され、この IP アドレスは、オンプレミス ネットワーク上のスイッチとルーターの ARP テーブルの現在のプライマリ レプリカの MAC アドレスにマップされます。 クラスターはこれを行うために Gratuitous ARP (GARP) を使い、これによって、フェールオーバー後に新しいプライマリが選ばれるたびに、IP から MAC への最新のマッピングがネットワークにブロードキャストされます。 この場合、IP アドレスはリスナーのもので、MAC は現在のプライマリ レプリカのものです。 GARP は、スイッチとルーターに関する ARP テーブルのエントリを強制的に更新し、リスナー IP アドレスに接続するすべてのユーザーは、現在のプライマリ レプリカにシームレスにルーティングされます。
セキュリティ上の理由から、パブリック クラウド (Azure、Google、AWS) でのブロードキャストは許可されないため、Azure での ARP と GARP の使用はサポートされていません。 ネットワーク環境でのこの違いに対処するため、単一のサブネット可用性グループ内の SQL Server VM は、ロード バランサーを使ってトラフィックを適切な IP アドレスにルーティングします。 ロード バランサーはリスナーに対応するフロントエンド IP アドレスで構成され、Azure Load Balancer が可用性グループ内のレプリカの状態を定期的にポーリングするようにプローブ ポートが割り当てられます。 TCP プローブに応答するのはプライマリ レプリカの SQL Server VM のみであるため、受信トラフィックはプローブに正常に応答する VM にルーティングされます。 さらに、対応するプローブ ポートが WSFC クラスター IP として構成され、プライマリ レプリカは TCP プローブに確実に応答します。
単一のサブネットに構成される可用性グループでは、ロード バランサーまたは分散ネットワーク名 (DNN) を使って、トラフィックを適切なレプリカにルーティングする必要があります。 これらの依存関係を回避するには、複数のサブネットで可用性グループを構成し、可用性グループ リスナーが各サブネット内のレプリカの IP アドレスで構成され、トラフィックを適切にルーティングできるようにします。
SQL Server の場合、AG リソース DLL は、AG リース メカニズムと Always On 正常性検出に基づいて、AG の正常性を判断します。 AG リソース DLL により、IsAlive 操作を介してリソースの正常性が公開されています。 リソース モニターにより、クラスターのハートビート間隔 (クラスター全体の CrossSubnetDelay 値と SameSubnetDelay 値で設定されます) で IsAlive がポーリングされます。 プライマリ ノードでは、リソース DLL に対する IsAlive の呼び出しから AG が正常でないことが返されるたびに、クラスター サービスによってフェールオーバーが開始されます。
AG リソース DLL により、内部の SQL Server コンポーネントの状態が監視されます。 sp_server_diagnostics により、HealthCheckTimeout で制御される間隔で、これらのコンポーネントの正常性が SQL Server に報告されます。
他のフェールオーバーのメカニズムとは異なり、SQL Server インスタンスはリースのメカニズムで積極的な役割を果たします。 リース メカニズムは、クラスター リソースのホストと SQL Server プロセス間の LooksAlive 検証として使用されます。 このメカニズムは、両者 (クラスター サービスと SQL Server サービス) が頻繁に接触していることを確認する目的で使用されます。互いの状態を確認し、最終的にはスプリットブレインを防止します。
Azure VM で AG を構成するときは、多くの場合、これらのしきい値をオンプレミス環境での構成とは異なる構成にする必要があります。 Azure VM のベスト プラクティスに従ってしきい値設定を構成するには、クラスターのベスト プラクティスに関する記事を参照してください。
ネットワークの構成
Azure Load Balancer または分散ネットワーク名 (DNN) に依存しなくても可用性グループ リスナーにトラフィックをルーティングできるよう、可能な限り SQL Server VM を複数のサブネットにデプロイします。
Azure VM フェールオーバー クラスターでは、サーバー (クラスター ノード) ごとに 1 つの NIC を推奨しています。 Azure ネットワークは物理的な冗長性を備えているので、Azure VM フェールオーバー クラスターに NIC を追加する必要はありません。 クラスター検証レポートで、1 つのネットワークでしかノードに到達できないという警告が出ますが、Azure VM フェールオーバー クラスターではこの警告を無視して構いません。
基本的な可用性グループ
基本的な可用性グループでは複数のセカンダリ レプリカを使用できず、セカンダリ レプリカへの読み取りアクセス権がないので、基本的な可用性グループにはデータベース ミラーリング接続文字列を使用できます。 接続文字列を使用すると、リスナーが不要になります。 リスナーへの依存をなくすと、Azure VM 上の可用性グループに役立ちます。これは、ロード バランサーが不要になったり、追加のデータベースのために複数のリスナーを用意するときにロード バランサーに追加の IP を追加する必要がなくなるためです。