之前在维护 ETCD 集群时,发现ETCD有时会意外崩溃,在定位到具体问题之前,为了保证集群可用,开发了一个简单的服务保活脚本,主要流程是如下:每分钟检查一下服务是否存在,如果服务不存在,则重新启动。
具体脚本如下:
#!/bin/bash
while true
do
procid=$( ps -ef | grep etcd | grep -v grep | wc -l ) //获取 etcd 服务进程ID
if [ $procid -eq 0 ] // 如果进程ID不存在,则服务停止,打印必要日志,并重启服务
then
time=$(date "+%Y-%m-%d %H:%M:%S")
echo "restart the etcd begin at ${time}"
./start.sh > Logs/etcd.logs
fi
sleep 60 //存活检查频率。这里是每分钟检查一次
done