环境说明: 两台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
保存退出。