En esta página, se explica cómo la arquitectura de Memorystore para Redis Cluster admite y proporciona alta disponibilidad (HA). En esta página, también se explican las configuraciones recomendadas que contribuyen a mejorar el rendimiento y la estabilidad de la instancia.
Para obtener más información sobre las consideraciones específicas de la región, consulta Geografía y regiones.
Alta disponibilidad
Memorystore for Redis Cluster se basa en una arquitectura de alta disponibilidad en la que tus clientes acceden directamente a las VMs administradas de Memorystore for Redis Cluster. Tus clientes se conectan a las direcciones de red de fragmentos individuales, como se describe en Conéctate a una instancia de Memorystore para Redis Cluster.
La conexión directa a los fragmentos proporciona los siguientes beneficios:
La conexión directa evita cualquier punto único de falla, ya que cada fragmento está diseñado para fallar de forma independiente. Por ejemplo, si el tráfico de varios clientes sobrecarga una ranura (fragmento de espacio de claves), la falla del fragmento limita el impacto al fragmento responsable de entregar la ranura.
La conexión directa evita los saltos intermedios, lo que minimiza el tiempo de ida y vuelta (latencia del cliente) entre tu cliente y la VM de Redis.
Parámetros de configuración recomendados
Recomendamos crear instancias multizonales con alta disponibilidad en lugar de instancias zonales debido a la mayor confiabilidad que proporcionan. Sin embargo, si decides aprovisionar una instancia sin réplicas, te recomendamos que elijas una instancia de zona única. Para obtener más información, consulta Elige una instancia de una sola zona si tu instancia no usa réplicas.
Para habilitar la alta disponibilidad de tu instancia, debes aprovisionar al menos 1 nodo de réplica por cada fragmento. Puedes hacerlo cuando creas la instancia o puedes ajustar la cantidad de réplicas a, al menos, 1 réplica por fragmento. Las réplicas proporcionan conmutación por error automática durante el mantenimiento planificado y las fallas inesperadas de fragmentos.
Debes configurar tu cliente según las instrucciones que se indican en Prácticas recomendadas para clientes de Redis. El uso de las prácticas recomendadas permite que tu cliente de Redis de código abierto controle de forma automática y correcta el rol (conmutaciones por error automáticas) y los cambios en la asignación de ranuras (reemplazo de nodos, ajuste de escala horizontal de consumidores) de tu clúster sin tiempo de inactividad.
Réplicas
Una instancia de Memorystore for Redis Cluster con alta disponibilidad es un recurso regional. Esto significa que las VMs principales y de réplica de las particiones se distribuyen en varias zonas para protegerse contra una interrupción zonal. Memorystore for Redis Cluster admite instancias con 0, 1 o 2 réplicas por nodo.
Puedes usar réplicas para aumentar la capacidad de procesamiento de lectura mediante el ajuste de escala de las lecturas.
Para ello, debes usar el comando READONLY
para establecer una conexión que permita que tu cliente lea desde las réplicas. Para obtener más detalles sobre la lectura desde réplicas, consulta Cómo escalar con Redis Cluster.
Forma del clúster con 0 réplicas por nodo
Forma del clúster con 1 réplica por nodo
Forma del clúster con 2 réplicas por nodo
Conmutación por error automática
Las conmutaciones por error automáticas dentro de una partición pueden ocurrir debido a mantenimiento o a una falla inesperada del nodo principal. Durante una conmutación por error, una réplica asciende a principal. Puedes configurar réplicas de forma explícita. El servicio también puede aprovisionar temporalmente réplicas adicionales durante el mantenimiento interno para evitar el tiempo de inactividad.
Las conmutaciones por error automáticas evitan la pérdida de datos durante las actualizaciones de mantenimiento. Para obtener detalles sobre el comportamiento de la conmutación por error automática durante el mantenimiento, consulta Comportamiento de la conmutación por error automática durante el mantenimiento.
Duración de la conmutación por error y la reparación de nodos
Las conmutaciones por error automáticas pueden tardar decenas de segundos en el caso de eventos no planificados, como una falla en el proceso del nodo principal o una falla de hardware. Durante este tiempo, el sistema detecta la falla y elige una réplica para que sea la nueva instancia principal.
La reparación de nodos puede llevar tiempo, del orden de minutos, para que el servicio reemplace el nodo con errores. Esto se aplica a todos los nodos principales y de réplica. En el caso de las instancias que no son de alta disponibilidad (no se aprovisionaron réplicas), reparar un nodo principal con errores también lleva tiempo, del orden de minutos.
Comportamiento del cliente durante una conmutación por error no planificada
Es probable que se restablezcan las conexiones del cliente según la naturaleza de la falla. Después de la recuperación automática, se deben reintentar las conexiones con retirada exponencial para evitar sobrecargar los nodos principales y de réplica.
Los clientes que usan réplicas para el rendimiento de lectura deben prepararse para una degradación temporal de la capacidad hasta que se reemplace automáticamente el nodo con errores.
Escrituras perdidas
Durante una conmutación por error que se produce debido a una falla inesperada, es posible que se pierdan las escrituras confirmadas debido a la naturaleza asíncrona del protocolo de replicación de Redis.
Las aplicaciones cliente pueden aprovechar el comando WAIT de Redis para mejorar la seguridad de los datos del mundo real. Es un enfoque de mejor esfuerzo que conlleva compensaciones, como se explica en la documentación del comando WAIT
de Redis.
Impacto en el keyspace de una interrupción en una sola zona
En esta sección, se describe el impacto de una interrupción de una sola zona en una instancia de Memorystore para Redis Cluster.
Instancias de varias zonas
Instancias con HA: Si una zona sufre una interrupción, todo el espacio de claves está disponible para lecturas y escrituras, pero, como algunas réplicas de lectura no están disponibles, se reduce la capacidad de lectura. Recomendamos encarecidamente que aprovisiones en exceso la capacidad del clúster para que la instancia tenga suficiente capacidad de lectura en el caso poco frecuente de una interrupción de una sola zona. Una vez que finaliza la interrupción, se restablecen las réplicas en la zona afectada y la capacidad de lectura del clúster vuelve a su valor configurado. Para obtener más información, consulta Patrones de apps escalables y confiables.
Instancias que no son de alta disponibilidad (sin réplicas): Si una zona tiene una interrupción, la parte del espacio de claves que se aprovisiona en la zona afectada se somete a un vaciado de datos y no está disponible para escrituras o lecturas durante la interrupción. Una vez que finaliza la interrupción, se restablecen los servidores principales de la zona afectada y la capacidad del clúster vuelve a su valor configurado.
Instancias de zona única
- Instancias con HA y sin HA: Si la zona en la que se aprovisiona la instancia tiene una interrupción, el clúster no estará disponible y se borrarán los datos. Si se produce una interrupción en una zona diferente, el clúster continúa entregando solicitudes de lectura y escritura. Una vez que finaliza la interrupción, se restablece la capacidad configurada del clúster.
Prácticas recomendadas
En esta sección, se describen las prácticas recomendadas para la alta disponibilidad y las réplicas.
Cómo agregar una réplica
Para agregar una réplica, se requiere una instantánea de RDB. Las instantáneas de RDB usan una bifurcación de procesos y un mecanismo de "copia al escribir" para tomar una instantánea de los datos del nodo. Según el patrón de escrituras en los nodos, la memoria utilizada de los nodos aumenta a medida que se copian las páginas a las que acceden las escrituras. El espacio de memoria puede ser hasta el doble del tamaño de los datos en el nodo.
Para asegurarte de que los nodos tengan suficiente memoria para completar la instantánea, mantén o establece maxmemory
en el 80% de la capacidad del nodo, de modo que el 20% se reserve para la sobrecarga. Esta sobrecarga de memoria, además de supervisar las instantáneas, te ayuda a administrar tu carga de trabajo para que las instantáneas se realicen correctamente. Además, cuando agregues réplicas, reduce el tráfico de escritura lo más posible. Para obtener más información, consulta Supervisa un clúster con una carga de escritura alta.