系統服務自動重啟方案
阿新 • • 發佈:2022-03-11
目的:當服務掛掉後自動重啟服務
方案一:crontab 定時任務檢測與重啟。
1、建立服務執行檢測與重啟指令碼: appRestart.sh
#!/bin/sh # 進行jar所在目錄 cd /opt/app/ source /etc/profile # 查詢程式是否存活 project=`ps -ef|grep appServer-1.0.0|grep -v grep|wc -l` date=`date` server_name="appServer-1.0.0" # $? -ne 0 不存在 # $? -eq 0存在 if [ $project -eq 0 ] then nohup java-jar appServer-1.0.0.jar >> nohup.log & #重啟服務 echo `date +%Y-%m-%d` `date +%H:%M:%S` $server_name >> ./restart.log #記錄重啟日誌 fi
2、配置crontab 定時任務
crontab -e 編輯定時任務配置
新增配置,一分鐘執行一次 :
*/1 * * * * /home/app/schdule/appRestart.sh >> /home/app/schdule/appRestart.log
crontab -l 檢視定時任務配置。
方案二:利用Keepalived的vrrp_script進行監測與重啟。
該方案適用於 Keepalived+Nginx 叢集做VIP,適用於對高可用要求較高的系統。當只有單節點時,可充當服務健康監控與重啟功能。
1、安裝Keepalived服務(略)。
單節點配置時注意設定 state 為 master
2、配置vrrp_script指令碼
vrrp_script checkAndRestart { script "/home/appRestart.sh" #指向重啟指令碼 interval 3 #每3秒執行一次指令碼 weight -20 } vrrp_instance test { ... track_script { checkAndRestart } ... }
--end