AWS: configuración de varias regiones con una sola instancia de RDS

11

Estoy tratando de escalar nuestra aplicación web (PHP, MySQL, memcache) en un esquema de varias regiones. Actualmente estamos utilizando una configuración con dos instancias EC2 detrás de una instancia ELB y una instancia RDS, todas ellas en la región US-EAST (Virginia).

También nos gustaría tener presencia en la región de la UE (Irlanda). Esto significa al menos una nueva instancia de EC2 allí (idéntica a las demás, que sirve la misma aplicación).

Copié la AMI deseada, configuré la nueva instancia, configuré una misma configuración ELB (requerida para la terminación SSL) y configuré el enrutamiento basado en latencia en Route53. Y funciona como se sugiere.

Pero, los clientes de la UE tienen problemas de velocidad. Esto se debe al hecho de que las instancias EC2 de la UE se conectan a la instancia RDS con sede en EE. UU. Hasta donde sé, Amazon aún no ha habilitado la replicación multirregional RDS.

¿Tiene alguna sugerencia sobre cómo acelerar correctamente toda la configuración mientras usa la única instancia de RDS?

Además, ¿alguna idea en general sobre cómo ampliar las cosas? Idealmente, nos gustaría continuar usando la tecnología RDS por varias razones. Sin embargo, estoy abierto a sugerencias (supongo que la siguiente idea sería alojar nuestros propios servidores MySQL).

Ion
fuente

Respuestas:

5

Debe pensar detenidamente por qué necesita tener los mismos datos tanto en EE. UU. Como en la UE. Después de todo, estos son diferentes usuarios.

Ejecutar en un entorno de varias regiones es mucho más complejo y generalmente devuelve el rendimiento debido a la latencia inherente entre EE. UU. Y la UE.

Incluso si sale de RDS e intenta replicar sus datos entre regiones, ya sea asincrónica o sincronizada, obtendrá problemas de latencia que darán un mal rendimiento a sus usuarios.

La forma más fácil es configurar un servidor RDS dedicado en la UE y no compartir nada entre estas instancias.

Chico
fuente
Hola Guy, el problema aquí es que los clientes de la UE y los EE. UU. Deben tener acceso a los mismos datos. ¿Hay alguna solución / idea?
Ion
¿Con qué frecuencia se actualizan estos datos (si no con frecuencia puede replicarlos fácilmente entre regiones)?
Guy
Los datos se actualizan a menudo en general. Y comenzarán a actualizarse con más frecuencia a medida que la aplicación crezca en los usuarios. Creo que tenemos que buscar otras soluciones.
Ion
4

RDS es ideal para implementaciones de una sola región debido a la baja latencia, pero se convierte en una historia diferente cuando comienza a expandirse a las diferentes regiones. Si desea conservar la instancia de RDS, puede configurar su propio servidor MySQL en la región de la UE y realizar la replicación. De esta manera, la velocidad será mucho más aceptable.

Nathan C
fuente
1
¿Hay alguna forma (semi) automática de replicar una instancia de RDS en un intervalo? ¿Algunas ideas? Supongo que esta réplica también sería de solo lectura, ¿verdad?
Ion
AWS admite réplicas de lectura de forma predeterminada, eso es correcto: aws.amazon.com/rds/faqs/#86 : estoy seguro de que es posible hacer una replicación de lectura / escritura, pero eso está fuera del alcance de SF (consultaría con nuestro Sitio de DBA).
Nathan C
Sí, pero las réplicas de lectura se crean en la misma región. Necesitamos una réplica de lectura en una región diferente, y la última vez que verifiqué no son compatibles.
Ion
2

Recientemente, AWS hizo un movimiento hacia la dirección que había preguntado anteriormente en mi pregunta al anunciar réplicas de lectura RDS entre regiones . Sin embargo, esto es solo un pequeño paso hacia una verdadera configuración de varias regiones.

Ion
fuente
1

Creo que esto es lo que quieres. Replicación de RDS a EC2 ejecutando mysql en una región diferente.

https://aws.amazon.com/about-aws/whats-new/2013/09/05/amazon-rds-new-data-migration-capabilities-mysql/

usuario195585
fuente
¡Bienvenido a Server Fault! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
slm
Gracias, parece interesante! Este es un enlace más relevante: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Ion
0

Una posible solución para mejorar la latencia podría ser usar Amazon ElastiCache (que básicamente es Memcached debajo de las cubiertas).

Debería crear un nodo ElastiCache en cada región (US-EST y EU) y hacer que su lógica de aplicación (EC2) use el nodo de caché siempre que sea posible. Si sigue esta ruta, tendrá que volver a diseñar su aplicación 1) saber qué almacenar en caché y cuándo y 2) para obtener la mayor cantidad posible del nodo ElastiCache local.

Ricardo Rossi
fuente