Как перезапустить Tomcat на удаленном сервере в случае сбоя приложения? - PullRequest
3 голосов
/ 02 февраля 2011

Предположим, я разместил Java-приложение на Tomcat на удаленном сервере, например, Amazon AWS.Что вы рекомендуете перезапустить tomcat АВТОМАТИЧЕСКИ, если приложение выходит из строя неисправимым способом?Может быть, есть ли способ сделать это из самого приложения, чтобы, если я увижу, что исключение очень неприятное, я могу все это перезапустить?

Ответы [ 3 ]

4 голосов
/ 03 февраля 2011

Одной из возможностей может быть установка сторожевого устройства, которое отслеживает (например, через порт, некоторые пользовательские проверки и т. Д.) Приложение и перезапускает весь сервер при необходимости. Это может быть даже скрипт bash, который выполняет catalina.sh run на управляемой суб-оболочке.

Достойные системы мониторинга также позволяют это. Например, Zabbix позволяет настраивать контрольные проверки и действия, поэтому, если служба недоступна, она может предварительно перезапустить ее.

Другим решением будет использование Tomcat manager для остановки / запуска существующего приложения. Это можно сделать с помощью скрипта Apache Ant, который вызывает соответствующий URL-адрес менеджера. Это решение, однако, не применимо, если приложение «умирает» и отключает весь сервер.

3 голосов
/ 24 апреля 2012

Интересное решение без каких-либо программ здесь: http://aujava.wordpress.com/2006/08/16/watchdog-for-tomcat/

Вам просто нужно добавить isalive.html (с одним текстом «YES») в ваше приложение и использовать следующий скрипт:

#!/bin/sh
HOST=127.0.0.1
PORT=8080

#infinite loop
while [ 1 ]
do
    #try to access tomcat's page
    RES=`wget -O - -o /dev/null --proxy=off http://${HOST}:${PORT}/isalive.html | awk '{ print $1 }'`
    echo got ${RES}
    #decide on reply
if [ "$RES" = "YES" ]
then
    echo tomcat is responding on $HOST:$PORT
else
    echo tomcat seems to be dead.
    echo Killing...
    for thepin in `ps -Af | grep -v grep | grep tomcat | grep catalina | awk '{ print $2 }'`
    do
        kill -9 ${thepin}
    done
    echo Starting...
    sudo -u tomcat /usr/local/tomcat/bin/startup.sh
fi

sleep 60
done
1 голос
/ 05 февраля 2011

Я бы порекомендовал посмотреть на утилиту monit. С помощью monit вы можете легко отслеживать службу, использование ресурсов, проверять URL-адреса, чтобы убедиться, что служба реагирует должным образом, и инициировать перезапуск при возникновении проблем http://mmonit.com/monit/documentation/monit.html#connection_testing_using_the_url_notation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...