Ich versuche, unsere Webanwendung (PHP, MySQL, Memcache) in einem Schema mit mehreren Regionen zu skalieren. Derzeit verwenden wir ein Setup mit zwei EC2-Instanzen hinter einer ELB- und einer RDS-Instanz, alle in der Region US-EAST (Virginia).
Wir möchten auch in der Region EU (Irland) präsent sein. Dies bedeutet mindestens eine neue EC2-Instanz dort (identisch mit den anderen, die dieselbe Anwendung bedient).
Ich habe das gewünschte AMI kopiert, die neue Instanz eingerichtet, dieselbe ELB-Konfiguration eingerichtet (für die SSL-Beendigung erforderlich) und das latenzbasierte Routing in Route53 konfiguriert. Und es funktioniert wie vorgeschlagen.
Kunden aus der EU haben jedoch Geschwindigkeitsprobleme. Dies liegt an der Tatsache, dass die EU-EC2-Instanzen eine Verbindung zur in den USA ansässigen RDS-Instanz herstellen. Soweit ich weiß, hat Amazon die RDS-Replikation für mehrere Regionen noch nicht aktiviert.
Haben Sie Vorschläge, wie Sie das gesamte Setup mit der einzelnen RDS-Instanz richtig beschleunigen können?
Auch irgendwelche Ideen im Allgemeinen, wie man Dinge vergrößert? Idealerweise möchten wir die RDS-Technologie aus verschiedenen Gründen weiter nutzen. Trotzdem bin ich offen für Vorschläge (ich denke, die nächste Idee wäre, unsere eigenen MySQL-Server zu hosten).
RDS eignet sich aufgrund der geringen Latenz hervorragend für Bereitstellungen in einzelnen Regionen. Wenn Sie jedoch mit der Erweiterung auf die verschiedenen Regionen beginnen, wird dies zu einer anderen Geschichte. Wenn Sie die RDS-Instanz behalten möchten, können Sie Ihren eigenen MySQL-Server in der EU-Region einrichten und die Replikation durchführen. Auf diese Weise wird die Geschwindigkeit weitaus akzeptabler.
quelle
Vor kurzem hat AWS einen Schritt in die Richtung getan, nach der ich zuvor in meiner Frage gefragt hatte, indem es regionale RDS-Lesereplikate angekündigt hat . Dies ist jedoch nur ein kleiner Schritt in Richtung eines echten Multi-Region-Setups.
quelle
Ich glaube, das ist was du willst. RDS-Replikation auf EC2 mit MySQL in einer anderen Region.
https://aws.amazon.com/about-aws/whats-new/2013/09/05/amazon-rds-new-data-migration-capabilities-mysql/
quelle
Eine mögliche Lösung zur Verbesserung der Latenz könnte die Verwendung von Amazon ElastiCache sein (das im Grunde genommen unter dem Deckmantel gespeichert ist).
Sie müssten in jeder Region (US-EST und EU) einen ElastiCache-Knoten erstellen und Ihre Anwendungslogik (EC2) den Cache-Knoten verwenden, wann immer dies möglich ist. Wenn Sie diesen Weg gehen, müssen Sie Ihre Anwendung neu entwickeln. 1) Sie müssen wissen, was und wann zwischengespeichert werden muss, und 2) Sie müssen so viel wie möglich vom lokalen ElastiCache-Knoten abrufen.
quelle