Centos7.4 监控DRBD脑裂,自动发送邮件 脚本

环境说明:
两台Centos 7.4 ,已配置好DRBD的服务器
主机名:nfs01 IP:192.168.189.75 ens33 192.168.229.75 ens37 192.168.217.75 ens38
主机名:nfs02 IP:192.168.189.76 ens33 192.168.229.75 ens37 192.168.217.75 ens38

ens33----> 192.168.189.0/24 局域网内网网络
ens37----> 192.168.229.0/24 用于心跳网络
ens38----> 192.168.217.0/24 用于DRBD之间的数据传输网络
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
两台服务器必须实现免密钥登录(包括自己的IP),因为脚本是放在两台服务器中的一台(nfs01)上面。
如果脚本是放在其他服务器上,需要这台服务器能免密钥登录到两台DRBD服务器。
一、两台服务器免密钥登录,自行配置。
二、编写脚本:
nfs01 上操作:
mkdir -p /script && cd /script
vim chk_drbd_stat.sh
#!/bin/bash
#Primary 上,查看对端的DRBD 状态
MASTER_SEC_DRBD_STAT=`ssh root@192.168.189.75 cat /proc/drbd |awk -F '[:/ ]+' 'NR==3{print $7}'`
#Secondary 上,查看对端的DRBD 状态
SEC_MASTER_DRBD_STAT=`ssh root@192.168.189.76 cat /proc/drbd |awk -F '[:/ ]+' 'NR==3{print $7}'`
if [[ $MASTER_SEC_DRBD_STAT == "Unknown" ]] && [[ $SEC_MASTER_DRBD_STAT == "Unknown" ]];then
echo -e "`date`\nDRBD Status:0 . please repair quickly.\n" >>/tmp/drbd_status.log
sleep 3
mail -s "$(date +%U%T) DRBD 脑裂问题" 331758730@qq.com </tmp/drbd_status.log
if [ $? -eq 0 ];then
echo -e "The mail was sent successfully.\n"
echo -e "If you haven't received it, Please add the local domain name to the whitelist of the mailbox.\n"
else
echo -e "Mail delivery failed. Please check !!!!!!!"
fi
fi

保存退出。
chmod +x ./ chk_drbd_stat.sh


三、模拟测试:
nfs01 nfs02 都断开ens37 ens38 ,在nfs01上面执行脚本。
nfs01 上执行脚本:
ifdown ens37
ifdown ens38
没有ifdown 命令,请安装net-tools






恢复nfs01 nfs02 ens37 ens38 网络,DRBD状态恢复
ifup ens37
ifup ens38
在nfs01 上再执行脚本:
是不会再发送邮件了。

四、将脚本添加到计划任务:
vim /etc/crontab

保存退出。