Acerca del ajuste de la capacidad del clúster

En esta página, se describe cómo se comporta tu clúster en Memorystore para Redis Cluster durante el escalamiento.

Puedes escalar la capacidad de tu clúster de las siguientes maneras:

  • Puedes cambiar la cantidad de fragmentos de tu clúster. Esto es el escalamiento horizontal. Puedes escalar un clúster de forma horizontal de una de las siguientes maneras:

    • Escalar horizontalmente: aumenta la capacidad del clúster, lo que le proporciona más memoria y potencia de procesamiento para controlar un mayor volumen de datos o tráfico. La capacidad del clúster se determina por la cantidad de fragmentos que tiene.

      Si escalas horizontalmente tu clúster, la aplicación puede controlar un aumento en la demanda sin que se degrade el rendimiento. Para escalar horizontalmente un clúster, agrega fragmentos a él.

    • Reducir la escala horizontalmente: Reduce la capacidad del clúster, lo que disminuye la potencia de procesamiento y la cantidad de memoria disponible para almacenar datos. Esto ocurre cuando disminuyen las demandas de datos de tu aplicación y necesitas reducir el uso de recursos para ahorrar costos. Para reducir la escala de un clúster, disminuye la cantidad de shards en el clúster.

  • Puedes cambiar el tipo de nodo de tu clúster. Esto es el escalamiento vertical. Puedes escalar un clúster de forma vertical de una de las siguientes maneras:

    • Escalamiento vertical: Aumenta la capacidad de tu clúster. La capacidad de tu clúster se determina según su tipo de nodo. Para escalar verticalmente un clúster, cambia el tipo de nodo a uno más grande. Por ejemplo, escala verticalmente tu clúster de un tipo de nodo redis-standard-small a un tipo de nodo redis-highmem-medium.
    • Reducir la escala verticalmente: Reduce la capacidad de tu clúster. Para reducir la escala de un clúster, cambia el tipo de nodo a uno más pequeño. Por ejemplo, reduce la escala verticalmente de tu clúster de un tipo de nodo redis-highmem-medium a un tipo de nodo redis-standard-small.

Impacto del escalamiento

Durante una operación de escalamiento, la disponibilidad de tu clúster no se ve afectada. Sin embargo, cuando cambias la cantidad de fragmentos en tu clúster, Memorystore for Redis Cluster vuelve a balancear el espacio de claves del clúster. Esto puede aumentar la latencia durante la operación de escalamiento.

Además, el impacto de escalar tu clúster de forma vertical cambiando el tipo de nodo es similar a lo que sucede con una operación de mantenimiento.

Situaciones de falla

Si encuentras un error durante la operación de escalamiento, es probable que se deba a una de las siguientes situaciones:

  • Quieres actualizar el recuento de fragmentos de tu clúster, pero no tienes suficiente memoria libre para el tipo de nodo redis-shared-core-nano de tu clúster.

    Para resolver este problema, puedes escalar verticalmente el clúster o liberar memoria de los nodos del clúster. Para liberar memoria, haz lo siguiente:

    1. Conéctate a un clúster.
    2. Para obtener detalles sobre el clúster, incluida la dirección IP y el número de puerto, usa el comando gcloud redis clusters describe.
    3. Anota la dirección IP y el número de puerto del clúster.
    4. Para obtener información sobre los nodos del clúster, usa el siguiente comando:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
      

      Reemplaza IP_ADDRESS y PORT_NUMBER por los valores que anotaste en el paso anterior.

    5. Anota la dirección IP y el número de puerto de un nodo que no tenga suficiente espacio libre. El ID de este nodo coincide con un ID que aparece en el error.

    6. Para conectarte a este nodo, usa el siguiente comando:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER
      

      Reemplaza IP_ADDRESS y PORT_NUMBER por los valores que anotaste en el paso anterior.

    7. En el símbolo del sistema, ingresa el comando info memory.

      En el resultado, aparecen los valores de los parámetros used_memory y maxmemory. used_memory es la cantidad de memoria que usa el nodo y maxmemory es la cantidad de memoria disponible para el nodo.

    8. Divide el valor del parámetro used_memory por el valor del parámetro maxmemory y verifica que el cociente sea superior al 98%.

    9. Para liberar espacio para el nodo, borra algunas de sus claves.

    10. Vuelve a ingresar el comando info memory. En el resultado, el valor del parámetro used_memory es menor.

    11. Divide el valor del parámetro used_memory por el valor del parámetro maxmemory y verifica que el cociente ahora sea inferior al 98%. Si no es así, borra más claves.

    12. Para cualquier otro nodo que no tenga suficiente espacio libre, repite los pasos del 4 al 11 de este procedimiento.

  • Escalaste a un recuento de fragmentos más pequeño que no tiene la capacidad de contener todas las claves que Memorystore for Redis Cluster almacena en el clúster original. Para resolver este problema, escala a un recuento de fragmentos más grande que pueda contener todas las claves almacenadas. Para obtener más información sobre cómo aumentar la cantidad de fragmentos de tu clúster, consulta Escala el recuento de fragmentos.

  • Escalaste a un tipo de nodo más pequeño que no tiene la capacidad de contener todos los datos que Memorystore for Redis Cluster almacena en el tipo de nodo original. Si esto ocurre, Memorystore for Redis Cluster te proporciona un tipo de nodo recomendado para reducir la escala verticalmente.

  • Actualizaste el tipo de nodo de tu clúster y reemplazaste la configuración predeterminada para el tipo de nodo original, o bien esta configuración ya se reemplazó. Sin embargo, el nuevo tipo de nodo escalado no admite los valores de la configuración predeterminada o la configuración no es válida para el tipo de nodo. Si esto sucede, Memorystore para Redis Cluster devuelve un error. Para resolver este problema, modifica la configuración de forma manual para que sea válida para el tipo de nodo nuevo.

  • Escalaste el clúster durante un período de alta presión de escritura (por ejemplo, durante las pruebas de carga). Para resolver este problema, escala durante los períodos de poco tráfico del clúster.

  • Tienes una ranura que contiene una clave grande y deseas migrar esta clave a otro nodo. Sin embargo, este nodo no tiene suficiente memoria para admitir la clave. No puedes actualizar tu clúster. Para resolver este problema, reduce el tamaño de la clave para que sea inferior a 128 MB. Luego, vuelve a intentar la operación de actualización.

  • No se conoce el número de ranura que posee un nodo de un clúster, sino solo el rango de ranuras. Memorystore para Redis Cluster devuelve un mensaje de error. Si esto ocurre, reduce el tamaño de la clave y vuelve a intentar la operación de actualización.

  • Aumentaste la capacidad de tu clúster escalando horizontalmente a un recuento de fragmentos más pequeño. Sin embargo, Memorystore para Redis Cluster no tiene suficiente memoria para alojar esta solicitud. Para resolver este problema, reduce la capacidad de tu clúster reduciendo la escala horizontalmente al recuento de fragmentos original y más grande.

Prácticas recomendadas

Para ayudarte a escalar la capacidad de tu clúster, te recomendamos que sigas estas prácticas recomendadas:

  • Elige cuándo escalar: Para aumentar la velocidad y la confiabilidad del escalamiento de tu clúster, escálalo durante los períodos de tráfico bajo. Para aprender a supervisar el tráfico de los clústeres, consulta Supervisa clústeres.
  • Vuelve a intentarlo cuando no puedas escalar: la disponibilidad de los recursos cambia con frecuencia. Si no puedes escalar el clúster debido a una restricción temporal de recursos, intenta escalarlo más tarde.