SQL Server を使用した IaaS - フェールオーバー クラスターのネットワークしきい値のチューニング

この記事では、フェールオーバー クラスター ネットワークのしきい値を調整するためのソリューションについて説明します。

症状

SQL Server Always On 可用性グループを使用して IaaS で Windows フェールオーバー クラスター ノードを実行する場合は、クラスター設定をより緩やかな監視状態に変更することをお勧めします。 標準のクラスター設定には制限があり、不要な障害が発生する可能性があります。 既定の設定は、高度に調整されたオンプレミス ネットワーク用に設計されており、Microsoft Azure (IaaS) などのマルチテナント環境によって引き起こされる遅延が発生する可能性を考慮に入れていません。

Windows Server フェールオーバー クラスタリングでは、Windows クラスター内のノードのネットワーク接続と正常性が絶えず監視されます。 ネットワーク経由でノードに到着できない場合、クラスターの別のノードで、アプリケーションやサービスを復元し、オンラインに戻す回復措置が取られます。 クラスター ノード間の通信で待機時間が発生すると、次のエラーが発生する可能性があります。

エラー 1135 (システム イベント ログ)

クラスター ノード ノード 1 が、アクティブなフェールオーバー クラスター メンバーシップから削除されました。 このノードのクラスター サービスが停止している可能性があります。 この場合、ノードがフェールオーバー クラスター内の他のアクティブなノードと通信できなくなったことが原因である可能性もあります。 [構成の検証] ウィザードを実行して、ネットワークの構成を確認します。 この状況が引き続き発生する場合は、このノードのネットワーク アダプターに関連するハードウェアまたはソフトウェアのエラーを確認します。 また、ノードが接続されている他のネットワーク コンポーネント (ハブ、スイッチ、ブリッジなど) のエラーを確認します。

Cluster.log 例:

