Я пытаюсь масштабировать наше веб-приложение (PHP, MySQL, memcache) по схеме с несколькими регионами. В настоящее время мы используем установку с двумя экземплярами EC2 за экземпляром ELB и RDS, все они находятся в регионе Восток США (Вирджиния).
Мы также хотели бы иметь присутствие в регионе ЕС (Ирландия). Это означает наличие хотя бы нового экземпляра EC2 (идентичного другим, обслуживающего то же приложение).
Я скопировал желаемый AMI, установил новый экземпляр, установил ту же конфигурацию ELB (необходим для завершения SSL) и настроил маршрутизацию на основе задержки в Route53. И это работает так, как было предложено.
Но у клиентов из ЕС есть проблемы со скоростью. Это связано с тем, что экземпляры EU EC2 подключаются к экземпляру RDS в США. Насколько мне известно, Amazon еще не включил многорегиональную репликацию RDS.
Есть ли у вас какие-либо предложения о том, как правильно ускорить всю настройку при использовании одного экземпляра RDS?
Кроме того, есть какие-нибудь идеи в целом о том, как масштабировать ситуацию? В идеале мы хотели бы продолжать использовать технологию RDS по разным причинам. Тем не менее, я открыт для предложений (думаю, следующей идеей будет размещение наших собственных серверов MySQL).
Вы должны хорошо подумать, почему вам нужны одни и те же данные как в США, так и в ЕС. Ведь это разные пользователи.
Работа в среде с несколькими регионами намного сложнее и обычно дает обратную производительность из-за внутренней задержки между США и ЕС.
Даже если вы выйдете из RDS и попытаетесь реплицировать данные между регионами, асинхронно или синхронно, вы столкнетесь с проблемами задержки, которые снизят производительность ваших пользователей.
Самый простой способ - настроить выделенный сервер RDS в ЕС и ничего не делить между этими экземплярами.
RDS отлично подходит для развертываний в одном регионе из-за низкой задержки, но это становится другой историей, когда вы начинаете расширяться в разные регионы. Если вы хотите сохранить экземпляр RDS, вы можете настроить свой собственный сервер MySQL в регионе ЕС и выполнить репликацию. Таким образом, скорость будет намного более приемлемой.
Недавно AWS сделала шаг в направлении, о котором я ранее спрашивал в своем вопросе, объявив межрегиональные реплики чтения RDS. Однако это лишь небольшой шаг к настоящей мультирегиональной настройке.
Я считаю, что это то, что вам нужно. Репликация RDS на EC2 с запущенным mysql в другом регионе.
Одним из возможных решений для уменьшения задержки может быть использование Amazon ElastiCache (который, по сути, является Memcached).
Вам нужно будет создать узел ElastiCache в каждом регионе (US-EST и EU), а логика вашего приложения (EC2) будет использовать этот узел кэша, когда это возможно. Если вы пойдете по этому пути, вам придется заново спроектировать свое приложение: 1) знать, что и когда кэшировать, и 2) получить как можно больше с локального узла ElastiCache.