keepalived配置和使用

安装:

yum安装

yum install -y keepalived

编译安装

# 安装编译环境
yum install -y gcc openssh-server openssh-clients openssl openssl-devel libnl3-devel libnl3 make cd /usr/local/src
wget --no-check-certificate https://keepalived.org/software/keepalived-2.2.4.tar.gz
tar xf keepalived-2.2.4.tar.gzcd keepalived-2.2.4/./configure  --prefix=/apps/keepalived  --disable-fwmark
# --disable-fwmark 关闭防火墙标记功能make && make installmkdir /etc/keepalivedcp ./keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

配置文件

! Configuration File for keepalivedglobal_defs {notification_email {  # 邮件配置acassen@firewall.loc  # keepalived 发生故障切换时邮件发送的对象,可以按行区分写多个failover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL  # route_idvrrp_skip_check_adv_addr # 所有报文都检查比较消耗性能,此配置为如果收到的报文和上一个报文是同一个路由器则跳过检查报文中的源地址# vrrp_strict  # 严格遵守VRRP协议,不允许状况:1,没有VIP地址,2.配置了单播邻居,3.在VRRP版本2中有IPv6地址.vrrp_garp_interval 0 # ARP报文发送延迟vrrp_gna_interval 0 # 消息发送延迟#vrrp_iptables  # yum安装会自动生成防火墙策略,可以删除或禁止生成
}vrrp_instance VI_1 {state MASTER # 启动时,当前节点在此虚拟路由器上的初始状态。interface eth0 # 心跳传输的网卡virtual_router_id 51 # 当前虚拟路由器的惟一标识,范围是0-255,MASTER和BACKUP的值需要一样。priority 100  # 当前主机在此虚拟路径器中的优先级;范围1-254;advert_int 1  # vrrp通告的时间间隔;主备间通告时间检查的时间间隔,单位为s,默认1sauthentication {  # 认证机制auth_type PASSauth_pass 1111 # 仅前8位有效}virtual_ipaddress { #虚拟IP192.168.200.16}
}

keepalived 结合nginx 实现高可用

允许绑定不存在的ip地址

echo 'net.ipv4.ip_nonlocal_bind = 1' >> /etc/sysctl.conf
sysctl -p

keepalived-master端

! Configuration File for keepalivedglobal_defs {router_id 119.103vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_script chk_nginx {script "/etc/keepalived/chk_nginx.sh"interval 1weight -80fall 3rise 5timeout 2
}vrrp_instance VI_1 {state MASTERinterface ens32virtual_router_id 55priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.119.100}track_script {chk_nginx}
}

keepalived-backup端

! Configuration File for keepalivedglobal_defs {router_id 119.104vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_script chk_nginx {script "/etc/keepalived/chk_nginx.sh"interval 1weight -80fall 3rise 5timeout 2
}vrrp_instance VI_1 {state BACKUPinterface ens32virtual_router_id 55priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.119.100}track_script {chk_nginx}
}
cat  /etc/keepalived/chk_nginx.sh
#!/bin/bash
killall -0 nginx
# killall命令需要用到psmisc包
# yum install psmisc -ychmod +x /etc/keepalived/chk_nginx.sh
# 此脚本只判断nginx进程是否存在,如果不存在,返回错误。

脑裂以及脑裂产生的原因

脑裂:

在高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。两个节点上的HA软件像“裂脑人”一样,争抢“共享资源”、争起“应用服务”,就会发生严重后果——或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏。

产生脑裂的原因:

服务器对之间心跳线链路发生故障,导致无法正常通信

因心跳线间连接的设备故障

心跳网卡地址等信息配置不正确,导致发送心跳失败

Keepalived配置里同一 VRRP实例如果virtual_router_id两端参数配置不一致会导致裂脑问题发生。

keepalived 进程被强制kill后,虚拟 ip 移除不掉,导致脑裂的现象。

解决办法

同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息

做好对裂脑的监控报警(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。

实现keeplived监控

Keepalived通知配置

发件人配置:
[root@localhost ~]# yum install mailx -y
[root@localhost ~]# vim /etc/mail.rcset from=wslzr120@163.com
set smtp=smtp.163.com
set smtp-auth-user=wslzr120@163.com
set smtp-auth-password=ABAUKQEMLEKAHFSU
set smtp-auth=login
set ssl-verify=ignore

定义通知脚本:

notify_master <STRING>|<QUOTED-STRING>:当前节点成为主节点时触发的脚本
notify_backup <STRING>|<QUOTED-STRING>:当前节点转为备节点时触发的脚本
notify_fault <STRING>|<QUOTED-STRING>:当前节点转为“失败”状态时触发的脚本
notify <STRING>|<QUOTED-STRING>:通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知

Keepalived通知脚本

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

脚本的调用方法:

notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"# 脚本要加执行权限
chmod +x /etc/keepalived/notify.sh

停止keepalived服务,验证IP 切换后是否收到通知邮件:

keepalived基本配置和邮件通知相关推荐

  1. Jenkins 配置邮件通知

    Jenkins是一个很受欢迎的CI持续集成工具,能够实现项目的自动构建.打包.测试.发布等.还可以在构建失败.构建不稳定等状态后发送邮件通知.现介绍一下如何在Jenkins中配置实现邮件通知. 在Je ...

  2. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    点赞再看,动力无限.Hello world : ) 微信搜「 程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 1. ...

  3. Django error信息邮件通知功能配置部署

    1. 最近QA成为项目的重点,除了突破依赖外部表的阻力开始启用单元测试,还有一点就是对在线的生产服务的错误信息启用这个邮件通知功能,下面简单说一下启用方法: 1.发送邮件账号配置配置: EMAIL_H ...

  4. 139邮箱smtp地址和端口_wordpress建站如何用SMTP配置邮件通知

    前提条件:你已经有了企业邮箱,相关文章请看:如何开通阿里云企业邮箱免费版https://loyseo.com/how-to-register-aliyun-free-enterprise-email/ ...

  5. Jenkins(10) 配置邮件通知

    文章目录 一.前言 二.安装插件`Email Extension Plugin` 三.配置邮件通知 1.设置系统管理员邮件地址 2.配置邮件通知`Extended E-mail Notificatio ...

  6. 持续集成:Jenkins邮件通知配置方法介绍

    Jenkins的邮件提醒功能主要通过Email Extension插件来实现,它是对Mailer Plugin的扩展,我在持续集成平台Jenkins配置方法介绍中简要介绍了Jenkins的邮件配置方法 ...

  7. 基于Windows Azure 搭建基于SharePoint 2010 Intranet、Extranet、Internet (4): 配置传出邮件服务: 使用 outlook.com 发送邮件通知

    前几篇文章,已经安装了SharePoint 2010,今天将演示如何配置传出邮件.由于某些原因,企业可能没有安装自己邮件服务器,此时我们可以使用公共的邮箱服务来发送邮件通知,比如outlook.com ...

  8. Jenkins配置邮件通知服务,完整教程(含发送成功无法接收邮件处理方案)

    前言:涂涂改改,查查找找,不知不觉又三点了,废话不多说直接上教程. 准备事项: 1.安装Email Extension Plugin插件 2.安装Date Parameter插件(一个可使用的时间函数 ...

  9. Jenkins邮件通知配置报错问题解决

    在Jenkins系统管理-->系统配置中配置邮件通知的时候Test configuration时报错:com.sun.mail.smtp.SMTPSenderFailedException: 5 ...

最新文章

  1. php函数细节_php strip_tags()函数使用注意细节
  2. Android 事件与事件监听器
  3. 富数据控件 GridView(定义列、格式化、样式)
  4. 编程获取linuxservercpu、内存和磁盘使用
  5. JSF2.0与纯JS框架
  6. 更改日志级别_如何在运行时更改日志记录级别
  7. Springmvc架构详解
  8. SpringCloud(第 054 篇)简单 Quartz-Cluster 微服务,采用注解配置 Quartz 分布式集群... 1
  9. C#LeetCode刷题之#665-非递减数列( Non-decreasing Array)
  10. Android开发笔记(二十七)对象序列化
  11. WAV音频文件结构及录制
  12. vim---C++开发环境搭建
  13. 算法学习:最短路径(Floyd、Bellman-ford、Dijkstra)
  14. 声艺fx16调音台怎么样_声艺FX16II 声艺(Soundcraft) FX16ii 调音台
  15. vue项目结构文件介绍及项目运行流程
  16. 趋势追踪交易课堂:复盘的意义和方法
  17. 量子计算 17 量子算法2 (量子Simon算法)
  18. 1135: 算菜价 C语言
  19. 特惠快车和快车的区别,滴滴特惠快车老司机说了实话?
  20. 计算机入门模拟试卷c卷,《计算机入门》模拟卷C答案-华东师范大学.doc

热门文章

  1. Adobe安装程序无法访问关键文件/目录,请尝试重新安装。(错误代码:41) 解决方法
  2. 研报精选230214
  3. 电脑会自动安装软件该怎么办?教你两个方法,修改一下设置就好了
  4. 5V降压转3.3V,5V转3V电路图芯片
  5. 苹果应用分身_使用苹果手机拍照!不开启这3个功能,难怪拍的照片不好看
  6. linux系统时钟和硬件时钟
  7. 10款最佳跨浏览器测试工具
  8. 使用pg_repack 回收表体积
  9. 到底什么是信息系统集成?
  10. Python Flask框架学习