Keepalived 通知脚本配置

当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

相关推荐
2501_9277730721 分钟前
Linux操作系统编程——网络
linux·运维·网络
jiunian_cn27 分钟前
【Linux】线程
android·linux·运维·c语言·c++·后端
喜欢你,还有大家35 分钟前
Linux笔记8——shell编程基础-2
linux·服务器·笔记
泽虞1 小时前
《LINUX系统编程》笔记p3
linux·运维·服务器·c语言·笔记·面试
苹果醋32 小时前
Java并发编程-Java内存模型(JMM)
java·运维·spring boot·mysql·nginx
dingcb1682 小时前
4090服务器无法sudo apt update 问题解决
运维·服务器
头发那是一根不剩了3 小时前
服务器硬盘进行分区和挂载
linux·运维·服务器
心一信息4 小时前
如何通过华为无线控制器添加一个名为yunwei的无线网络
运维·网络·华为
stark张宇4 小时前
Linux 零基础入门,看这一篇就够了
linux·服务器
TDengine (老段)4 小时前
TDengine IDMP 运维指南(4. 使用 Docker 部署)
运维·数据库·物联网·docker·时序数据库·tdengine·涛思数据