AWS presenta la replicación entre regiones este año para una configuración activa-pasiva ( Global DataStore ). Eso significa que hay un clúster de Redis principal para lectura/escritura y un clúster secundario para lecturas.
En mi caso, queremos usar Active - Active Redis en diferentes regiones. Una idea inicial es sincronizar manualmente los clústeres de Redis con los flujos de Kinesis y las funciones de Lambda se activan cada vez que hay una escritura y actualizan la otra región, por ejemplo, cuando ocurre una escritura en la región A, Lambda actualiza Redis en la región B y viceversa. Esto permite escribir en ambas regiones.
¿Es posible hacer que Active Active funcione con Global Datastore?
¿O un almacén de datos global funcionaría tan bien como la solución manual (en términos de latencia) cuando las operaciones de escritura siempre van a la misma región donde se implementa el clúster de Redis principal?
Cualquier comentario es bienvenido
Desafortunadamente, en este momento no existe una solución de AWS para maestro-maestro dentro de ElastiCache.
Estas son algunas de las soluciones que podrías hacer:
Cualquiera de las soluciones tendrá un grado de latencia entre, la opción 1 realiza una escritura directa mientras que las otras 2 permiten que el proceso se lleve a cabo en segundo plano. La decisión aquí se basaría en su aplicación (¿puede esperar a que se realice la escritura o debe suceder en el flujo).
Además, si esto es para escribir un caché, ¿podría usar el cebado de caché en su lugar? Con esto me refiero a generar un caché aplanado a través de un script para garantizar que su clúster redis esté siempre actualizado.
¿Qué le parece conectar las diferentes regiones en la misma Transit VPC para que pueda acceder al punto final de lectura/escritura desde cualquier región (conectada)?
Aún no probado, actualmente estoy tratando de implementar esto, pero la plantilla de CloudFormation correspondiente de la consola de AWS está rota.
Sin embargo, la solución aún debería funcionar, por supuesto con un retraso aceptado, pero al menos no debería haber trabajo adicional para mantener el recurso de la región local, Lambda, etc.
¿Como suena esto?