0000ab34.00004e64::2014/06/10-07:54:34.099 DBG   [NETFTAPI] Signaled NetftRemoteUnreachable event, local address 10.xx.x.xxx:3343 remote address 10.x.xx.xx:3343
0000ab34.00004b38::2014/06/10-07:54:34.099 INFO  [IM] got event: Remote endpoint 10.xx.xx.xxx:~3343~ unreachable from 10.xx.x.xx:~3343~
0000ab34.00004b38::2014/06/10-07:54:34.099 INFO  [IM] Marking Route from 10.xxx.xxx.xxxx:~3343~ to 10.xxx.xx.xxxx:~3343~ as down
0000ab34.00004b38::2014/06/10-07:54:34.099 INFO  [NDP] Checking to see if all routes for route (virtual) local fexx::xxx:5dxx:xxxx:3xxx:~0~ to remote xxx::cxxx:xxxd:xxx:dxxx:~0~ are down
0000ab34.00004b38::2014/06/10-07:54:34.099 INFO  [NDP] All routes for route (virtual) local fxxx::xxxx:5xxx:xxxx:3xxx:~0~ to remote fexx::xxxx:xxxx:xxxx:xxxx:~0~ are down
0000ab34.00007328::2014/06/10-07:54:34.099 INFO  [CORE] Node 8: executing node 12 failed handlers on a dedicated thread
0000ab34.00007328::2014/06/10-07:54:34.099 INFO  [NODE] Node 8: Cleaning up connections for n12.
0000ab34.00007328::2014/06/10-07:54:34.099 INFO  [Nodename] Clearing 0 unsent and 15 unacknowledged messages.
0000ab34.00007328::2014/06/10-07:54:34.099 INFO  [NODE] Node 8: n12 node object is closing its connections
0000ab34.00008b68::2014/06/10-07:54:34.099 INFO  [DCM] HandleNetftRemoteRouteChange
0000ab34.00004b38::2014/06/10-07:54:34.099 INFO  [IM] Route history 1: Old: 05.936, Message: Response, Route sequence: 150415, Received sequence: 150415, Heartbeats counter/threshold: 5/5, Error: Success, NtStatus: 0 Timestamp: 2014/06/10-07:54:28.000, Ticks since last sending: 4
0000ab34.00007328::2014/06/10-07:54:34.099 INFO  [NODE] Node 8: closing n12 node object channels
0000ab34.00004b38::2014/06/10-07:54:34.099 INFO  [IM] Route history 2: Old: 06.434, Message: Request, Route sequence: 150414, Received sequence: 150402, Heartbeats counter/threshold: 5/5, Error: Success, NtStatus: 0 Timestamp: 2014/06/10-07:54:27.665, Ticks since last sending: 36
0000ab34.0000a8ac::2014/06/10-07:54:34.099 INFO  [DCM] HandleRequest: dcm/netftRouteChange
0000ab34.00004b38::2014/06/10-07:54:34.099 INFO  [IM] Route history 3: Old: 06.934, Message: Response, Route sequence: 150414, Received sequence: 150414, Heartbeats counter/threshold: 5/5, Error: Success, NtStatus: 0 Timestamp: 2014/06/10-07:54:27.165, Ticks since last sending: 4
0000ab34.00004b38::2014/06/10-07:54:34.099 INFO  [IM] Route history 4: Old: 07.434, Message: Request, Route sequence: 150413, Received sequence: 150401, Heartbeats counter/threshold: 5/5, Error: Success, NtStatus: 0 Timestamp: 2014/06/10-07:54:26.664, Ticks since last sending: 36
0000ab34.00007328::2014/06/10-07:54:34.100 INFO    <realLocal>10.xxx.xx.xxx:~3343~</realLocal>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO    <realRemote>10.xxx.xx.xxx:~3343~</realRemote>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO    <virtualLocal>fexx::xxxx:xxxx:xxxx:xxxx:~0~</virtualLocal>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO    <virtualRemote>fexx::xxxx:xxxx:xxxx:xxxx:~0~</virtualRemote>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO    <Delay>1000</Delay>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO    <Threshold>5</Threshold>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO    <Priority>140481</Priority>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO    <Attributes>2147483649</Attributes>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO  </struct mscs::FaultTolerantRoute>
0000ab34.00007328::2014/06/10-07:54:34.100 INFO   removed
0000ab34.0000a7c0::2014/06/10-07:54:38.433 ERR   [QUORUM] Node 8: Lost quorum (3 4 5 6 7 8)
0000ab34.0000a7c0::2014/06/10-07:54:38.433 ERR   [QUORUM] Node 8: goingAway: 0, core.IsServiceShutdown: 0
0000ab34.0000a7c0::2014/06/10-07:54:38.433 ERR   lost quorum (status = 5925)

原因

クラスターの接続の正常性を構成するために使用される設定は 2 つあります。

遅延 - クラスターハートビートがノード間で送信される頻度を定義します。 延期期間は、次のハートビートが送信されるまでの秒数です。 同じクラスター内でも、同じサブネット上のノード間の遅延と、異なるサブネット上のノード間の遅延が異なる場合があります。

しきい値 - クラスターが復旧アクションを実行する前に実行されなかったハートビートの数を定義します。 しきい値はハートビートの数です。 同じクラスター内でも、同じサブネット上のノード間の遅延と、異なるサブネット上のノード間の遅延が異なる場合があります。

既定では、Windows Server は SameSubnetThreshold を 10 に、 SameSubnetDelay を 1000 ミリ秒に設定します。 たとえば、接続の監視が 10 秒間失敗した場合、フェールオーバーのしきい値に達し、接続できなくなるため、そのノードがクラスター メンバーシップから削除されます。 その結果、リソースがクラスター上の使用可能な別のノードに移動されます。 クラスター エラー (上記のクラスター エラー 1135 を含む) が報告されます。

解像度

この問題を解決するには、クラスター ネットワークの構成の設定を緩和します。 「ハートビートとしきい値」を参照してください。

リファレンス

Windows のクラスター ネットワークの構成の設定を調整する方法については、「フェールオーバー クラスター ネットワークのしきい値の調整」を参照してください。

cluster.exeを使用して Windows クラスター ネットワーク構成設定を調整する方法については、「フェールオーバー クラスターのクラスター ネットワークを構成する方法を参照してください。