Saltar al contenido principal

Réplica

Una réplica es una copia de una partición mantenida en otro nodo para la disponibilidad. El factor de replicación establece cuántas copias existen, y si se pierde un primario, una de sus réplicas es promovida para tomar el relevo.

Qué es una réplica​

Cada partición es propiedad de un nodo a la vez — su primario — que sirve las lecturas y escrituras de la partición. Una réplica es una copia adicional de esa misma partición, mantenida en un nodo distinto como standby en caliente. Las escrituras llegan al primario y se transmiten a las réplicas, de modo que una réplica se mantiene cerca del estado del primario y puede tomar el relevo si el nodo del primario falla.

Las copias de la misma partición siempre se colocan en máquinas distintas, de modo que perder una máquina nunca puede eliminar a la vez un primario y su réplica.

El factor de replicación​

El factor de replicación es el número de copias de cada partición que existen — el primario más sus réplicas. Es el mando principal de la disponibilidad ante la pérdida de un nodo, y lo estableces cuando creas un almacén; New-ZrStore lo requiere explícitamente.

  • Factor de replicación 1 — una copia, sin réplicas. Rápido y compacto, pero la pérdida de un nodo supone pérdida de datos. Úsalo solo para cachés que puedas reconstruir.
  • Factor de replicación 2 — un primario más una réplica. Sobrevive al fallo de una máquina; este es el valor recomendado para producción.
  • Factor de replicación 3 — un primario más dos réplicas. Sobrevive a dos fallos de máquina simultáneos.

Para producción el factor de replicación no debe exceder el número de máquinas, de modo que cada copia pueda caer en una máquina distinta; en una sola máquina esto se relaja con una advertencia, lo cual es aceptable para pruebas pero no proporciona tolerancia a fallos.

nota

En la configuración el valor predeterminado del factor de replicación es 1 — una única copia sin réplicas. New-ZrStore no asume un valor predeterminado: pasas -ReplicationFactor explícitamente cuando creas el almacén.

Primario frente a réplica​

La distinción entre un primario y una réplica es sobre el rol, no sobre ser un tipo de cosa distinto — ambos son copias de la misma partición en nodos distintos.

  • El primario es la copia autoritativa. Las escrituras siempre van a él, y las lecturas van a él de forma predeterminada.
  • Una réplica es una copia de standby. Recibe las escrituras del primario y está lista para ser promovida. Un almacén puede optar por las lecturas de réplica (desactivadas de forma predeterminada) para que las cargas de trabajo con muchas lecturas puedan leer de las réplicas, a costa de datos posiblemente algo más obsoletos.

Cuándo considera el primario que una escritura es durable depende del modo de replicación del almacén. En modo Async (el predeterminado) el primario confirma de inmediato y replica en segundo plano, de modo que una réplica puede quedar rezagada. En modo Sync el primario espera la confirmación de la réplica según la política de quórum de escritura antes de devolver.

Failover: qué hace failover realmente​

Cuando se pierde el nodo de un primario, una de sus réplicas es promovida a primario y los clientes se reenrutan a ella tras una actualización del mapa. El clúster entonces reconstruye una réplica nueva en una máquina sana para restaurar el factor de replicación configurado. Hasta que esa reconstrucción se completa, la partición está subreplicada.

Es el rol de primario de la partición lo que hace failover — pasando del nodo perdido a una réplica superviviente — no la partición en sí ni el nodo. La partición conserva su nombre de código estable durante todo el proceso, de modo que puedes seguirla a través de la promoción.

aviso

Con la replicación Async predeterminada una réplica puede quedar por detrás de su primario. Si el primario falla antes de que las escrituras rezagadas se repliquen, esas escrituras se pierden en la promoción. Usa la replicación Sync cuando un failover no deba perder escrituras recientes.

Próximos pasos​