IaaS avec SQL Server : paramétrage des seuils réseau du cluster de basculement

Cet article présente des solutions pour ajuster le seuil des réseaux de cluster de basculement.

Symptôme

Lorsque vous exécutez des nœuds de cluster de basculement Windows dans IaaS avec un groupe de disponibilité SQL Server Always On, il est recommandé de modifier le paramètre de cluster pour un état de surveillance plus souple. Les paramètres de cluster prêtes à l’emploi sont restrictifs et peuvent entraîner des pannes inutiles. Les paramètres par défaut sont conçus pour des réseaux locaux hautement optimisés et ne prennent pas en compte la possibilité d’une latence induite causée par un environnement multilocataire tel que Microsoft Azure (IaaS).

Le clustering de basculement Windows Server surveille en permanence les connexions réseau et l’intégrité des nœuds d’un cluster Windows. Si un nœud n’est pas accessible sur le réseau, une action de récupération est effectuée pour récupérer et mettre des applications et des services en ligne sur un autre nœud du cluster. La latence de la communication entre les nœuds de cluster peut entraîner l’erreur suivante :

Erreur 1135 (journal des événements système)

Le nœud de cluster Node 1 a été supprimé de l’appartenance active au cluster de basculement. Le service de cluster sur ce nœud s’est peut-être arrêté. Cela peut également être dû au fait que le nœud a perdu la communication avec d’autres nœuds actifs dans le cluster de basculement. Exécutez l’Assistant Valider une configuration pour case activée votre configuration réseau. Si la condition persiste, case activée pour les erreurs matérielles ou logicielles liées aux cartes réseau sur ce nœud. En outre, case activée pour les défaillances de tous les autres composants réseau auxquels le nœud est connecté, tels que des hubs, des commutateurs ou des ponts.

Cluster.log exemple :

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)

Cause

Deux paramètres sont utilisés pour configurer l’intégrité de la connectivité du cluster.

Délai : définit la fréquence à laquelle les pulsations de cluster sont envoyées entre les nœuds. Le délai est le nombre de secondes avant l’envoi de la pulsation suivante. Au sein du même cluster, il peut y avoir des délais différents entre les nœuds du même sous-réseau et entre les nœuds, qui se trouvent sur des sous-réseaux différents.

Seuil : définit le nombre de pulsations qui sont manquées avant que le cluster n’effectue une action de récupération. Le seuil est un nombre de pulsations. Dans le même cluster, il peut y avoir des seuils différents entre les nœuds du même sous-réseau et entre les nœuds qui se trouvent sur des sous-réseaux différents.

Par défaut, Windows Server 2016 définit SameSubnetThreshold sur 10 et SameSubnetDelay sur 1 000 ms. Par exemple, si la surveillance de la connectivité échoue pendant 10 secondes, le seuil de basculement est atteint, ce qui entraîne la suppression du nœud inaccessible de l’appartenance au cluster. Cela entraîne le déplacement des ressources vers un autre nœud disponible sur le cluster. Les erreurs de cluster sont signalées, y compris l’erreur de cluster 1135 (ci-dessus) est signalée.

Résolution

Pour résoudre ce problème, assouplissez les paramètres de configuration réseau du cluster. Consultez Pulsation et seuil.

References

Pour plus d’informations sur le paramétrage des paramètres de configuration réseau du cluster Windows, consultez Paramétrage des seuils réseau du cluster de basculement.

Pour plus d’informations sur l’utilisation decluster.exe pour régler les paramètres de configuration réseau du cluster Windows, consultez Configuration de réseaux de cluster pour un cluster de basculement.