Grupo de cerebro dividido
Esto ocurre cuando uno o más nodos de un grupo experimentan una desconexión de los otros nodos, lo que resulta en la formación de subgrupos o un grupo cerebral dividido.
En esencia, Split-Brain es una terminología que se basa en una analogía con el síndrome médico de Split-Brain. Esta condición describe la inconsistencia en los datos o su disponibilidad que puede originarse por el mantenimiento de dos conjuntos de datos separados con un alcance superpuesto. Esto puede deberse a los servidores en un diseño de red o a una condición de falla que puede ser causada por falta de comunicación y desincronización de datos entre los servidores correspondientes en la red. Esto también se denomina comúnmente partición de red.
Como NCache También es un caché distribuido que puede comprender múltiples nodos y clústeres, la aparición de un clúster Split-Brain también es una posibilidad con NCache.
Cuando se produce un cerebro dividido, existe la posibilidad de que se formen subgrupos. Por lo tanto, se debe eliminar uno de los subclústeres para garantizar que todos los clientes sean redirigidos a un clúster en buen estado. Dado que la eliminación del subclúster significa que se perderán datos, el subclúster que se eliminará se selecciona según los siguientes criterios:
- En caso de que los subclústeres sean de diferentes tamaños, se eliminará el subclúster con el menor número de nodos. Esto es para garantizar una pérdida mínima de datos, ya que el clúster más pequeño contendrá menos datos.
- Si el tamaño de los clústeres es el mismo, se eliminará el subclúster cuyo nodo coordinador tenga la dirección IP más alta. Por ejemplo, las IP de los nodos coordinadores del subclúster A y B son 20.200.20.38 y 20.200.20.40 respectivamente. En este caso, se eliminará el subclúster con el nodo coordinador IP 20.200.20.40.
Un cerebro dividido puede representar inconsistencia de datos o problemas de disponibilidad derivados del mantenimiento de dos conjuntos de datos separados con un alcance superpuesto. Además, esto puede provocar problemas importantes y plantear una situación grave para el administrador. Por esta razón, es muy importante asegurarse de que no haya riesgo de división de cerebro ni corrupción de datos.
Existen algunos enfoques comunes para tratar el problema de la partición de la red después de que se incurre en un Split-Brain.
- Enfoque optimista
- Enfoque pesimista
En el enfoque optimista, el canal de comunicación entre los nodos simplemente se restaura mientras se deja que los nodos particionados funcionen como de costumbre temporalmente. Esto se hace asumiendo que los nodos se sincronizarán automáticamente en poco tiempo. Este enfoque puede ser simplemente una salida fácil, ya que siempre existe la amenaza de corrupción de datos en el caso de Split-Brain.
Por otro lado, el enfoque pesimista requiere dejar de lado o simplemente sacrificar la disponibilidad de los sistemas para mantener la coherencia de los datos. Al detectar una partición de red, el acceso a las subparticiones es limitado. Esto se hace para garantizar la coherencia de los datos. En este caso, para evitar la divergencia del historial, solo un componente puede continuar realizando solicitudes de lectura/escritura en el almacenamiento.
Manejo del clúster de cerebro dividido a través de NCache
Cuando se produce un cerebro dividido, los nodos del clúster en la red se someten a una serie de comprobaciones antes de tomar decisiones importantes, como qué nodos deben apagarse, reiniciarse, reconectarse o eliminarse de la red. NCache proporciona una función llamada recuperación automática de cerebro dividido, que está deshabilitada de forma predeterminada. Sin embargo, se puede habilitar según la sensibilidad de los datos y los requisitos del usuario en caso de que se produzca un cerebro dividido en la red.
NCache ofrece esta característica solo para la topología de partición de réplica. Para comprender esto en profundidad, echemos un vistazo a la conectividad del clúster, la topología de partición-réplica y los escenarios detrás de la desconexión del nodo.
Conectividad de clúster
Dos o más nodos pueden conectarse y trabajar juntos para formar un clúster. Cada nodo del clúster se denomina miembro. Un grupo en NCache Puede considerarse un canal grupal en el que los miembros pueden hablar entre sí enviando o recibiendo mensajes. Un clúster siempre se forma en una topología de malla, lo que significa que todos los nodos están interconectados.
Cada grupo se compone de un nodo coordinador y los nodos no coordinadores o participantes restantes. El nodo coordinador es el nodo de mayor rango, es decir, el nodo que comenzó primero y es responsable de la mayoría de las tareas, como agregar o eliminar nodos. Cada vez que se agrega o elimina un nodo del clúster, informa al nodo coordinador, que gestiona el resto de las operaciones para mantener un entorno conectable en el clúster. Otras tareas que lleva a cabo el nodo coordinador incluyen la distribución de depósitos, la activación del cargador de caché y el mantenimiento de conexiones.
Un clúster se puede clasificar de la siguiente manera:
- Clúster completamente conectado
- Clúster parcialmente conectado
- Clúster detenido
Clúster totalmente conectado
Se dice que un clúster está en un estado completamente conectado si el clúster tiene n nodos y cada nodo del clúster tiene n-1 conexiones saludables con todos los demás nodos. En este estado, todos los nodos pueden comunicarse entre sí, por lo que se encuentra en un estado estable.
La siguiente figura muestra un clúster completamente conectado en un estado ideal.
Si un clúster está en un estado completamente conectado y un nodo se une al clúster, se convierte en parte/miembro del clúster correspondiente. Si un nodo abandona el clúster o se desconecta parcialmente, con uno o más nodos miembros, forma un clúster separado. Todos los nodos existentes son informados de este cambio en la red por el nodo coordinador. Esto activa la transferencia de estado, cuyo objetivo es equilibrar los datos en el nuevo clúster. Según la topología, las conexiones de los clientes se distribuyen entre los nuevos nodos.
Conectividad del cliente
Si un clúster está en buen estado, en la topología PoR, todos los clientes están conectados con todos los nodos del clúster. En el caso de Split-Brain, que es relevante para Partition-Replica (PoR), los clientes están conectados a todos los nodos del clúster. Si un nodo se une, los clientes también se conectan al nuevo nodo. Si un nodo se va, el cliente puede continuar realizando las operaciones.
Detenido
Si un nodo abandona el clúster correctamente, es decir, se ha cerrado y no hay ningún proceso de host para el nodo correspondiente, entonces el nodo se considera detenido (con respecto al resto del clúster). Detener un nodo da como resultado una transferencia de estado, lo que conduce al equilibrio de los datos. Esto, a su vez, equilibra el número de clientes entre el resto de nodos. Sin embargo, esta característica es específica de la topología REP.
Conectividad del cliente
Los clientes que estaban conectados anteriormente al nodo detenido ahora se conectarán a otros nodos conectados.
Clúster parcialmente conectado
Puede haber situaciones en las que uno o más nodos de un clúster no puedan conectarse a otros nodos, por ejemplo, debido a un problema de red.
Supongamos que hay un clúster de 3 nodos completamente conectado. Si se produce un problema técnico que impide que dos de los tres nodos aún puedan comunicarse entre sí; sin embargo, el tercer nodo no puede llegar a la red, entonces los dos nodos conectados formarán un único subclúster, digamos el subclúster 1. El tercer nodo desconectado formará un subclúster independiente, digamos el subclúster 2. Cada subclúster -cluster ahora tendrá sus nodos coordinadores. En esta situación, el clúster pierde su estado de conexión ideal. Ahora existen dos grupos que no pueden comunicarse entre sí, pero que están completamente conectados dentro de sus subgrupos. Este estado se denomina conectividad parcial de un clúster, como se puede ver en la siguiente figura.
En el escenario mencionado anteriormente, los nodos en el subgrupo 1 y el subgrupo 2 son tales que el subgrupo 1 está completamente conectado consigo mismo y completamente desconectado del subgrupo 2, y viceversa.
En un caso más complejo, supongamos un clúster de 5 nodos donde un problema de red hace que el nodo 5 interrumpa su conexión con todos los nodos excepto el nodo 3. En este caso, el nodo 3 todavía está conectado al nodo 5, y el nodo 3 todavía está conectado. conectado al nodo 1, al nodo 2 y al nodo 4 también. Ahora, el nodo 3 es un miembro común para el subclúster 1 (nodo 1, nodo 4 y nodo 2) y el subclúster 2 (nodo 5).
La siguiente figura ilustra la conectividad parcial en curso.
Cada clúster notificará al nodo 3 pidiéndole que mantenga su conexión con un solo clúster. Al recibir notificaciones, el nodo 3 evaluará de dónde se reciben las notificaciones y se conectará al subclúster que contiene el nodo de mayor rango, antes de que se produjera la desconexión del clúster principal, que en este escenario es el subclúster 2.
La siguiente figura muestra la conectividad parcial de un cluster en su estado final.
Reintentos de conexión
Cada operación de clúster tiene un valor de tiempo de espera, que es de 60 segundos de forma predeterminada y se puede configurar en el NCache Centro de Gestión. Cada clúster tiene reintentos de conexión (valor predeterminado 2) e intervalo de reintento (valor predeterminado 2). Ambos valores también son configurables en el NCache Centro de Gestión.
Siempre que se interrumpe la conexión de un nodo desde un clúster, el nodo coordinador predominante intenta restablecer la conexión primero. Si el reintento da como resultado una conexión exitosa y no se agota el tiempo de espera, el clúster pasa a un estado normal y completamente conectado. Sin embargo, si la conexión no se puede restablecer por algún motivo, todos los nodos del clúster forman múltiples subclústeres, lo que da como resultado una conectividad parcial.
Unirse a un nuevo nodo
Si un clúster está parcialmente conectado, cualquier adición de un nuevo nodo se realizará en la parte del subclúster que tenga la conectividad adecuada en la red. En caso de que esté conectado con ambos subclústeres, se unirá al subclúster de mayor tamaño, es decir, al subclúster que tenga mayor número de nodos. Si un número de nodos es igual, comparará las IP con el nodo Coordinador y se unirá al Coordinador con una IP mayor.
Conectividad del cliente
En caso de conectividad parcial, como el clúster se encuentra en un entorno inestable, las aplicaciones cliente pueden incurrir en comportamientos abruptos e inciertos. Si una máquina cliente está conectada a ambos subclústeres, entonces algunos de los clientes pueden conectarse al subclúster 1 y otros al subclúster 2. Puede existir la posibilidad de que la conectividad de red sea tal que todos los clientes se conecten a un subclúster. grupo solamente. Tampoco habrá coherencia en los datos del clúster.
Solución para el problema de conectividad parcial
Para resolver el problema de Split-Brain, NCache ofrece opciones de recuperación manual y automática como se explica a continuación.
Resolución Manual
Cuando un clúster entra en un estado parcialmente conectado, es necesario reiniciarlo. La primera recomendación es intentar identificar y resolver el problema que provocó que se encuentre en este estado. Si se debe a problemas de red, intente estabilizar la red. Después de solucionar los problemas, cierre los nodos creando un único clúster e inícielos uno por uno.
Por ejemplo, considere el clúster en la Figura 3. Se puede ver que el nodo 1, el nodo 2 y el nodo 4 están completamente conectados en el subclúster1, mientras que el nodo 3 y el nodo 5 están completamente conectados en el subclúster 2. Dado que una red La falla resultó en la creación del subclúster 2, debe cerrar el nodo 3 y el nodo 5. Intente solucionar el problema que causa la falla de la red. Una vez hecho esto, inicie cada nodo uno por uno. Los nodos iniciados pasarán a formar parte del subclúster1, que luego se convertirá en un clúster completamente conectado.
Recuperación automática de cerebro dividido
Para atender a Split-Brain, NCache también proporciona un método automático, que es la opción de recuperación automática de cerebro dividido a través del NCache Centro de Gestión. Dado que los datos pueden ser de varios tipos y tener diferentes niveles de sensibilidad, esta opción está deshabilitada de forma predeterminada. Depende enteramente del administrador de la NCache Centro de Gestión si lo habilitan o no según lo que estimen necesario según la situación. Para habilitar la recuperación automática de cerebro dividido para clústeres, consulte Habilitación de la recuperación automática de Split-Brain usando NCache Centro de gestion.
Vea también
Habilite la recuperación automática de Split-Brain usando NCache Centro de gestion
Configuración de ajustes de clúster de caché