Tomcat перезагружается на AWS ELB - PullRequest
0 голосов
/ 14 июля 2011

Как люди мешают Tomcat пытаться обслуживать трафик при перезапуске за балансировщиком эластичной нагрузки Amazon Web Services?

Нашим приложениям требуется до 40 секунд для перезапуска после установки на них нового программного обеспечения. Это слишком маленькое окно для того, чтобы ELB могли его заметить, поэтому экземпляр Tomcat продолжает получать перенаправленные запросы, ожидая инициализации своих веб-приложений, что приводит к тому, что пользователи получают 500 страниц с ошибками.

Есть ли общий способ решения этой проблемы?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2012

Франк прав, вы должны использовать механизм проверки здоровья.Тем не менее, чаще всего вы можете выполнять эту проверку состояния каждые 6 секунд.Что произойдет, если за это время ваше приложение будет перезапущено или повторно развернуто?К сожалению, ELB не знает этого и продолжает отправлять трафик в этот экземпляр.Таким образом, в худшем случае в течение (приблизительно) 6 секунд посетители вашего сайта, которые обслуживаются этим экземпляром, получат сообщение об ошибке или дамп трассировки.

Я связался с Amazon и попросил у них кнопку PAUSE для каждого экземпляра.он зарегистрирован в ELB, поэтому мы можем указать ELB прекратить отправку запроса этому экземпляру.Кому-то там понравилась идея, и она пообещала передать ее разработчикам.По крайней мере, это был бы простой способ избежать получения запросов istance, если он не готов.

Один совет, не связанный напрямую с ELB, но с Tomcat: у Tomcat теперь есть способ загружать WAR с версиями.вместо загрузки файла «root.war» вы можете загрузить файл «root ## 2012-04-30.war» (например), и Tomcat развернет новую версию той же WAR.Эта новая версия не будет прерывать текущую версию, которая отвечает на запросы, и как только новая версия будет готова, она начнет принимать трафик вместо старой версии.Таким образом, ваш экземпляр никогда не прекращает отвечать на запросы, поэтому ELB не нужно останавливать отправку запросов туда.

1 голос
/ 24 октября 2011

Вы можете поиграть с параметром Проверка состояния : настроить специальную html-страницу, например /health-check.html, в параметре Target.Если вы хотите завершить работу экземпляра, удалите / переименуйте эту страницу, затем перезапустите ваш tomcat и, когда он заработает, переименуйте страницу в /health-check.html.

...