Amazon EC2- множество микроэкземпляров против одного малого / среднего экземпляра
У меня есть приложение чата, использующее стек Openfire, Tomcat6 и MySQL.
В настоящее время я установил все эти серверы на одном микроэкземпляре Linux (613 МБ памяти). Даже при низкой пользовательской базе 10-20 я сталкиваюсь с перегрузкой процессора, которая здесь совершенно очевидна.
Поскольку я новичок в Amazon EC2, может кто-нибудь подсказать мне, как масштабировать мою архитектуру в соответствии с использованием трафика?
- я должен использовать отдельные микро экземпляры для каждого сервера приложений (openfire,mysql,tomcat6)
Должен ли я использовать один маленький или средний экземпляр для всего стека сервера.
Некоторые факторы в контексте:
- высокая зависимость от MYSQL
- высокое использование памяти из-за передачи файлов
- веб-приложение, взаимодействующее с другими сервисами Amazon, такими как S3,SES
3 ответа
Я бы использовал как минимум m1.small или лучше m1.large Instance. Микроэкземпляр действительно предназначен только для разработки, потому что 613 МБ скоро может не хватить даже для нулевых пользователей. Кроме того, вы, скорее всего, увидите много времени на кражу процессора, и ваш сервер не будет реагировать некоторое время после того, как у вас будет небольшой пик процессора. Это очень раздражает.
Я бы попытался запустить весь стек на каждом экземпляре, кроме mysql-db. Посмотрите на RDS! Вам не нужно настраивать высокодоступную инфраструктуру master-slave mysql самостоятельно!
Не используйте микроэкземпляры для производства из-за их непредсказуемого дросселя ЦП. Более экономично запускать все в одном экземпляре, но если вы планируете расти и масштабироваться, лучше спроектировать и разработать приложение в нескольких случаях.
В долгосрочной перспективе будет предпочтительнее отделить сервер приложений от базы данных, чтобы обеспечить максимальную гибкость и масштабируемость каждого уровня. На данный момент RDS является хорошим вариантом, но имейте в виду, что он ограничен одним экземпляром, если у вас неожиданный всплеск трафика сверх пропускной способности самого большого экземпляра, у вас могут возникнуть простои, а затем вам потребуется настроить кластеризация с дополнительными экземплярами, которая является сложной. Еще одна опция в EC2 - это облачная служба баз данных Xeround, которая отличается от RDS тем, что может автоматически масштабироваться до дополнительных экземпляров для обеспечения дополнительной пропускной способности и автоматически обрабатывать кластеризацию. Что касается сервера приложений, вы можете автоматически масштабировать его с помощью функции Amazon CloudWatch.