Conmutación por error automática de MongoDB entre 2 centros de datos

Conmutación por error automática de MongoDB entre 2 centros de datos

Si implemento un conjunto de réplicas de MongoDb en solo 2 centros de datos, si falla un centro de datos completo, ¿puede haber una conmutación por error automática al otro centro de datos?

Considere la situación en la que un centro de datos tiene un miembro primario, un secundario y un árbitro, y el segundo centro de datos tiene dos miembros secundarios. Básicamente, un conjunto de réplicas de 5 miembros.

Si el centro de datos 2 deja de funcionar, todavía habrá 3 miembros en la réplica establecida en el centro de datos 1. Eso es genial.

A la inversa, si el centro de datos 2 permanece activo y el centro de datos 1 deja de funcionar, solo quedarán 2 miembros fuera del conjunto de réplicas de 5 miembros. Eso no es suficiente con que cualquiera de los dos partidos secundarios vote para convertirse en primario.

¿Es eso correcto? Si no, ¿qué estoy haciendo mal?

Si esto no es posible, hágamelo saber para que pueda explorar otras opciones.

Agregar un tercer centro de datos para albergar al árbitro no es una opción.

Respuesta1

La respuesta a tu pregunta es que no es posible hacerlo con sólo dos ubicaciones.

La razón por la que esto no es posible se puede explicar así: si ambas ubicaciones son completamente funcionales, pero la conexión de red entre las dos es defectuosa, solo una de ellas puede permanecer funcional. En este caso, no es aceptable que ambos lugares elijan simultáneamente una primaria.

No hay forma de que una ubicación pueda distinguir entre la otra ubicación completamente inactiva y la otra ubicación activa, pero la conexión de red entre las dos está inactiva.

Entonces, si cada ubicación pudiera elegir independientemente una ubicación primaria cuando la otra ubicación no funciona, la consecuencia sería que, en caso de una interrupción de la red, es posible que existan dos primarias simultáneamente. Tener dos primarias es un escenario inaceptable, y es por eso que sólo una de las dos localidades podría elegir una primaria.

Con tres ubicaciones será suficientesi hace suposiciones sobre el comportamiento de las fallas.Cualquier solución que funcione sin hacer suposiciones sobre fallas requerirá al menos cuatro ubicaciones para tolerar la interrupción de una sola ubicación. Este requisito se deriva de uno de los teoremas clave en el ámbito de los acuerdos bizantinos.

Respuesta2

Una opción posible es tener un primario y un secundario en el primer centro de datos, 2 secundarios en el segundo centro de datos y puede tener el árbitro en un tercer centro de datos.

información relacionada