AWS: configuration multi-région à l'aide d'une seule instance RDS

11

J'essaie de faire évoluer notre application Web (PHP, MySQL, memcache) dans un schéma multi-régions. Actuellement, nous utilisons une configuration avec deux instances EC2 derrière une instance ELB et une instance RDS, toutes dans la région US-EAST (Virginie).

Nous aimerions également être présents dans la région UE (Irlande). Cela signifie au moins une nouvelle instance EC2 (identique aux autres, desservant la même application).

J'ai copié l'AMI souhaitée, installé la nouvelle instance, installé une même configuration ELB (requise pour la terminaison SSL) et configuré le routage basé sur la latence dans Route53. Et cela fonctionne comme suggéré.

Mais les clients de l'UE ont des problèmes de vitesse. Cela est dû au fait que les instances EU EC2 se connectent à l'instance RDS basée aux États-Unis. Pour autant que je sache, Amazon n'a pas encore activé la réplication multi-régions RDS.

Avez-vous des suggestions sur la façon d'accélérer correctement l'ensemble de la configuration lors de l'utilisation de l'instance RDS unique?

De plus, avez-vous des idées en général sur la façon de faire évoluer les choses? Idéalement, nous aimerions continuer à utiliser la technologie RDS pour diverses raisons. Néanmoins, je suis ouvert aux suggestions (je suppose que la prochaine idée serait d'héberger nos propres serveurs MySQL).

Ion
la source

Réponses:

5

Vous devriez réfléchir soigneusement à la raison pour laquelle vous devez disposer des mêmes données aux États-Unis et dans l'UE. Après tout, ce sont des utilisateurs différents.

L'exécution dans un environnement multi-région est beaucoup plus complexe et donne généralement des performances en raison de la latence inhérente entre les États-Unis et l'UE.

Même si vous sortez du RDS et essayez de répliquer vos données entre les régions, soit en asynchrone soit en synchronisation, vous obtiendrez des problèmes de latence qui donneront de mauvaises performances à vos utilisateurs.

Le moyen le plus simple est de configurer un serveur RDS dédié dans l'UE et de ne rien partager entre ces instances.

Gars
la source
Bonjour Guy, le problème ici est que les clients de l'UE et des États-Unis doivent avoir accès aux mêmes données. Y a-t-il une solution / idée?
Ion
À quelle fréquence ces données sont-elles mises à jour (sinon, vous pouvez facilement les reproduire entre les régions)?
Guy
Les données sont mises à jour souvent en général. Et ils commenceront à être mis à jour plus souvent à mesure que l'application se développe chez les utilisateurs. Je pense que nous devons chercher d'autres solutions.
Ion
4

RDS est idéal pour les déploiements dans une seule région en raison de la faible latence, mais cela devient une histoire différente lorsque vous commencez à vous étendre aux différentes régions. Si vous souhaitez conserver l'instance RDS, vous pouvez configurer votre propre serveur MySQL dans la région de l'UE et effectuer la réplication. De cette façon, la vitesse sera beaucoup plus acceptable.

Nathan C
la source
1
Existe-t-il un moyen (semi) automatique de répliquer une instance RDS dans un intervalle? Des idées? Je suppose que cette réplique serait également en lecture seule, non?
Ion
AWS prend en charge les réplicas en lecture par défaut, c'est correct: aws.amazon.com/rds/faqs/#86 - Je suis sûr qu'il est possible de faire une réplication en lecture / écriture, mais cela sort du cadre de SF (je vérifierais avec notre Site DBA).
Nathan C
Oui, mais les réplicas en lecture sont créés dans la même région. Nous avons besoin d'une réplique en lecture dans une région différente, et la dernière fois que j'ai vérifié, ils ne le prennent pas en charge.
Ion
2

Récemment, AWS a fait un pas dans la direction que j'avais précédemment demandée dans ma question en annonçant des répliques de lecture RDS inter-régions . Cependant, ce n'est qu'un petit pas vers une véritable configuration multi-régions.

Ion
la source
1

Je crois que c'est ce que tu veux. Réplication RDS vers EC2 exécutant mysql dans une région différente.

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

user195585
la source
Bienvenue dans Server Fault! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
slm
Merci, ça semble intéressant! Il s'agit d'un lien plus pertinent: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Ion
0

Une solution possible pour améliorer la latence pourrait être d'utiliser Amazon ElastiCache (qui est essentiellement Memcached sous les couvertures).

Vous devez créer un nœud ElastiCache dans chaque région (US-EST et EU) et faire en sorte que votre logique d'application (EC2) utilise le nœud de cache dans la mesure du possible. Si vous suivez cette voie, vous devrez reconcevoir votre application 1) savoir quoi mettre en cache et quand et 2) récupérer autant que possible du nœud ElastiCache local.

Ricardo Rossi
la source