
Tener 2 sistemas operativos Windows Server 2016 invitados alojados en Hyper-V Server 2016. El clúster del sistema operativo invitado es muy poco confiable y uno de los nodos se pone en cuarentena constantemente (varias veces al día).
También tengo un clúster de Windows Server 2012R2. Están alojados en los mismos hosts Hyper-V y no tienen ningún problema. Eso significa que tengo la misma infraestructura de red e hiper-v entre 2012R2 y 2016.
Configuraciones adicionales para hosts de 2016:
- En Conexiones de red, TCP/IPv6 no está marcado para todos los adaptadores.Soy consciente de que esto en realidad no desactiva IPv6 para el clúster.ya que utiliza un adaptador de red oculto de NetFT y allí encapsula IPv6 en IPv4 para los latidos. Tengo la misma configuración en buenos hosts 2012R2.
- Aunque el clúster 2012R2 funcionó como quería sin Witness, inicialmente configuré 2016 de la misma manera. Al intentar solucionar estos problemas, agregué File Share Witness al clúster de 2016; sin cambios.
- El informe de validación de red se completa con éxito
SéQUÉsucede, pero no lo séPOR QUÉ. ElQUÉ:
- El clúster juega ping-pong con paquetes UDP de latido a través de múltiples interfaces entre ambos nodos en el puerto 3343. Los paquetes se envían aproximadamente. cada segundo.
- De repente, 1 nodo deja de jugar al ping-pong y no responde. Un nodo todavía intenta entregar latidos.
- Bueno, leí el archivo de registro del clúster y descubrí que el nodo eliminó el conocimiento de la información de enrutamiento:
000026d0.000028b0::2019/06/20-10:58:06.832 ERR [CHANNEL fe80::7902:e234:93bd:db76%6:~3343~]/recv: Failed to retrieve the results of overlapped I/O: 10060
000026d0.000028b0::2019/06/20-10:58:06.909 ERR [NODE] Node 1: Connection to Node 2 is broken. Reason (10060)' because of 'channel to remote endpoint fe80::7902:e234:93bd:db76%6:~3343~ has failed with status 10060'
...
000026d0.000028b0::2019/06/20-10:58:06.909 WARN [NODE] Node 1: Initiating reconnect with n2.
000026d0.000028b0::2019/06/20-10:58:06.909 INFO [MQ-...SQL2] Pausing
000026d0.000028b0::2019/06/20-10:58:06.910 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 00.000 so far.
000026d0.00000900::2019/06/20-10:58:08.910 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 02.000 so far.
000026d0.00002210::2019/06/20-10:58:10.910 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 04.000 so far.
000026d0.00002fc0::2019/06/20-10:58:12.910 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 06.000 so far.
...
000026d0.00001c54::2019/06/20-10:59:06.911 INFO [Reconnector-...SQL2] Reconnector from epoch 1 to epoch 2 waited 1:00.000 so far.
000026d0.00001c54::2019/06/20-10:59:06.911 WARN [Reconnector-...SQL2] Timed out, issuing failure report.
...
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO [RouteDb] Cleaning all routes for route (virtual) local fe80::e087:77ce:57b4:e56c:~0~ to remote fe80::7902:e234:93bd:db76:~0~
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO <realLocal>10.250.2.10:~3343~</realLocal>
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO <realRemote>10.250.2.11:~3343~</realRemote>
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO <virtualLocal>fe80::e087:77ce:57b4:e56c:~0~</virtualLocal>
000026d0.00001aa4::2019/06/20-10:59:06.939 INFO <virtualRemote>fe80::7902:e234:93bd:db76:~0~</virtualRemote>
Ahora la parte POR QUÉ... ¿Por qué hace eso? No sé. Tenga en cuenta que un minuto antes se queja: Failed to retrieve the results of overlapped I/O
. Pero todavía puedo ver que se envían/reciben paquetes UDP.
hasta que la ruta se eliminó a las 10:59:06 y solo 1 nodo hace ping, pero no tiene pongs. Como se ve en Wireshark, no hay IP 10.0.0.19 ni 10.250.2.10 en la columna de origen.
La ruta se vuelve a agregar después de unos 35 segundos, pero eso no ayuda: el nodo ya está en cuarentena durante 3 horas.
¿Que me estoy perdiendo aqui?
Respuesta1
Acabo de tener el mismo problema con un clúster de conmutación por error de Windows Server 2019 (para Hyper-V 2019). Normalmente también desactivo IPv6 en mis servidores y eso causó los problemas. El clúster arrojó muchos errores críticos y, en ocasiones, realizó una conmutación por error completa, a pesar de que también había un testigo de recurso compartido de archivos instalado y funcionando (?!).
Los errores y advertencias que observé en el registro de eventos fueron:
ID de eventos de conmutación por error:
- 1135 (El nodo del clúster '....' se eliminó de la membresía activa del clúster de conmutación por error)
- 1146 (El proceso del subsistema de alojamiento de recursos (RHS) del clúster finalizó y se reiniciará)
- 1673 (El nodo del clúster '....' ha entrado en estado aislado).
- 1681 (Las máquinas virtuales en el nodo '....' han entrado en un estado no supervisado).
ID de eventos del Administrador de control de servicios:
- 7024 (No había quórum de nodos del clúster para formar un clúster).
- 7031 (El servicio de Cluster Service finalizó inesperadamente).
Cliente de clustering de conmutación por error
- 81 (información de error de RPC extendida)
Gracias a tu investigación obtuve una pista importante: el adaptador oculto todavía usa IPv6. Dado que el artículo al que usted se vinculó decía que no era recomendado ni convencional deshabilitar IPv6 en el adaptador oculto, pero que se admitía y probaba deshabilitarlo en todos los demás adaptadores, me preguntaba qué le impedía funcionar.
Usando el siguiente comando, extraje los registros del clúster (¡también gracias por la pista! No conocía este útil comando):
# -Destination (Folder) in my case changed to be not on the "C:\" SATADOM (this thing is slow and has few write cycles)
# -TimeSpan (in minutes) limited to one of the Failovers because these logs get HUGE otherwise.
Get-ClusterLog -Destination "E:\" -TimeSpan 5
Desafortunadamente, tuve las mismas entradas de registro que usted ya publicó.
Volví a habilitar IPv6 en todos los adaptadores y revertí mis adaptadores/configuraciones relacionados con el túnel con:
Set-Net6to4Configuration -State Default
Set-NetTeredoConfiguration -Type Default
Set-NetIsatapConfiguration -State Default
Eso no funcionó... Mirando más allá, noté que también siempre desactivo "esas innecesarias" reglas de firewall relacionadas con IPv6... ¡Y ese parecía ser el cambio realmente importante! Esas reglas parecen afectar también al adaptador invisible.
La cuestión parece ser la siguiente: IPv6 no utiliza ARP para encontrar las direcciones MAC de sus socios de comunicación. Utiliza el protocolo de descubrimiento de vecinos. Y este protocolo no funciona si desactiva las reglas de firewall asociadas. Si bien puedes verificar las entradas ARP de IPv4 con:
arp -a
Esto no le mostrará las direcciones MAC para las direcciones IPv6. Para aquellos puedes usar:
netsh interface ipv6 show neighbors level=verbose
Si lo desea, puede filtrar la salida a las direcciones de su adaptador IPv6 de esta manera:
netsh interface ipv6 show neighbors level=verbose | sls ".*fe80::1337:1337:1234:4321.*" -Context 4 |%{$_.Line,$_.Context.PostContext,""}
Al hacerlo, descubrí que esas entradas parecen durar muy poco. El estado de la entrada para la dirección local del enlace "Adaptador virtual de clúster de conmutación por error" de Microsoft del socio del clúster siempre alternaba entre "Alcanzable" y "Sonda". Sin embargo, no entendí el momento en el que era "Inalcanzable", pero después de volver a habilitar las reglas de IPv6, el problema desapareció:
Get-NetFirewallRule -ID "CoreNet-ICMP6-*" | Enable-NetFirewallRule
De alguna manera, esta dirección MAC parece intercambiarse de otra manera entre los socios del clúster (¿probablemente porque es la dirección "remota virtual" y no una real?). Por lo tanto, sigue reapareciendo, lo que lleva a esos estados salvajes de conmutación por error, cuarentena o aislamiento.
Probablemente deshabilitar IPv6 en el adaptador invisible también habría ayudado, pero como esto no es recomendado, he decidido dejar de deshabilitar por completo las cosas relacionadas con IPv6. Es el futuro de todos modos :-)
¡Espero que esto ayude a otro compañero desactivador de IPv6!