web-dev-qa-db-ja.com

SQL Server Always-On可用性グループLeaseTimeout

AG環境の1つでエラーが発生しました

可用性グループXXXXXXXとWindows Serverフェールオーバークラスター間のリースの有効期限が切れています。 SQL ServerのインスタンスとWindows Serverフェールオーバークラスターの間で接続の問題が発生しました。可用性グループが正しくフェールオーバーしているかどうかを判断するには、Windows Serverフェールオーバークラスターの対応する可用性グループリソースを確認します。

これでこの問題が発生した理由がわかりましたが、可用性グループが別のノードにフェールオーバーする代わりにクラッシュした理由を理解したいと思います。つまり、プライマリロールが解決に変更されたことが次のエラーでした。同じノードで可用性グループが自動的にオンラインに戻るまでに約1分かかりました。確かに、次に利用可能なノードにフェイルオーバーする必要がありますか?これは、すべてクォーラム内で投票を持つ5ノードのクラスターです。

これはSQL可用性グループが機能する方法ですか?つまり、AGがWindowsフェールオーバークラスターdllへの接続を失った場合、スプリットブレインシナリオを回避するためにフェールオーバーおよびクラッシュできませんか?

別のノードにフェイルオーバーする前に、最初に再接続しようとするこのデフォルトの動作をどこで構成しますか?

1
Daniel Nash

Sean Gallardyの回答 へのアドオンとして、自動フェイルオーバーは基本的に次の領域に依存します。

  1. FAILURE_CONDITION_LEVEL :(デフォルトでは3)、あなたの場合、インシデントはFAILURE_CONDITION_LEVEL = 21に設定した場合、偶然にも、より高いレベルの条件、つまり2は考慮されません、3、4、5で、自動フェイルオーバーは発生しません。
  2. フェイルオーバーモード:セカンダリレプリカの場合failover_modeautomatic(特にAGプロパティ)に設定されていない場合、AGはどのFAILURE_CONDITION_LEVELでも自動的にフェイルオーバーしません
  3. WSFCでの可能性のある所有者 :AGリソースのリストでのみ1つのノードを選択し、このリソースを含むクラスター化された役割がフェイルオーバーできない場合。

ポイント#1および2を参照すると、次のクエリで現在の構成を確認できます。

select name, failure_condition_level 
from sys.availability_groups_cluster
go

select  replica_server_name, 
        endpoint_url, 
        availability_mode_desc,
        failover_mode_desc
from sys.availability_replicas
go
1
Shekar Kola