Conexiones duplicadas en un cluster. Stale information
Por: Yabin Escarpulli
En un ambiente de cluster con Windows 2008 R2 recibimos un reporte de un cluster que parecía un problema de redes.
El cluster mostraba que uno de los nodos no tenía comunicación de red pero no hay failovers, y si realizamos pruebas de conectividad como un ping, este nos responde.
El cluster envía un error de que las redes de ese nodo no están disponibles. Al parecer la falla en la red no existe, puesto que no hay pérdida de paquetes.
Si ejecutamos un ping entre las redes del cluster estas responden.
Un comando tracert hacia las direcciones del otro nodo igual, no hay perdida de paquetes, sin embargo, el cluster muestra que las redes no están disponibles.
Si intentamos hacer un failover, los recursos regresan al nodo original porque la red en el nodo no está disponible.
Otro síntoma de este problema es que el nodo no pude unirse como miembro del cluster
No existe razón por la cual las redes estén fallando. Todo parece estar normal.
En este punto pensamos que la falla seria a nivel físico de la red, un cable dañado o mal conectado. Se revisaron estos componentes así como los switches que conectaban a ambos servidores, sin encontrar ningún problema físico en los dispositivos.
Generamos el cluster log en el momento de la falla e intentamos verificar que errores pudiese estar generando el servicio
Al hacer la revisión del log, esto fue lo que se encontró:
00001e2c.00002284::2015/01/06-18:08:23.387 DBG [NETFTAPI] Signaled NetftRemoteReachable event, local address 10.5.10.120:003853 remote address 10.5.10.119:003853-- à El driver de red no puede generar la ruta de comunicación hacia el otro nodo
00001e2c.00001a0c::2015/01/06-18:08:23.387 INFO [FTI][Follower] Got remote route reachable from netft evm. Setting state to Up for route from 10.5.10.120:~3343~ to 10.5.10.119:~3343~.
00001e2c.000023b0::2015/01/06-18:08:23.387 INFO [NODE] Node 2: New join with n1: stage: 'Wait for Heartbeats on Initial NetFT Route'
00001e2c.000018a0::2015/01/06-18:08:23.387 INFO [TM] got event: Remote endpoint 10.5.10.119:~3343~ reachable from 10.5.10.120:~3343~
00001e2c.00000938::2015/01/06-18:08:23.387 INFO [IM] got event: Remote endpoint 10.5.10.119:~3343~ reachable from 10.5.10.120:~3343~
00001e2c.00000938::2015/01/06-18:08:23.387 INFO [IM] Marking Route from 10.5.10.120:~3343~ to 10.5.10.119:~3343~ as up
00001e2c.00000938::2015/01/06-18:08:23.387 INFO [IM] Adding information for route Route from local 10.5.10.120:~0~ to remote 10.5.10.119:~0~, status: true, attributes: 0
00001e2c.00000938::2015/01/06-18:08:23.387 ERR [IM] Unable to find adapter
00001e2c.00000938::2015/01/06-18:08:23.387 INFO [IM] Adding information for route Route from local 10.5.10.120:~0~ to remote 10.5.10.119:~0~, status: true, attributes: 0
00001e2c.00000938::2015/01/06-18:08:23.387 ERR [IM] Unable to find adapter
00001e2c.000023b0::2015/01/06-18:08:23.387 INFO [NODE] Node 2: New join with n1: stage: 'Wait for NetFT Duplicate Address Detection'------> Esta es la causa raiz del problema.
A esta información se le denomina “stale information”.
Esto se genera porque el nodo tiene la información corrupta en su memoria.
Al tener el cluster una dirección duplicada, el otro nodo asume que no pueden estar dos conexiones iguales y rechaza la segunda, quedando “cíclica” la conexión y esto no permite que el cluster funcione de manera normal.
Esta es la razón por la cual la red aparece como no disponible y sin embargo, a nivel de red hay conectividad.
Para resolver este problema en particular, mover todos los recursos fuera del nodo que está generando el rechazo de la conexión y reiniciar el nodo.
Esto permite que la memoria del nodo sea borrada y la conexión duplicada no se presente.