Comment redémarrer automatiquement les services en cas de panne?
Script Shell pour redémarrer les services en cas de panne / crash
C'est commun pour le process tomber en panne/descendre pour diverses raisons, sur lesquelles vous pouvez enquêterate et résoudre les problèmes, mais cela peut prendre un peu de temps.
Cependant, une chose que vous pouvez faire immédiatementately pour réduire les temps d'arrêt pour mieux disponibilité c'est d'automatiserate redémarrage du process si c'est en baisse.
Faisons cela par l'autoroute - scripts shell
Vous pouvez utiliser les scripts shell suivants pour exécuter crontab, qui vérifiera les services toutes les 15 minutes (vous pouvez ajuster le temps d'intervalle) et démarrera s'il est détecté qu'il ne fonctionne pas. Cela paraît bien?
Dans cet article, je vais donner deux exemples de démarrage des services en cas de panne.
Si vous utilisez CentOS / RHEL 7+, vous pouvez également vérifier cet article expliquant l'utilisation de systemd recommencer.
Redémarrage automatique de MySQL, PHP-FPM, Nginx si en panne
Il y a quelques semaines, j'ai déplacé Geek Flare vers DigitalOcean avec Moteur facile et MariaDB s'est écrasée deux fois en une semaine.
Vous voyez, il s'est écrasé tôt le matin et est resté en panne pendant plus de 3 heures, ce qui n'est pas bon. C'est mon blog, donc non $$$ impact mais je me sens toujours mal pour ça.
D'accord, showtime maintenant…
- Create un fichier utilisant les éditeurs vi à l'emplacement souhaité (dans cette démo, je le placerai sous /opt/startifdown.sh)
- Copiez et collez le script ci-dessous dans le fichier et enregistrez-le
#!/bin/bash
#Scripts to start services if not running
ps -ef | grep nginx |grep -v grep > /dev/null
if [ $? != 0 ]
then
/etc/init.d/nginx start > /dev/null
fi
ps -ef | grep php5-fpm |grep -v grep > /dev/null
if [ $? != 0 ]
then
/etc/init.d/php5-fpm start > /dev/null
fi
ps -ef | grep mysql |grep -v grep > /dev/null
if [ $? != 0 ]
then
/etc/init.d/mysql start > /dev/null
fi
- Changer l'autorisation du fichier pour qu'il soit exécutable
chmod 755 startifdown.sh
Testez-le manuellementally pour garantir que le script est exécutable.
Vous pouvez arrêter le service et utiliser le script pour vérifier s'il démarre. Une fois que vous êtes satisfait, vous pouvez le mettre dans cron pour qu'il s'exécute toutes les 15 minutes.
*/1 * * * * /opt/startifdown.sh
Référer mon article de crontab si vous avez besoin d'inspiration pour changer le temps d'intervalle.
Maintenant, ce petit script s'occupera de démarrage des services en cas de panne et je n'aurai pas ces 3 heures de temps d'arrêt.
Beaucoup mieux!
Redémarrage automatique de WebSphere DMGR, Nodeagent, JVM en cas d'arrêt
Create un fichier avec les scripts suivants – je le nommerai startwasifdown.sh
#!/bin/bash
#Scripts to start services if not running
#Specify DMGR Path Here
DMGR=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01
#Specify Profile Path Here
Profile=/opt/IBM/WebSphere/AppServer/profiles/AppSrv01
ps -ef | grep dmgr |grep -v grep > /dev/null
if [ $? != 0 ]
then
$DMGR/bin/startManager.sh > /dev/null
fi
ps -ef | grep nodeagent |grep -v grep > /dev/null
if [ $? != 0 ]
then
$Profile/bin/startNode.sh > /dev/null
fi
ps -ef | grep server1 |grep -v grep > /dev/null
if [ $? != 0 ]
then
$Profile/bin/startServer.sh server1 > /dev/null
fi
Remarque: Modifiez le chemin en fonction de votre environnement et ajoutez plus de lignes pour plusieurs JVM.
- Changer l'autorisation du fichier pour qu'il soit exécutable
chmod 755 startwasifdown.sh
Testez-le manuellementally, et une fois que vous en êtes satisfait, vous pouvez le mettre dans cron pour l'exécuter toutes les 15 minutes ou à chaque fois.ateça te va.
*/1 * * * * /opt/ startwasifdown.sh
Ceci est juste une ligne directrice pour vous permettre d'automatiserate le truc.
Vous aimez l'automatisation? En savoir plus script shell bash.