現象
Linux 上の SQL Server 2017 または 2019 の Pacemaker を使用して AlwaysOn 可用性グループを構成したとします。 SQL Server への接続中に、AG ヘルパー接続がタイムアウトすると、断続的な可用性グループ フェールオーバーが発生することがわかります。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
解決策
この問題は、次の SQL Server の累積的な更新プログラムで修正されています。
SQL Server の累積的な更新プログラムについて:
SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。
追加情報
Linux 上の SQL Server 2017 または 2019 の Pacemaker を使用して可用性グループ (AG) を構成したとします。 ペースメーカー AG ヘルパー リソース エージェントが、 強調表示されているように次のクラスター構成ファイルを使用していることを考慮してください。 AG ヘルパーは、ヘルスチェックのために 10 秒の接続間隔、30 秒の接続タイムアウト、90 秒のモニター タイムアウトを使用しています。
<マスター id="ha_cluster-master">
<プリミティブ class="ocf" id="ha_cluster" provider="mssql" type="ag">
<instance_attributes id="ha_cluster-instance_attributes">
<nvpair id="ha_cluster-instance_attributes-ha_name" name="ha_name" value="TEST_AG"/>
<nvpair id="ha_cluster-instance_attributes-trace_ra" name="trace_ra" value="1"/>
</instance_attributes>
<オペレーション>
<op id="ha_cluster-demote-interval-0s" interval="0s" name="demote" timeout="300"/>
<op id="ha_cluster-monitor-interval-60s" interval="60s" name="monitor" timeout="100"/>
<op id="ha_cluster-monitor-interval-11" interval="10" name="monitor" role="Master" timeout="90"/>
<op id="ha_cluster-monitor-interval-12" interval="12" name="monitor" role="Slave" timeout="60"/>
<op id="ha_cluster-notify-interval-0s" interval="0s" name="notify" timeout="60"/>
<op id="ha_cluster-promote-interval-0s" interval="0s" name="promote" timeout="60"/>
<op id="ha_cluster-start-interval-0s" interval="0s" name="start" timeout="60"/>
<op id="ha_cluster-stop-interval-0s" interval="0s" name="stop" timeout="300"/>
</operations>
<meta_attributes id="ha_cluster-meta_attributes">
<nvpair id="ha_cluster-meta_attributes-timeout" name="timeout" value="30s"/>
<nvpair id="ha_cluster-meta_attributes-failure-timeout" name="failure-timeout" value="60s"/>
</meta_attributes>
</primitive>
<meta_attributes id="ha_cluster-master-meta_attributes">
<nvpair id="ha_cluster-master-meta_attributes-notify" name="notify" value="true"/>
<nvpair id="ha_cluster-master-meta_attributes-trace_ra" name="trace_ra" value="1"/>
</meta_attributes>
</master>
SQL Server 2017 の累積的な更新プログラム 21 (CU21) より前は、SQL Server への接続中に AG 正常性チェック接続がタイムアウトすると、降格アクションが開始され、AG がセカンダリ ノードにフェールオーバーされました。
CU21 以降、接続タイムアウトが発生した場合、AG ヘルパー リソース エージェントは 90 秒のモニター タイムアウトを受け入れ、さらに 2 つの接続を試行します。 3 回の接続試行がすべて失敗した場合、AG ヘルパー リソース エージェントは SQL Server を無応答として宣言し、降格アクションを開始して可用性グループをセカンダリ ノードにフェールオーバーします。
参考資料
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。