Crear una nueva caché que se escala horizontalmente mediante la agrupación en clústeres
La agrupación en clústeres se habilita durante la creación de la caché desde el panel de trabajo, al crear una nueva Azure Cache for Redis.
Use la guía de inicio rápido Crear una caché Redis de código abierto para empezar a crear una nueva caché mediante Azure Portal.
En la pestaña Opciones avanzadas de la instancia de caché premium, configure los valores para el puerto no TLS, la agrupación en clústeres y la persistencia de datos. Para habilitar la agrupación en clústeres, seleccione Habilitar.
Puede tener hasta 30 particiones en el clúster. Después de seleccionar Habilitar, deslice el control deslizante o escriba un número entre 1 y 30 para recuento de particiones y seleccione Aceptar.
Cada partición es un par de caché principal/réplica administrado por Azure. El tamaño total de la caché se calcula multiplicando el número de particiones por el tamaño de la caché seleccionado en el plan de tarifa.
Cuando se haya creado la caché, conéctese a ella y úsela simplemente como una caché no agrupada. Redis distribuye los datos a lo largo de las particiones de memoria caché. Si el diagnóstico está habilitado, las métricas se capturan por separado para cada partición y se pueden ver en Azure Cache for Redis mediante el menú Recurso.
Termine de crear la caché mediante la guía de inicio rápido.
La caché tarda un tiempo en crearse. Puede supervisar el progreso en la página Información general de Azure Cache for Redis. Cuando Estado se muestra como En ejecución, la memoria caché está lista para su uso.
Para obtener el código de ejemplo sobre el trabajo con clústeres con el cliente StackExchange.Redis, consulte la parte clustering.cs del ejemplo Hello World.
Escalado o reducción horizontal de una caché Premium en ejecución
Para cambiar el tamaño del clúster en una caché premium que haya creado anteriormente y ya se esté ejecutando con la agrupación en clústeres habilitada, seleccione Tamaño del clúster en el menú Recurso.
Para cambiar el tamaño del clúster, use el control deslizante o escriba un número entre 1 y 30 en el cuadro de texto Recuento de particiones. Luego, seleccione Aceptar para guardar.
Aumentar el tamaño del clúster aumenta el rendimiento máximo y el tamaño de caché. Aumentar el tamaño del clúster no aumenta las conexiones máximas disponibles para los clientes.
Escalado y reducción horizontal mediante PowerShell
Las instancias de Azure Cache for Redis se pueden escalar horizontalmente con PowerShell con el cmdlet Set-AzRedisCache cuando se modifica la propiedad ShardCount
. En el ejemplo siguiente se muestra cómo escalar horizontalmente una caché denominada myCache
para usar tres particiones (es decir, escalar horizontalmente por un factor de tres)
Set-AzRedisCache -ResourceGroupName myGroup -Name myCache -ShardCount 3
Para obtener más información sobre cómo escalar con PowerShell, consulte Escalado de una instancia de Azure Cache for Redis con PowerShell.
Escalado y reducción horizontal mediante la CLI de Azure
Para escalar las instancias de Azure Cache for Redis mediante la CLI de Azure, llame al comando az redis update y use la propiedad shard-count
. En el ejemplo siguiente se muestra cómo escalar horizontalmente una caché denominada myCache
para usar tres particiones (es decir, escalar horizontalmente por un factor de tres).
az redis update --cluster-name myCache --resource-group myGroup --set shard-count=3
Para obtener más información sobre el escalado con la CLI de Azure, consulte Modifique la configuración de una instancia existente de Azure Cache for Redis.
Nota:
Al escalar una memoria caché hacia arriba o hacia abajo automáticamente (por ejemplo, mediante PowerShell o la CLI de Azure), se ignora cualquier maxmemory-reserved
o maxfragmentationmemory-reserved
como parte de la solicitud de actualización. Solo se respeta el cambio de escalado. Puede actualizar esta configuración de memoria una vez completada la operación de escalado.
Al escalar un clúster se ejecuta el comando MIGRATE, que es un comando costoso. Para un impacto mínimo, considere la posibilidad de ejecutar esta operación durante las horas de poca actividad. Durante el proceso de migración, se produce un pico en la carga del servidor. El escalado de un clúster es un proceso de ejecución duradero y la cantidad de tiempo transcurrido depende del número de claves y el tamaño de los valores asociados a estas claves.
Cómo escalar vertical y horizontalmente: niveles Enterprise y Enterprise Flash
Los niveles Enterprise y Enterprise Flash pueden escalar vertical y horizontalmente en una sola operación. Otros niveles requieren operaciones independientes para cada acción.
Precaución
Los niveles Enterprise y Enterprise Flash aún no admiten reducir verticalmente o escalado en operaciones de.
Escalar usando Azure Portal
Para escalar la caché, vaya a la caché en Azure Portal y seleccione Escalar en el menú Recursos.
Para escalar verticalmente, elija un tipo de caché diferente y, a continuación, elija Guardar.
Importante
Solo puede escalar verticalmente en este momento. No se puede reducir verticalmente.
Para escalar horizontalmente, aumente el control deslizante Capacidad. La capacidad aumenta en incrementos de dos. Este número refleja cuántos nodos de Redis Enterprise subyacentes se están agregando. Este número siempre es un múltiplo de dos para reflejar los nodos que se agregan para las particiones principal y de réplica.
Importante
En este momento solo puede escalar horizontalmente, aumentando la capacidad. No se puede escalar hacia adentro.
Durante la operación de escalado de la memoria caché al nuevo plan de tarifa, se muestra la notificación Escalando Redis Cache.
Cuando se completa el escalado, el estado cambia de Escalado a En ejecución.
Escalado mediante PowerShell
Puede escalar las instancias de Azure Cache for Redis con PowerShell con el cmdlet Update-AzRedisEnterpriseCache. Puede modificar la propiedad Sku
para escalar verticalmente la instancia. Puede modificar la propiedad Capacity
para escalar horizontalmente la instancia. En el ejemplo siguiente se muestra cómo escalar una caché denominada myCache
a una instancia de nivel Enterprise E20 (25 GB) con capacidad de 4.
Update-AzRedisEnterpriseCache -ResourceGroupName myGroup -Name myCache -Sku Enterprise_E20 -Capacity 4
Escalado con la CLI de Azure
Para escalar las instancias de Azure Cache for Redis mediante la CLI de Azure, llame al comando az redisenterprise update. Puede modificar la propiedad sku
para escalar verticalmente la instancia. Puede modificar la propiedad capacity
para escalar horizontalmente la instancia. En el ejemplo siguiente se muestra cómo escalar una caché denominada myCache
a una instancia de nivel Enterprise E20 (25 GB) con capacidad de 4.
az redisenterprise update --cluster-name "myCache" --resource-group "myGroup" --sku "Enterprise_E20" --capacity 4
Preguntas frecuentes de escalado
La lista siguiente contiene las respuestas a las preguntas más frecuentes sobre el escalado de Azure Cache for Redis.
¿Puedo realizar operaciones de escalado en una memoria caché Premium?
- No puede escalar desde una caché Premium a un plan de tarifa Básico o Estándar.
- Puede escalar desde un plan de tarifa de caché Premium a otro.
- No puede escalar de una memoria caché Básica directamente a una memoria caché Premium. En primer lugar, escale desde Básica a Estándar en una operación de escalado y, después, desde Estándar a Prémium en una operación de escalado posterior.
- No se puede escalar desde una caché Premium a una cachéEnterprise o Enterprise Flash.
- Si ha habilitado la agrupación en clústeres cuando creó su caché Premium, puede cambiar el tamaño de clúster. Si su caché se creó sin habilitar la agrupación en clústeres, puede configurar la agrupación en clústeres después.
Después de escalar, ¿tengo que cambiar el nombre de la memoria caché o las teclas de acceso?
No, el nombre de la caché y las claves no cambian durante una operación de escalado.
¿Cómo funciona el escalado?
- Cuando se escala una caché Básica a un tamaño diferente, esta se cierra y se aprovisiona una nueva caché con el nuevo tamaño. Durante este tiempo, la caché no está disponible y se pierden todos los datos en la memoria caché.
- Cuando se escala una memoria caché del plan Básico al plan Estándar, se aprovisiona una caché de réplica y los datos se copian de la caché principal a la de réplica. La memoria caché permanece disponible durante el proceso de escalado.
- Cuando se escala una caché Estándar, Premium, Enterprise o Enterprise Flash a un tamaño diferente, se apaga una de las réplicas y se vuelve a aprovisionar para el nuevo tamaño y los datos se transfieren a través de ella y, después, la otra realiza una conmutación por error antes de volverse a aprovisionar, un proceso que es similar al que se produce durante un error en uno de los nodos de la caché.
- Al escalar horizontalmente una caché en clúster, se aprovisionan nuevas particiones y se agregan al clúster de servidores de Redis. A continuación, los datos se vuelven a particionar en todas las particiones.
- Cuando se reduce horizontalmente una caché en clúster, primero se vuelven a particionar los datos y, a continuación, el tamaño del clúster se reduce a las particiones necesarias.
- Al escalar o migrar la memoria caché a un clúster diferente, la dirección IP subyacente de la caché puede cambiar. El registro de DNS de la caché cambia y es transparente para la mayoría de las aplicaciones. Sin embargo, si usa una dirección IP para configurar la conexión a la memoria caché o configurar grupos de seguridad de red o firewalls que permiten el tráfico a la caché, es posible que la aplicación tenga problemas para conectarse después de que se actualice el registro DNS.
¿Se pierden los datos de mi caché durante el escalado?
- Cuando se escala una memoria caché Básica a un nuevo tamaño, se pierden todos los datos y la memoria caché no está disponible durante la operación de escalado.
- Cuando se escala una memoria caché del plan Básico al plan Estándar, normalmente se conservan los datos de la memoria caché.
- Cuando se escala una caché Estándar, Premium, Enterprise o Enterprise Flash a un tamaño mayor, normalmente se conservan todos los datos. Al escalar una caché Estándar o Premium a un tamaño menor, los datos se pueden perder si el tamaño de datos original supera el nuevo tamaño más pequeño. Si se pierden datos al reducir, las claves se expulsan mediante el directiva de expulsión allkeys-lru .
¿Puedo usar todas las características del nivel Premium después del escalado?
No, algunas características solo se pueden establecer al crear una caché en el nivel Premium y no están disponibles después del escalado.
Estas características no se pueden agregar después de crear la memoria caché Premium:
- Inserción de redes virtuales
- Adición de redundancia de zona
- Varias réplicas por una instancia principal
Para usar cualquiera de estas características, debe crear una nueva instancia de caché en el nivel Premium.
¿Mi configuración de bases de datos personalizada se ve afectada durante el escalado?
Si ha configurado un valor personalizado para el parámetro databases
al crear la memoria caché, tenga en cuenta que algunos planes de tarifa tienen diferentes límites de bases de datos. Estos son algunas de los aspectos que considerar al escalar en este escenario:
- Cuando se escala a un plan de tarifa con un límite de
databases
menor que el nivel actual:
- Si usa el número predeterminado de
databases
, que es 16 para todos los planes de tarifa, no se pierden datos.
- Si utiliza un número personalizado de
databases
que está dentro de los límites del plan al que va a escalar, se mantiene la configuración de databases
y no se pierden datos.
- Si usa un número personalizado de
databases
que supera los límites del nuevo plan, la configuración de databases
se reduce a los límites del nuevo plan y se pierden todos los datos de las bases de datos quitadas.
- Cuando se escala a un plan de tarifa con el mismo límite de
databases
o mayor que el nivel actual, la configuración de databases
se mantiene y no se pierden datos.
Mientras que las cachés Estándar, Premium, Enterprise y Enterprise Flash tienen un SLA de disponibilidad, no hay ningún SLA para la pérdida de datos.
¿Mi caché está disponible durante el escalado?
- Las cachés Estándar, Premium, Enterprise y Enterprise Flash permanecen disponibles durante la operación de escalado. Sin embargo, pueden producirse interrupciones momentáneas de conexión mientras al escalar de cachés Básicas a Estándar. Estas interrupciones momentáneas de conexión deberían ser breves y los clientes de Redis, por lo general, deberían poder volver a establecer su conexión al instante.
- En el caso de las cachés Enterprise y Enterprise Flash que usan la replicación geográfica activa, el escalado solo de un subconjunto de cachés vinculadas puede presentar problemas con el tiempo en algunos casos. Se recomienda escalar todas las cachés posibles del grupo de replicación geográfica juntas.
- Las memorias caché Básicas están sin conexión durante las operaciones de escalado a un tamaño diferente. Las memorias caché Básicas siguen estando disponibles al escalar del plan Básico al Estándar, pero pueden experimentar una breve interrupción momentánea de conexión. En caso de producirse una interrupción momentánea de la conexión, por lo general los clientes de Redis pueden volver a establecer conexión al instante.
¿Qué limitaciones de escalado se aplican a la replicación geográfica?
Con la replicación geográfica pasiva configurada, es posible que observe que no puede escalar una caché o cambiar las particiones de un clúster. Un vínculo de replicación geográfica entre dos cachés impide la operación de escalado o el cambio del número de particiones de un clúster. Debe desvincular la memoria caché para emitir estos comandos. Para obtener más información, consulte Configuración de replicación geográfica.
Con la replicación geográfica activa configurada, puede escalar una memoria caché con algunas limitaciones. Todas las memorias caché de un grupo de replicación geográfica deben tener el mismo tamaño y capacidad. Para obtener más información, consulte Configuración de la replicación geográfica activa para las instancias de Azure Cache for Redis Enterprise.
Operaciones que no se admiten
- No se puede escalar desde un plan de tarifa superior a un plan de tarifa inferior.
- No puede cambiar de una memoria caché Premium a una memoria caché Estándar o Básica.
- No puede cambiar de una memoria caché Estándar a una memoria caché Básica.
- Puede cambiar de una memoria caché Básica a una memoria caché Estándar, pero no puede cambiar el tamaño al mismo tiempo. Si necesita un tamaño distinto, puede realizar una operación de escalado hasta el tamaño deseado en un momento posterior.
- No puede escalar de una memoria caché Básica directamente a una memoria caché Premium. En primer lugar, escale del plan Básico al Estándar en una operación de escalado y, después, del plan Estándar al Prémium en una operación posterior.
- No se puede escalar desde una caché Premium a una cachéEnterprise o Enterprise Flash.
- No puede escalar desde un tamaño mayor hasta el tamaño C0 (250 MB) .
Si se produce un error en una operación de escalado, el servicio intenta revertir la operación y la memoria caché se restablecerá al tamaño original.
¿Cuánto tarda el escalado?
El tiempo de escalado depende de algunos factores. Los siguientes factores pueden afectar al tiempo que tarda el escalado:
- Cantidad de datos: las cantidades más grandes de datos tardan más tiempo en replicarse.
- Solicitudes de escritura elevadas: un mayor número de escrituras significa que más datos se replican entre nodos o particiones.
- Carga de servidor alta: una carga de servidor superior significa que el servidor de Redis está ocupado y hay ciclos limitados de CPU disponibles para completar la redistribución de datos.
El escalado de una caché no es una acción trivial y puede tardar mucho tiempo. Puede tardar una o dos horas en escalar una memoria caché con una a dos particiones cuando no está bajo cargas pesadas. Si tiene más particiones, el tiempo de escalado no aumenta de forma lineal.
¿Cómo puedo saber si el escalado ha terminado?
En Azure Portal puede ver la operación de escalado en curso. Cuando se completa el escalado, el estado de la memoria caché cambia de En ejecución.
¿Es necesario realizar algún cambio en mi aplicación cliente para usar la agrupación en clústeres?
Importante
Al usar los niveles Enterprise o Enterprise FLash, se le da la opción del modo de clúster del sistema operativo o del modo de clúster de empresa. El Modo de clúster de OSS es el mismo que la agrupación en clústeres en el nivel Premium y sigue la especificación de agrupación en clústeres de código abierto. El Modo de clúster Enterprise puede tener un rendimiento menor, pero usa la agrupación en clústeres de Redis Enterprise que no requiere ningún cambio del cliente para usarlo. Para más información, consulte Agrupación en clústeres.
¿Cómo se distribuyen las claves en un clúster?
Según la documentación de Redis sobre el modelo de distribución de claves: el espacio de clave se divide en 16 384 ranuras. Cada clave tiene un hash y se asigna a una de estas ranuras, que se distribuyen por todos los nodos del clúster. Puede configurar qué parte de la clave está con hash para asegurarse de que varias claves se encuentran en la misma partición con etiquetas hash.
- Claves con una etiqueta hash: si cualquier parte de la clave está encerrada entre
{
y }
, se aplica un algoritmo hash únicamente a esa parte de la clave para determinar la ranura hash de una clave. Por ejemplo, las siguientes tres claves se encontrarían en la misma partición: {key}1
, {key}2
y {key}3
, ya que solo se aplica el hash a la parte key
del nombre. Para obtener una lista completa de especificaciones de etiquetas hash de claves, consulte Etiquetas hash de claves.
- Claves sin una etiqueta hash: se usa todo el nombre de la clave para aplicar el hash, lo que produce una distribución estadísticamente uniforme entre las particiones de la memoria caché.
Para optimizar el rendimiento, se recomienda distribuir las claves de manera uniforme. Si usa claves con una etiqueta hash, es responsabilidad de la aplicación asegurarse de que las claves se distribuyan de manera uniforme.
Para obtener más información, consulte Modelo de distribución de claves, Particionamiento de datos de clúster Redis y Etiquetas hash de claves.
Para obtener el código de ejemplo sobre cómo trabajar con clústeres y buscar claves en la misma partición con el cliente StackExchange.Redis, consulte la parte clustering.cs del ejemplo Hola mundo.
¿Cuál es el mayor tamaño de caché que puedo crear?
El tamaño más grande de caché que se puede tener es de 4,5 TB. Este resultado es una caché F1500 agrupada con capacidad de 9. Para más información, consulte Precios de Azure Cache for Redis.
¿Todos los clientes de Redis admiten la agrupación en clústeres?
Muchas bibliotecas cliente admiten la agrupación en clústeres de Redis, pero no todas. Consulte la documentación de la biblioteca que está usando para comprobar si usa una biblioteca y una versión que admiten la agrupación en clústeres. StackExchange.Redis es una biblioteca que admite la agrupación en clústeres, en sus versiones más recientes. Para obtener más información sobre otros clientes, consulte la sección Jugar con el clúster del Tutorial de clúster de Redis.
El protocolo de agrupación en clústeres de Redis requiere que cada cliente se conecte a cada partición directamente en modo de agrupación en clústeres y también define nuevas respuestas de error, como MOVED
y CROSSSLOTS
. Cuando intenta usar una biblioteca cliente que no admite la agrupación en clústeres con una caché en modo de clúster, el resultado puede ser muchas Excepciones de redireccionamiento MOVIDO o simplemente interrumpir la aplicación si realiza solicitudes de varias claves entre ranuras.
Nota:
Si usa StackExchange.Redis como cliente, compruebe que usa la versión más reciente de StackExchange.Redis 1.0.481 o posterior para que la agrupación en clústeres funcione correctamente. Para obtener más información sobre los problemas con las excepciones MOVE, consulte el apartado sobre las excepciones MOVE.
¿Cómo me conecto a mi memoria caché cuando la agrupación en clústeres esté habilitada?
Puede conectarse a su memoria caché con los mismos puntos de conexión, puertos y claves que usa al conectarse a una memoria caché que no tiene la agrupación en clústeres habilitada. Redis administra la agrupación en clústeres en el back-end para que no tenga que administrarla desde el cliente.
¿Puedo conectarme directamente a las particiones individuales de mi memoria caché?
El protocolo de agrupación en clústeres requiere que el cliente realice las conexiones correctas entre particiones, por lo que el cliente debe realizar las conexiones de recursos compartidos por usted. Dicho esto, cada partición consta de un par de caché principal/réplica que se conoce colectivamente como una instancia de caché. Puede conectarse a estas instancias de caché mediante la utilidad redis-cli en la rama inestable del repositorio de Redis en GitHub. Esta versión implementa compatibilidad básica cuando se inicia con el conmutador -c
. Para más información, consulte la sección Jugar con el clúster en https://redis.io, en el tutorial de clústeres de Redis.
Necesita utilizar el conmutador -p
para especificar el puerto correcto al que conectarse. Use el comando CLUSTER NODES para determinar los puertos exactos usados para los nodos principal y de réplica. Se usan los siguientes intervalos de puertos:
- En el caso de las cachés de nivel Premium no TLS, los puertos están disponibles en el intervalo
130XX
- En el caso de las cachés de nivel Premium habilitadas para TLS, los puertos están disponibles en el intervalo
150XX
- En el caso de las cachés Enterprise y Enterprise Flash que usan la agrupación en clústeres de OSS, la conexión inicial se realiza a través del puerto 10000. La conexión a los nodos individuales se puede realizar mediante puertos en el intervalo 85XX. Los puertos 85xx cambiarán con el tiempo y no deben codificarse de forma rígida en su aplicación.
Sí. En primer lugar, asegúrese de que su caché se encuentra en el nivel Premium ampliándolo. Después, podrá ver las opciones de configuración del clúster, incluida una opción para habilitarlo. Cambia el tamaño del clúster una vez creada la memoria caché o después de habilitar la agrupación en clústeres por primera vez.
Importante
La habilitación de la agrupación en clústeres no se puede deshacer. Hay que tener en cuenta que una caché que tiene habilitada la agrupación en clústeres y solo una partición se comporta de modo diferente que una caché del mismo tamaño sin agrupación en clústeres.
Todas las cachés de nivel Enterprise y Enterprise Flash siempre se agrupan en clústeres.
La agrupación en clústeres solo está disponible para las cachés Premium, Enterprise y Enterprise Flash.
¿Puedo usar la agrupación en clústeres con los proveedores de estado de sesión y de almacenamiento en caché de salida de ASP.NET de Redis?.
-
Proveedor de caché de salida de Redis : no se requieren cambios.
-
Proveedor de estado de sesión de Redis: para usar la agrupación en clústeres, debe usar RedisSessionStateProvider 2.0.1 o una versión superior; de lo contrario, se producirá una excepción, lo que supone un cambio importante. Para obtener más información, consulte la página de detalles sobre cambios importantes de la versión 2.0.0.
Estoy recibiendo excepciones MOVE al usar StackExchange.Redis y agrupaciones en clústeres, ¿qué debo hacer?
Si usa StackExchange.Redis y recibe excepciones MOVE
al emplear agrupaciones en clústeres, asegúrese de que está usando la versión 1.1.603 de StackExchange.Redis o una versión posterior.
¿Cuál es la diferencia entre la agrupación en clústeres OSS y la agrupación en clústeres Enterprise en cachés de nivel Enterprise?
El Modo de clúster de OSS es el mismo que la agrupación en clústeres en el nivel Premium y sigue la especificación de agrupación en clústeres de código abierto. El Modo de clúster Enterprise puede tener un rendimiento menor, pero usa la agrupación en clústeres de Redis Enterprise que no requiere ningún cambio del cliente para usarlo. Para más información, consulte Agrupación en clústeres.
¿Cuántas particiones usan las cachés de nivel Enterprise?
A diferencia de las cachés de nivel Básico, Estándar y Premium, las cachés Enterprise y Enterprise Flash pueden aprovechar varias particiones en un solo nodo. Para más información, consulte Configuración de la fragmentación.
Pasos siguientes