
systemd (chkconfig など) なしでこれを実装するにはどうすればよいですか?
PostgreSQL、Mongod、RabbitMQを再起動したいと思います。
答え1
サービスの自動回復を行うには、 を使用できますmonit
。これは、かなり軽量で使いやすいサービスです。
Debian にインストールするには、次のようにします。
sudo apt-get install 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 システムとして。
適切な init 定義を/etc/init
(注意: /etc/init.d
) に作成する必要があります。
例(ただしデバッグが必要になる場合があります)/etc/init/myservice
start on runlevel [2345]
stop on runlevel [S016]
respawn
exec /code/to/program
終了した場合は、値が再起動さrespawn
れます。program