
Como implementar isso sem systemd (chkconfig, etc.)?
Gostaria de reiniciar o PostgreSQL, Mongod e RabbitMQ.
Responder1
Para fazer a recuperação automática de serviços, você pode usar o monit
. É um serviço bastante leve e fácil de usar.
Para instalá-lo no Debian faça:
sudo apt-get install monit
Como instalar e configurar o Monit
Quanto à configuração, você edita /etc/monit/monitrc
e reinicia o serviço.
Por exemplo, para monitorar se o daemon está em execução e se o serviço está respondendo nas portas correspondentes e configurar a recuperação automática para PostgreSQL, RabbitMQ e 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
Para mais serviços, consulte:Monitorar wiki
Monit também permite enviar um e-mail em regras, e atuar na carga do servidor. Aconselho qualquer pessoa a investigar melhor.
Responder2
RedHat 6 usasubir na vidacomo o sistema de inicialização.
Você precisa criar uma definição de inicialização adequada /etc/init
(nota: NOT /etc/init.d
).
por exemplo (mas pode precisar de depuração)/etc/init/myservice
start on runlevel [2345]
stop on runlevel [S016]
respawn
exec /code/to/program
O respawn
valor fará com que program
seja reiniciado se terminar.