上一篇博客我们了解了keepalived的架构以及安装、VIP的配置和高可用相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13634755.html;今天我们来聊一下keepalived的邮件通知配置;

  一个高可用服务,应该具备当服务发生故障,能够第一时间做故障转移,从而保证服务的可用性,同时还应该第一时间通知管理员,以便管理员能够知道服务发生了转移,这样一来管理员也能第一时间去排查故障,让故障的节点在很短的时间重新上线,避免下次故障导致服务不可用;keepalived的故障通知邮件机制,是通过判断当前节点keepalived的角色来触发邮件通知;

  keepalived的邮件通知配置

  notification_email {...}:该指令用于应用一段邮件接收者的一个配置段,用大括号括起来,里面可以配置多个邮件接收者;

  notification_email_from:该指令用于指定邮件发出者的邮箱;

  smtp_server:该指令用于指定邮件服务器地址;

  smtp_connect_timeout:该指令用于指定连接邮件服务器的超时时长,默认30秒;

  notify_master:配置节点成为master角色的触发的动作;通常为执行一个脚本;

  notify_backup:配置节点角色转换为backup触发的动作;

  notify_fault:配置节点为失败状态触发的动作;

  示例:配置node01在发生故障转移时的邮件接收者为本机的root用户,邮件服务器地址为127.0.0.1,邮件发出者为node01_keepalived@localhost

  1、编写邮件通知脚本

[root@node01 keepalived]# cat notify.sh
#!/bin/bash
#
contact='root@localhost'
notify() {
local mailsubject="$(hostname) to be $1, vip floating"
local mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
} case $1 in
master)
notify master
;;
backup)
notify backup
;;
fault)
notify fault
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
[root@node01 keepalived]#

  提示:该脚本主要实现了,根据传递不同参数来发送不同内容的邮件;

  给脚本加上执行权限,并把脚本从node01复制到node02上

  安装mail命令

[root@node01 keepalived]# mail
-bash: mail: command not found
[root@node01 keepalived]#
[root@node01 keepalived]# yum install mailx
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(2/2): epel/x86_64/primary_db | 6.9 MB 00:00:01
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package mailx.x86_64 0:12.5-19.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved =====================================================================================================
Package Arch Version Repository Size
=====================================================================================================
Installing:
mailx x86_64 12.5-19.el7 base 245 k Transaction Summary
=====================================================================================================
Install 1 Package Total download size: 245 k
Installed size: 466 k
Is this ok [y/d/N]: y
Downloading packages:
mailx-12.5-19.el7.x86_64.rpm | 245 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mailx-12.5-19.el7.x86_64 1/1
Verifying : mailx-12.5-19.el7.x86_64 1/1 Installed:
mailx.x86_64 0:12.5-19.el7 Complete!
[root@node01 keepalived]#

  提示:在node02也需要安装mailx这个程序包,让其能够通过mail来发送邮件;

  验证:手动给脚本传递master|backup参数,测试在本机是否能够发送邮件?本机root用户能够收到邮件?

  提示:可以看到我们给脚本一个master参数,它会以邮件的方式通知给本机的root用户;到此邮件脚本就准备好了;

  配置keepalived邮件通知

  配置keepalived邮件的接收者和发送者

  提示:以上配置表示当发生故障转移,邮件通知接收者为root@localhost,发送者为node01_keepalived@localhost,邮件服务器地址为127.0.0.1,超时时长为30秒;

  配置keepalived发生故障转移时,触发执行的脚本

  提示:以上配置表示当vrrp VI_1发生故障转移是,如果从master角色转变为backup角色时,就会触发notify_backup指令说指定的脚本和参数发送邮件;如果从backup角色转变为master角色就会触发notify_master指令所指定的脚本和参数来发送邮件,如果当前节点从master或backup角色转变为fault状态时,它会触发notify_fault指令说指定的脚本和参数来发送邮件;

  验证:启动node01的keepalived,看看是否会发送邮件?

  提示:从keepalived的状态信息中可以看到已经触发了脚本执行;

  打开root用户的邮箱,看看是否有故障转移到邮件呢?

  提示:可以看到的确有邮件收到,告诉我们所node01从backup变为了master;

  在node02上加上邮件通知配置

  启动node02上的keepalived

  停掉node01上的keepalived,然后在node02上看看是否会收到邮件?

  提示:可以看到当node01节点服务故障时,它会把vip转移给node02,并且node02会从backup角色转变为master角色,从而触发notify_master指令所指定的脚本和参数来发送邮件;

  示例:配置keepalived在发生故障转移时向指定的互联网邮箱发送邮件

  配置邮件客户端

  提示:配置以上配置以后,在node01和node02上就可以以467697313@qq.com这个邮箱,向我们在脚本里指定的邮箱发送邮件了;配置邮箱客户端需要在对应的邮箱里开启POP3/SMTP,然后在认证以后,它会告诉我们smtp-auth-password的一个字符串;

  提示:到此邮件客户端就配置好了;

  修改脚本中收件人的邮箱为一个互联网邮箱

  提示:修改邮件接收者以后,如果node01或node02上的keepalived发生故障转移,它就会以我们配置的邮件客户端,向我们指定的接收者发送邮件;

  验证:启动node01上的keepalived,看看是否会在linux_test01@126.com邮箱中收到linux1874@qq.com的邮件呢?邮件内容是不是我们在脚本指定的内容呢?

  提示:可以看到启动node01上的keepalived以后,对应node01上的keepalived从stop状态,变成了master状态,并且也触发了指定的脚本;

  打开linux_test01@123.com邮箱,看看是否收到了邮件?

  提示:可以看到在linux_test01@126.com的邮箱里,收到了3封邮件,第一封是node01转换为backup状态发送到邮件,第二封死node02从master角色转换为backup角色发送到邮件,第三封是node01从backup角色转换为master发送的邮件;到此keepalived基于mail配置邮件客户端向互联网邮箱发送故障转移通知邮件的配置就测试完毕了;

