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).
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.
źródło
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.
źródło
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/
źródło
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.
źródło