Automatischer Neustart der Dienste nach einem Absturz in Rhel 6

Automatischer Neustart der Dienste nach einem Absturz in Rhel 6

Wie lässt sich dies ohne systemd (chkconfig usw.) implementieren?

Ich möchte PostgreSQL, Mongod und RabbitMQ neu starten.

Antwort1

Zur automatischen Wiederherstellung von Diensten können Sie verwenden monit. Es handelt sich um einen relativ leichten und einfach zu verwendenden Dienst.

Um es in Debian zu installieren, gehen Sie wie folgt vor:

sudo apt-get install monit

So installieren und konfigurieren Sie Monit

Zur Konfiguration bearbeiten Sie /etc/monit/monitrcden Dienst und starten ihn neu.

So können Sie beispielsweise überwachen, ob der Daemon ausgeführt wird und ob der Dienst auf den entsprechenden Ports antwortet, und die automatische Wiederherstellung für PostgreSQL, RabbitMQ und mongoDB konfigurieren:

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  

Weitere Dienste finden Sie unter:Monit-Wiki

Monit ermöglicht es Ihnen auch, E-Mails in Regeln zu senden und auf die Serverauslastung zu reagieren. Ich würde jedem raten, sich das genauer anzusehen.

Antwort2

RedHat 6 verwendetEmporkömmlingals Init-System.

Sie müssen eine ordnungsgemäße Init-Definition erstellen /etc/init(Hinweis: NICHT /etc/init.d).

zB (muss aber möglicherweise debuggt werden)/etc/init/myservice

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

respawn
exec /code/to/program

Der respawnWert führt programzu einem Neustart, wenn er beendet wird.

verwandte Informationen