AWS: Einrichtung mehrerer Regionen mit einer einzelnen RDS-Instanz


11

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).

Antworten:


5

Sie sollten sorgfältig überlegen, warum Sie in den USA und in der EU dieselben Daten benötigen. Immerhin sind dies verschiedene Benutzer.

Das Ausführen in einer Umgebung mit mehreren Regionen ist viel komplexer und führt aufgrund der inhärenten Latenz zwischen den USA und der EU in der Regel zu Leistungseinbußen.

Selbst wenn Sie RDS verlassen und versuchen, Ihre Daten zwischen Regionen zu replizieren, entweder asynchron oder synchron, treten Latenzprobleme auf, die Ihren Benutzern eine schlechte Leistung verleihen.

Am einfachsten ist es, einen dedizierten RDS-Server in der EU einzurichten und nichts zwischen diesen Instanzen zu teilen.


Hallo Mann, hier geht es darum, dass EU- und US-Kunden Zugriff auf dieselben Daten haben müssen. Gibt es eine Problemumgehung / Idee?
Ion

Wie oft werden diese Daten aktualisiert (wenn nicht oft, können Sie sie problemlos zwischen Regionen replizieren)?
Guy

Die Daten werden im Allgemeinen häufig aktualisiert. Und sie werden häufiger aktualisiert, wenn die Anwendung in den Benutzern wächst. Ich denke, wir müssen nach anderen Lösungen suchen.
Ion

4

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.


1
Gibt es eine (halb-) automatische Möglichkeit, eine RDS-Instanz in einem Intervall zu replizieren? Irgendwelche Ideen? Ich nehme an, diese Replik wäre auch schreibgeschützt, oder?
Ion

AWS unterstützt standardmäßig Lesereplikate , das ist richtig: aws.amazon.com/rds/faqs/#86 - Ich bin sicher, dass es möglich ist, Lese- / Schreibreplikationen durchzuführen , aber das liegt außerhalb des Bereichs von SF (ich würde dies bei unserem überprüfen DBA-Site).
Nathan C

Ja, aber die Lesereplikate werden in derselben Region erstellt. Wir benötigen eine Lesereplik in einer anderen Region, und als ich das letzte Mal überprüft habe, dass sie dies nicht unterstützen.
Ion

2

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.


1

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/


Willkommen bei Server Fault! Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Slm

Danke, scheint interessant! Dies ist ein relevanter Link: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Ion

0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.