高可用服务之Keepalived邮件通知配置的更多相关文章

  1. 高可用服务之Keepalived基础入门

    前面我们聊了聊高可用集群corosync+pacemaker的相关概念以及相关工具的使用和说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/category/18 ...

  2. 高可用服务之Keepalived利用脚本实现服务的可用性检测

    上一篇博客主要聊到了keepalived高可用LVS集群的相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13659428.html:keepalive ...

  3. Keepalived高可用服务

    Keepalived高可用服务 避免负载均衡服务出现单点问题 高可用服务原理 Keepalived的工作原理: Keepalived高可用对之间是通过VRRP通信的,因此,我从 VRRP开始了解起: ...

  4. 干货 | Keepalived高可用服务配置实例

    一个执着于技术的公众号 Keepalived系列导读 Keepalived入门学习 keepalived安装及配置文件详解 前言 在前面的章节中,我们学习了Keepalived简介.原理.以及Keep ...

  5. Nginx (三) 使用Keepalived搭建高可用服务

    Nginx可以实现高并发反向代理,实现负载均衡,但是有个问题就是Nginx是单点的.如果Nginx故障,则整个服务将会处于不可用状态.所以我们就需要想办法让nginx高可用,即使一个Nginx宕机,还 ...

  6. 十一.keepalived高可用服务实践部署

    期中集群架构-第十一章-keepalived高可用集群章节======================================================================0 ...

  7. Linux 高可用开源方案 Keepalived VS Heartbeat对比

    1)Keepalived使用更简单:从安装.配置.使用.维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat2.1.4后拆分成3个子项目,安装.配置.使用都 ...

  8. Redis Sentinel 高可用服务搭建

    阅读目录: 关于 Redis 的概念 关于 Redis Sentinel 的概念 搭建 Redis Server(master) 搭建 Redis Server(slave) 搭建 Redis Sen ...

  9. 【转载】Redis Sentinel 高可用服务架构搭建

    作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...

随机推荐

  1. [机器学习 ]PCA降维--两种实现 : SVD或EVD. 强力总结. 在鸢尾花数据集(iris)实做

    PCA降维--两种实现 : SVD或EVD. 强力总结. 在鸢尾花数据集(iris)实做 今天自己实现PCA,从网上看文章的时候,发现有的文章没有搞清楚把SVD(奇异值分解)实现和EVD(特征值分解) ...

  2. 关于GPU你必须知道的基本知识

    图形处理单元(或简称GPU)会负责处理从PC内部传送到所连接显示器的所有内容,无论你在玩游戏.编辑视频或只是盯着桌面的壁纸,所有显示器中显示的图像都是由GPU进行渲染的. 对普通用户来说,实际上不需要 ...

  3. C#算法设计排序篇之03-直接插入排序(附带动画演示程序)

    直接插入排序(Straight Insertion Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/679 访 ...

  4. C#LeetCode刷题之#26-删除排序数组中的重复项(Remove Duplicates from Sorted Array)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3622 访问. 给定一个排序数组,你需要在原地删除重复出现的元素, ...

  5. Deep Learning-Based Document Modeling for Personality Detection from Text 阅读笔记

    文章目录 代码地址 1. 摘要 2. 方法综述 2.1 输入信息预处理 2.2 文档层面的格式特征提取 2.3 数据过滤 2.4 单词层面上的特征提取 2.5分类 3. 分类网络结构 3.1 步骤 3 ...

  6. 2、java数据类型转换

    当数据类型不一样时,将会发生数据类型转换. 1.自动类型转换(隐式) 1. 特点:代码不需要进行特殊处理,自动完成. 2. 规则:数据范围从小到大. System.out.println(1024); ...

  7. 用ps实现提高照片的清晰度

    首先通过ctrl+j 拷贝一份 然后选择滤镜-->其他-->高反差包留 选择叠加,就可以达到效果了,实在不行,多弄几层图层

  8. GaussDB连接与登出

    连接 连接命令1: gsql -d ${dbName} -U ${userName} -p {port:默认为25308} -h {ip} -W {password} 连接命令2: gsql -d p ...

  9. JavaScript正则表达式的模式匹配教程,并且附带充足的实战代码

    JavaScript正则表达式的模式匹配 引言 正文 一.正则表达式定义 二.正则表达式的使用 三.RegExp直接量 (1)正则表达式初体验 (2)深入了解正则 字符类 重复 选择 分组与引用 指定 ...

  10. 为什么LinkedList不建议使用for循环遍历,而使用iterator方式进行遍历,但ArrayList建议使用for循环进行遍历呢?

    如果使用for循环方式遍历链表,由于链表中元素是通过指针连接彼此的,不存在索引的概念,如果使用for循环方式遍历LinkedList,依次传入索引值,则就相当于每次都要将链表撸一遍. 如:在下面的这个 ...