2013-03-10 4 views
0

Я устанавливаю Railo на экземпляр AWS EC2 (Ubuntu). Я наткнулся на это guide for installing Railo on Ubuntu with multiple Tomcat7 instances, которая запрашивает следующий вопрос:У нескольких экземпляров Tomcat есть смысл в экземплярах EC2?

Учитывая способность «раскрутить» несколько экземпляров EC2 и балансировки нагрузки с эластичным IP/Route 53, делает настройки каждого отдельного экземпляра EC2 для запуска нескольких экземпляров Tomcat обеспечивают дополнительная выгода? Стоит ли это, или он просто лишний?

+0

Я подозреваю, что с tomcat вам не понадобится. Основными причинами запуска нескольких потоков является использование нескольких ядер с однопоточными приложениями и предоставление слушателям, когда другие потоки могут быть заблокированы io. – datasage

ответ

2

Вам нужно будет определить свои узкие места: если ваш сервер исчерпал память с помощью одного кота, нет смысла использовать второй кота. Кроме того, если ваш процессор максимален, обычно нет преимущества в расширении второго кота.

Однако, если вы все равно балансируете между разными серверами, у вас достаточно центрального процессора и памяти на одной машине, вы можете получить что-то от запуска двух кошек на одной машине: например. вы можете удалить один из них за раз из loadbalancer, обновить его и снова добавить в балансировщик - затем сделать то же самое для второго.

Но ... вы можете сделать это с одним tomcat на VM в любом случае.

Я боюсь: вам придется ответить на этот вопрос себе, измерив: если нагрузка, которую вы получаете, может обрабатываться 4 котами на 4 экземплярах EC2, может ли она также обрабатываться 4 котами на 2 Экземпляры EC2? Сколько ресурсов (процессор, память, ввод-вывод) обычно у вас есть на каждом из экземпляров EC2, которые вы запускаете? Все это сильно зависит от вашего usecase и того, что на самом деле делают машины.

Другие примеры: Если ваша пропускная способность сети насыщена, когда у вас остался центральный процессор и память, второй котел не будет использовать больше полосы пропускания на машине - это снизит пропускную способность на другом коте, поскольку им придется делиться пропускная способность соединения.

Если ваша пропускная способность сети не насыщена, а ваш tomcat ожидает внешних ресурсов (например, веб-сервисов, баз данных), имеет смысл использовать избыточный процессор и память со вторым экземпляром.

Но тогда есть точка упругости: если один экземпляр EC2 опустится, вам понадобится два ваших кота. Можете ли вы терпеть это или это то, почему вы отправились в облако в первую очередь?

+0

Чтобы уточнить: «не использовать в начале секунды» ...«нет необходимости разворачивать вторую» - оба эти утверждения относятся ко второму * Tomcat *, а не к второму экземпляру EC2, не так ли? –

+0

Правильно, я отредактировал ответ, чтобы сделать его явным –

1

Добавление к ответу Олафа, это зависит от ваших требований к отказоустойчивости и стоимости по нескольким причинам. Я помню, как читал статью о том, что более крупный экземпляр дешевле, чем несколько меньших экземпляров с одинаковой емкостью, я не помню URL-адреса, но легко выполнить математику.

экземпляры Amazon не должны рассматриваться как постоянные, и хост-машина может спуститься в любой момент, взяв с собой все виртуальные машины, включая ваши. Таким образом, вы потеряете все экземпляры Tomcat в этом экземпляре EC2. Конечно, вы можете обеспечить достаточно, чтобы потеря не была проблемой, но вот где вы знаете свое приложение.

Но есть что-то еще: с несколькими экземплярами Tomcat на одной машине, вы должны управлять портами, которые они слушают, чтобы не было столкновения. И настроить балансировщик эластичной нагрузки, чтобы использовать все из них. Doable, но немного беспорядочно, чем несколько экземпляров EC2, прослушивающих один и тот же порт.