¿Cómo soluciono el error “READONLY You can't write against a read only replica” (No se puede escribir en una réplica de solo lectura) después de la conmutación por error de mi clúster de Redis (modo clúster desactivado)?

3 minutos de lectura
0

¿Por qué recibo el error “READONLY You can't write against a read only replica” (No se puede escribir en una réplica de solo lectura) después de la conmutación por error de mi clúster de Amazon ElastiCache para Redis (modo clúster desactivado)?

Descripción corta

Si el nodo principal conmuta por error a los nodos de réplica de su clúster de Amazon ElastiCache, la réplica asume la función de nodo principal para atender las solicitudes entrantes. Sin embargo, en los siguientes escenarios, recibirá el error READONLY:

  • Está usando un punto de conexión de nodo en lugar de un punto de conexión principal del clúster en su aplicación.

De forma alternativa, realice lo siguiente:

  • El almacenamiento en caché de DNS en el nodo de la aplicación enruta el tráfico al nodo principal anterior.

Resolución

1.    Compruebe que el clúster tenga el modo de clúster desactivado. Para ello:
Abra la consola de ElastiCache y, a continuación, seleccioneRedis clusters (Clústeres de Redis). Compruebe que la opción Cluster Mode (Modo de clúster) del clúster esté establecida en off (desactivado).
Nota: Si la opción Cluster Mode (Modo de clúster) está establecida en on (activado), consulte Estoy usando ElastiCache o Redis. ¿Por qué mis solicitudes de lectura de cliente de Redis siempre se leen o se redirigen al nodo principal de una partición?

2.    Compruebe que esté enviando el comando write al punto de conexión principal en lugar de al punto de conexión del nodo. Para validar que el comando write vaya al nodo principal, realice una de las siguientes acciones:
Opción 1
Conéctese al clúster de Redis mediante redis-cli y ejecute el comando get key para obtener la clave actualizada. A continuación, verifique el resultado del comando para comprobar que el valor de clave se haya actualizado después del último comando.
Por ejemplo, el siguiente comando establece el valor key1 en hello:

set key1 "hello" 
OK

Para comprobar que la clave está configurada correctamente, ejecute el comando get:

get key1
"hello"

Opción 2

Conéctese al clúster de Redis mediante redis-cli y, a continuación, ejecute el comando MONITOR. Este comando muestra una lista de todos los comandos que llegan al clúster. Tenga en cuenta que ejecutar un solo cliente MONITOR puede reducir el rendimiento en más de un 50 %.

3.    Para evitar problemas de almacenamiento en caché de DNS, active la lógica de reintentos en la aplicación mediante las pautas de la biblioteca de clientes de Redis que utiliza la aplicación.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años