Автоматический перезапуск служб после сбоя в rhel 6

Автоматический перезапуск служб после сбоя в rhel 6

Как это реализовать без systemd (chkconfig и т. д.)?

Я хотел бы перезапустить PostgreSQL, Mongod и RabbitMQ.

решение1

Для автоматического восстановления сервисов можно использовать monit. Это довольно легкий и простой в использовании сервис.

Чтобы установить его в Debian, выполните:

sudo apt-get install monit

Как установить и настроить Monit

Что касается настройки, вы редактируете /etc/monit/monitrcи перезапускаете службу.

Например, чтобы отслеживать, запущен ли демон и отвечает ли служба на соответствующих портах, а также настроить автоматическое восстановление для PostgreSQL, RabbitMQ и mongoDB:

check process postgres with pidfile /var/postgres/postmaster.pid
   group database
   start program = "/etc/init.d/postgresql start"
   stop  program = "/etc/init.d/postgresql stop"
   if failed unixsocket /var/run/postgresql/.s.PGSQL.5432 protocol pgsql 
      then restart
   if failed host 192.168.1.1 port 5432 protocol pgsql then restart

check host mongodb with address localhost
    start program = "/usr/bin/sudo /opt/database/mongo/bin/mongod"
    stop program = "/usr/bin/sudo /usr/bin/pkill -f mongod"
    if failed port 28017 protocol HTTP
        request /
        with timeout 10 seconds
        then start

check process rabbitmq-server with pidfile /var/run/rabbitmq.pid  
   group rabbitmq  
   start program "/etc/init.d/rabbitmq-server start"  
   stop program "/etc/init.d/rabbitmq-server stop"  
   if failed port 5672 type tcp then restart  
   if 3 restarts within 3 cycles then timeout  

Для получения дополнительной информации об услугах см.:Монит вики

Monit также позволяет отправлять электронное письмо в правилах и действовать в нагрузке сервера. Я бы посоветовал всем изучить его получше.

решение2

RedHat 6 используетвыскочкакак система инициализации.

Вам необходимо создать правильное определение init в /etc/init(примечание: НЕ /etc/init.d).

например (но может потребоваться отладка)/etc/init/myservice

start on runlevel [2345]
stop on runlevel [S016]

respawn
exec /code/to/program

Значение respawnприведет programк перезапуску в случае его завершения.

Связанный контент