当keepalived的状态变化时,可以自动触发脚本的执行,比如:发邮件通知用户
默认以用户keepalived_script身份执行脚本
如果此用户不存在,以root执行脚本可以用下面指令指定脚本执行用户的身份
global_defs {
......
script_user <USER>
......
}
一、通知脚本类型
当前节点成为主节点时触发的脚本
notify_master <STRING> | <QUOTED-STRING>
当前节点转为备节点时触发的脚本
notify_backup <STRING> | <QUOTED-STRING>
当前节点转为"失败"状态时触发的脚本
notify_fault <STRING> | <QUOTED-STRING>
通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知
notify <STRING> | <QUOTED-STRING>
当停止VRRP时触发的脚本
notify <STRING> | <QUOTED-STRING>
二、邮件配置
1、安装邮件发送工具
[root@ka1 ~]# yum install mailx -y
2、QQ邮箱配置
vim /etc/mail.rc
set from=QQ邮箱set smtp=smtp.qq.com #发送邮箱服务器
set smtp-auth-user=QQ邮箱
set smtp-auth-password=QQ邮箱授权码
set smtp-auth=login
set ssl-verify=ignore
IMAP/SMTP 设置方法
用户名/帐户: 你的QQ邮箱完整的地址
密码: 生成的授权码
电子邮件地址: 你的QQ邮箱的完整邮件地址
接收邮件服务器: imap.qq.com,使用SSL,端口号993
发送邮件服务器: smtp.qq.com,使用SSL,端口号465或587
POP3/SMTP 设置方法
用户名/帐户: 你的QQ邮箱完整的地址
密码: 生成的授权码
电子邮件地址: 你的QQ邮箱的完整邮件地址
接收邮件服务器: pop.qq.com,使用SSL,端口号995
发送邮件服务器: smtp.qq.com,使用SSL,端口号465或587
QQ邮箱生成授权码:
3、在 vrrp_instance VI_1 语句块的末尾以下内容
vim /etc/keepalived/keepalived.conf
bash
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
重启服务:
systemctl restart keepalived.service
4、发送测试邮箱
[root@ka1 ~]# echo test message |mail -s test QQ邮箱
三、实现Keepalived 状态转化的通知脚本
1、keepalived节点ka1、ka2脚本配置:
vim /etc/keepalived/mail.sh
bash
#!/bin/bash
mail_dest='QQ邮箱@qq.com'
mail_send()
{
mail_subj="$HOSTNAME to be $1 vip 转移"
mail_mess="`date +%F\ %T`: vrrp 转移,$HOSTNAME 变为 $1"
echo "$mail_mess" | mail -s "$mail_subj" $mail_dest
}
case $1 in
master)
mail_send master
;;
backup)
mail_send backup
;;
fault)
mail_send fault
;;
*)
exit 1
;;
esac
给脚本执行权限:
chmod +x /etc/keepalived/mail.sh
2、ka1、ka2编辑keepalived.conf配置文件
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
3、在ka1、ka2设置好QQ邮箱配置
vim /etc/mail.rc
4、测试结果
1、先重启ka1的服务
2、再重启ka2的服务
因为ka1的优先级要比ka2高,所以ka2还是变成backup。
3、再关闭ka1的服务
4、再关闭ka2的服务,然后重启ka2
5、再重启ka1