Recuperación de cerebro dividido en NCache para un tiempo de actividad del 100 %

NCache es un caché distribuido en memoria extremadamente rápido y escalable para .NET / .NET Core. La mayoría del tiempo, NCache se ejecuta en entornos de producción para aplicaciones de misión crítica. Como resultado, alta disponibilidad y el 100% de tiempo de actividad es un requisito muy importante para NCache. Y, NCache sobresale muy bien en esta área a través de una variedad de características.

Una de esas características de alta disponibilidad es la detección y recuperación de cerebro dividido para evitar cualquier tiempo de inactividad.

¿Qué es un cerebro dividido en clúster de caché?

NCache crea un Clúster de caché dinámico de autorrecuperación que consta de varios servidores que se comunican entre sí a través de TCP. Todos los servidores de caché están interconectados en un clúster y la membresía del clúster se mantiene en tiempo de ejecución y se propaga no solo a todos los servidores de caché sino también a todos los clientes de caché.

Sin embargo, como cualquier sistema distribuido, NCache El clúster puede enfrentarse a una situación en la que uno o más servidores de caché se desconectan del resto de los servidores del clúster, pero ambos conjuntos de servidores continúan ejecutándose. Esto generalmente ocurre debido a fallas o problemas en la red.

Cuando esto sucede, cada conjunto de servidores de caché se considera a sí mismo como los servidores sobrevivientes del clúster de caché original y asume que el otro conjunto de servidores de caché se ha caído (de ahí el término cerebro dividido, que en términos médicos significa que el lado izquierdo del cerebro no funciona). No sé sobre el lado derecho del cerebro). Los clientes de caché también pueden dividirse de manera similar o pueden continuar comunicándose con todos los servidores de caché en función de la membresía del clúster original.

Esto obviamente no es una condición sana y normal y conduce a errores en operaciones de caché y lo más importante a los problemas de integridad de datos. Cada "clúster dividido" ahora tiene su propia copia de datos que los clientes actualizan de forma independiente. Y termina con dos o más copias de los mismos datos que se actualizan sin ninguna sincronización.

¿Cómo se detecta el cerebro dividido?

NCache tiene la capacidad de detectar automáticamente cuando se produce un cerebro dividido. La pertenencia al clúster se mantiene en todos los servidores de caché del clúster. Por lo tanto, cada vez que un grupo se divide en dos o más subgrupos debido a la situación del cerebro dividido, cada subgrupo cree que es el grupo sobreviviente y continúa trabajando con sus datos.

Pero, al mismo tiempo, sabe que hay otros servidores de caché que han abandonado el clúster de forma anormal. Una forma normal es cuando el administrador de caché utiliza un NCache del IRS para eliminar un servidor de caché del clúster. Entonces, cada subclúster sigue intentando volver a conectarse con los "servidores perdidos". Al mismo tiempo, cada subclúster registra eventos al registro de eventos de Windows que indica que algunos de sus miembros originales se han ido. Entonces, en caso de un cerebro dividido, el NCache el administrador ve eventos de "nodo restante" para casi todos los servidores de caché.

Solo cuando se restablece la conexión de red entre los subgrupos divididos, se enteran del hecho de que realmente ocurrió un cerebro dividido. Hasta este momento, siguen creyendo que algunos de sus miembros se habían ido del grupo.

Al darse cuenta de que se ha producido un cerebro dividido, cada subclúster registra eventos en el registro de eventos de Windows y también puede notificar al administrador del caché a través de Notificación por Correo Electrónico: que se ha producido un Split Brain.

¿Cómo funciona la recuperación automática del cerebro dividido?

NCache le permite configurar la recuperación automática desde el cerebro dividido. Si lo haces cuando quieras NCache detecta un cerebro dividido, automáticamente se recupera de él. Habilite la recuperación del cerebro dividido a través de config.ncconf agregando el etiqueta debajo de la etiqueta. Luego puede cambiar el indicador de habilitación a verdadero y establecer el intervalo de detección para el cerebro dividido en segundos.

<cache-settings...>
  <split-brain-recovery enable="True" detection-interval="60"/>
</cache-settings>

Cuando un grupo se divide en dos o más subgrupos y luego se restaura su conexión de red, finalmente se dan cuenta de que se ha producido un cerebro dividido. En este punto, si el usuario configuró la recuperación automática, entonces todos los subclústeres negocian entre sí para determinar qué subclúster debe convertirse en el "clúster maestro" y el resto de los subclústeres luego se unen a este "clúster maestro". clúster” desechando sus datos y actuando como si fueran nuevos nodos que se unen a un clúster existente.

Las reglas utilizadas para determinar qué subclúster debe convertirse en "maestro" son simples. Es el subclúster con el mayor número de nodos miembros. Y, si varios subclústeres tienen el mismo número de nodos miembros, aquel cuya dirección IP del coordinador sea la más pequeña gana y se convierte en el "clúster maestro". Y el resto del subclúster se une y el resultado final es un gran clúster equivalente al tamaño del clúster original.

¿Qué hacer a continuación?

© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.