AWS: Konfiguracja wielu regionów przy użyciu pojedynczego wystąpienia RDS

11

Próbuję skalować naszą aplikację internetową (PHP, MySQL, memcache) w schemacie obejmującym wiele regionów. Obecnie używamy konfiguracji z dwoma instancjami EC2 za ELB i instancją RDS, wszystkie w regionie US-EAST (Virginia).

Chcielibyśmy również być obecni w regionie UE (Irlandia). Oznacza to przynajmniej nową instancję EC2 (identyczną z innymi, obsługującą tę samą aplikację).

Skopiowałem żądany AMI, skonfigurowałem nową instancję, skonfigurowałem tę samą konfigurację ELB (wymaganą do zakończenia SSL) i skonfigurowałem routing oparty na opóźnieniu w Route53. I działa jak sugerowano.

Ale klienci z UE mają problemy z prędkością. Wynika to z faktu, że instancje EC2 UE łączą się z instancją RDS z siedzibą w USA. O ile wiem, Amazon nie włączył jeszcze replikacji wielu regionów RDS.

Czy masz jakieś sugestie dotyczące prawidłowego przyspieszenia całej konfiguracji podczas korzystania z pojedynczego wystąpienia RDS?

Jakieś ogólne pomysły na zwiększenie skali? Idealnie chcielibyśmy nadal korzystać z technologii RDS z różnych powodów. Niemniej jednak jestem otwarty na sugestie (wydaje mi się, że następnym pomysłem byłoby hostowanie własnych serwerów MySQL).

Jon
źródło

Odpowiedzi:

5

Powinieneś dokładnie przemyśleć, dlaczego potrzebujesz tych samych danych zarówno w USA, jak i UE. W końcu są to różni użytkownicy.

Praca w środowisku wieloregionalnym jest o wiele bardziej złożona i zwykle daje wydajność z powodu nieodłącznych opóźnień między USA i UE.

Nawet jeśli wyjdziesz z RDS i spróbujesz zreplikować dane między regionami, asynchronicznie lub synchronizując, będziesz mieć problemy z opóźnieniami, które obniżą wydajność twoich użytkowników.

Najłatwiej jest skonfigurować dedykowany serwer RDS w UE i nie współużytkować niczego między tymi instancjami.

Chłopak
źródło
Witaj, problem polega na tym, że klienci z UE i USA muszą mieć dostęp do tych samych danych. Czy jest jakieś obejście / pomysł?
Ion
Jak często te dane są aktualizowane (jeśli nie często można łatwo replikować je między regionami)?
Guy
Dane są często aktualizowane ogólnie. Będą one coraz częściej aktualizowane wraz z rosnącą liczbą użytkowników. Myślę, że musimy szukać innych rozwiązań.
Ion
4

RDS doskonale nadaje się do wdrożeń w jednym regionie ze względu na małe opóźnienia, ale staje się inną historią, gdy zaczynasz rozszerzać się na różne regiony. Jeśli chcesz zachować instancję RDS, możesz skonfigurować własny serwer MySQL w regionie UE i wykonywać replikację. W ten sposób prędkość będzie znacznie bardziej akceptowalna.

Nathan C.
źródło
1
Czy istnieje jakiś (półautomatyczny) sposób replikacji instancji RDS w odstępie czasu? Jakieś pomysły? Przypuszczam, że ta replika byłaby również tylko do odczytu, prawda?
Ion
AWS domyślnie obsługuje repliki do odczytu, to prawda: aws.amazon.com/rds/faqs/#86 - Jestem pewien, że można wykonywać replikację odczytu / zapisu, ale jest to poza zakresem SF (sprawdziłbym z naszym Strona DBA).
Nathan C
Tak, ale repliki odczytu są tworzone w tym samym regionie. Potrzebujemy repliki do odczytu w innym regionie, a kiedy ostatnio sprawdziłem, nie obsługują tego.
Ion
2

Ostatnio AWS podążyło w kierunku, o który wcześniej pytałem w swoim pytaniu, ogłaszając repliki odczytu RDS między regionami . Jest to jednak tylko mały krok w kierunku prawdziwej konfiguracji obejmującej wiele regionów.

Jon
źródło
1

Wierzę, że tego właśnie chcesz. Replikacja RDS na EC2 z uruchomionym mysql w innym regionie.

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

użytkownik195585
źródło
Witaj w Server Fault! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
slm
Dzięki, wydaje się interesujące! To jest bardziej odpowiedni link: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Ion
0

Jednym z możliwych rozwiązań w celu poprawy opóźnień może być użycie Amazon ElastiCache (który jest zasadniczo Memcached pod pokrywami).

Będziesz musiał utworzyć Węzeł ElastiCache w każdym regionie (US-EST i EU), a logika aplikacji (EC2) będzie używać węzła pamięci podręcznej, gdy tylko będzie to możliwe. Jeśli pójdziesz tą drogą, będziesz musiał przebudować aplikację 1) wiedzieć, co buforować, a kiedy i 2) pobrać jak najwięcej z lokalnego węzła ElastiCache.

Ricardo Rossi
źródło