前言

环境:centos 7.9 keepalived-2.2.7

说明

前面我们模拟vip漂移,总是把keepalived手动停止来模拟服务器死机,这种模拟是不太合理的,在生产环境中,我们更多的是监控某一个服务的状态,根据服务的状态来实现vip的漂移,比如,检测nginx是否存活,不存活则实现vip漂移到备服务器上,从而实现真正的高可用。

下面,我们将手写keepalived的检测脚本,用于检测nginx是否存活,不存活则实现vip漂移到备服务器上。

nginx检测脚本

#脚本含义是:nginx检测没了,直接干掉keepalived,这样备收不到心跳包就会接管vip了
vim /etc/check_nginx.sh
#!/bin/bash
#计算nginx进程数量
#注意:千万不要使用ps -ef | grep nginx | grep -v grep | wc -l 进行统计。这样统计会有问题的
n=`ps -C nginx --no-heading|wc -l`#当nginx停止后,直接干掉keepalived,这样备收不到心跳包就会接管vip了
if [ $n -eq "0" ]; then/usr/bin/systemctl stop keepalived
fi

对脚本授予可执行权限:chmod a+x /etc/check_nginx.sh

#将检测脚本复制一份到backup服务器上
scp /etc/keepalived/check_nginx.sh root@192.168.118.130:/etc/keepalived/check_nginx.sh
#登录backup服务器给脚本授权
chmod a+x /etc/keepalived/check_nginx.sh

修改master主配置文件

配置master主节点,主要加了vrrp_script <script_name> {}段和 track_script{}段,如下所示:

#配置master主节点
[root@master~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LB1           #keepalived服务器的路由标识,用于标识机器的,默认值是主机名vrrp_skip_check_adv_addr   #保持默认参数vrrp_strict              #保持默认参数vrrp_garp_interval 0     #保持默认参数vrrp_gna_interval 0      #保持默认参数
}
vrrp_script check_nginx {   #定义要检测的脚本,check_nginx是指定的检测脚本名称script  /etc/keepalived/check_nginx.sh    #指定哪个脚本,定义脚本路径interval 2             #脚本检测的时间间隔,表示每n秒就检查一次,默认1秒就检测一次timeout 2              #脚本检测超时时间,超过这个时间则认为检测失败#通过此权重调整优先级,(默认值:0)#有关反转的描述,请参见track_script。#'weight 0 reverse' 将在脚本启动时导致vrrp实例关闭,反之亦然。weight 0   #这个参数会调整优先级的,保持默认值0吧rise 2       # 表示需要连续成功2次才能认为是成功的fall 2      # 表示需要连续失败2次才能认为是失败的user root   # 指定哪个用户指定脚本init_fail   #设置默认脚本最初为失败状态,监测成功之后再转换为成功状态
}
vrrp_instance VI_1 {        #VT_1是实例名,可以自定义,建议主备的实例名保持一致,让人一眼就知道这两个是一对的state MASTER            #配置为MASTER,state:有两种状态MASTER、BACKUP,谁为主节点是由prority决定,并不是由state决定interface ens33         # vip绑定的网卡virtual_router_id 51  #虚拟路由id,用于标识一个唯一的实例,master和backup该标识必须相同,用于表示他两是一组的priority 100           #优先级设为100,优先级用于确定谁具有vip,谁就是主节点advert_int 1            #心跳包的时间间隔,默认就是1秒就发一次authentication {     #主备之间的认证信息auth_type PASS        #认证类型,默认PASSauth_pass 1111       #认证密码}track_script {            #指定要检测的脚本   check_nginx     #指定我们定义的要检查的脚本名称}virtual_ipaddress {192.168.118.100     #vip地址}
}[root@master~]#

修改backup备配置文件

backup的keepalived配置文件与master的一样,也是要加了vrrp_script <script_name> {}段和 track_script{}段,如下:

#配置BACKUP主节点
[root@master~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LB2               #keepalived服务器的路由标识,用于标识机器的,默认值是主机名vrrp_skip_check_adv_addr       #保持默认参数vrrp_strict                  #保持默认参数vrrp_garp_interval 0         #保持默认参数vrrp_gna_interval 0          #保持默认参数
}
vrrp_script check_nginx {   #定义要检测的脚本,check_nginx是指定的检测脚本名称script  /etc/keepalived/check_nginx.sh    #指定哪个脚本,定义脚本路径interval 2             #脚本检测的时间间隔,表示每n秒就检查一次,默认1秒就检测一次timeout 2              #脚本检测超时时间,超过这个时间则认为检测失败#通过此权重调整优先级,(默认值:0)#有关反转的描述,请参见track_script。#'weight 0 reverse' 将在脚本启动时导致vrrp实例关闭,反之亦然。weight 0   #这个参数会调整优先级的,保持默认值0吧rise 2       # 表示需要连续成功2次才能认为是成功的fall 2      # 表示需要连续失败2次才能认为是失败的user root   # 指定哪个用户指定脚本init_fail   #设置默认脚本最初为失败状态,监测成功之后再转换为成功状态
}
vrrp_instance VI_1 {            #VT_1是实例名,可以自定义,建议主备的实例名保持一致,让人一眼就知道这两个是一对的state BACKUP                #配置为BACKUP,state:有两种状态MASTER、BACKUP,谁为主节点是由prority决定,并不是由state决定interface ens33             # vip绑定的网卡virtual_router_id 51      #虚拟路由id,用于标识一个唯一的实例,同时主备应该保持一致,用于表示他两是一组的priority 50                  #设的比master的优先级低,优先级用于确定谁具有vip,谁就是主节点advert_int 1              #心跳包的时间间隔,默认就是1秒就发一次authentication {         #主备之间的认证信息auth_type PASS            #认证类型,默认PASSauth_pass 1111           #认证密码}   track_script {             #指定要检测的脚本   check_nginx         #指定我们定义的要检查的脚本名称}virtual_ipaddress {192.168.118.100         #vip地址}
}

验证

1、都重启主备的keepalived服务和nginx服务;

#查看主节点,现在nginx是启动状态的
[master keepalived]# systemctl  status nginx | grep ActiveActive: active (running) since Sat 2022-10-15 19:10:14 CST; 7min ago
[root@master ~]#
#主节点的keepalived也是启动状态的
[root@master ~]# systemctl  status keepalived.service | grep ActiveActive: active (running) since Sat 2022-10-15 19:14:54 CST; 2min 53s ago
[root@master ~]#
#vip在主节点上(已经确认备节点没有vip)
[root@master ~]# ip a| grep '192.168.118.100'inet 192.168.118.100/32 scope global ens33
[root@master ~]#
#停掉主节点上的nginx,这是keepalived根据检测脚本发现nginx停了立马干点keepalived,
# 这样备收不到心跳包就会接管vip了[root@master ~]# systemctl stop nginx
[root@master ~]# ip a | grep '192.168.118.100'                       #vip 已经不在主节点上了
[root@master ~]# systemctl  status keepalived.service | grep Active    #keepalive已经停止了,因为我们的检测脚本杀死的Active: inactive (dead)
[root@master ~]# # 先vip在备节点上
[root@backup ~]# ip a| grep '192.168.118.100'inet 192.168.118.100/32 scope global ens33
[root@backup ~]#
#重新启动主节点上的nginx进程和keepalived服务,vip又被主节点抢占回来了
[root@master ~]# systemctl  start  nginx.service
[root@master ~]# systemctl  start  keepalived.service
[root@master ~]# ip a| grep '192.168.118.100'inet 192.168.118.100/32 scope global ens33
[root@master ~]#

keepalived 检测服务状态、keepalived 检测脚本相关推荐

  1. nginx两台文件服务器集群,keepalived结合nginx状态检测脚本实现对web服务器集群的高可用...

    实验环境 两台CentOS-7.5虚拟机 web1:10.0.11.203 web2:10.0.11.204 VIP :10.0.11.210 web类型:nginx 客户端:自用笔记本(win10) ...

  2. keepalived心跳检测脚本

    1.在与其他服务一起运行下做高可用时,比如NGINX,需要在NGINX断开的时候先尝试启动一次NGINX,如果启动不行,漂移keepalived到备机,所以需要在配置下加检测脚本. 2.配置:keep ...

  3. keepalived+lvs基于http检测

    keepalived+lvs基于http检测 keepalived+lvs基于tcp检测无法探测到后端的Java程序是否假死,所以此时就需要用到基于http的检测方法. 基于http检测的原理是检测后 ...

  4. mysql keepalive 脑裂_keepalived 预防脑裂检测脚本

    1 检查vip [root@mysql2 keepalived]# cat /etc/keepalived/check_brain_keepalived.sh #!/bin/bash # 检查脑裂的脚 ...

  5. keepalived介绍和keepalived实现nginx负载均衡机高可用

    1. keepalived简介 1.1 keepalived是什么? Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...

  6. linux集群-keepalived介绍-用keepalived配置高可用集群

    2019独角兽企业重金招聘Python工程师标准>>> linux集群介绍: 以功能划分:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外一台作为冗余.实现高可用的开源 ...

  7. keepalived热备 keepalived+LVS Haproxy

    keepalived热备 keepalived概述 调度器出现单点故障,如何解决? keepalived实现了高可用集群 keepalived最初是为了LVS设计的,专门监控个服务器节点的状态 kee ...

  8. 【LVS+Keepalived】 LVS+Keepalived实现tcp、udp负载均衡及HA高可用

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程. LVS 安装 下载 http: ...

  9. 生产环境WEB服务管理脚本之日志检测脚本

    环境说明: 公司是做在线教育的互联网企业,WEB架构为:前端使用LVS + Heartbeat做负载均衡,后端主要是Apache/Nginx + Tomcat,缓存有redis和Memcached,数 ...

最新文章

  1. ui设计的文字怎样提高设计感呢?
  2. form表单提交,Servlet接收并读取Excel文件
  3. 让Maven项目使用Nexus作为远程仓库的settings.xml配置
  4. 1.3.2 java程序的运行机制和jvm
  5. EOS 共识机制 (5)超级节点投票
  6. 静观接入网易云信IM的秀品,如何在圣诞让她们疯狂剁手
  7. Cortex-M3-建立向量表
  8. java注解---@SuppressWarnings
  9. python三维数据转换成二维_5大Python可视化库到底选哪个好?一篇文章搞定从选库到教学...
  10. 解决水晶报表部署时出错的问题
  11. 配置java编译环境
  12. 简单async/wait使用样例
  13. html 流程控制,HTML5独家分享:原生JS学习笔记2——程序流程控制
  14. python中os模块详解_Python OS模块(常见文件操作示例)
  15. 一个人学习3D视觉太痛苦了怎么办?
  16. 20幻读是什么,幻读有什么问题
  17. 搜狗android平板专用,搜狗推首款支持Android 3.0平板专用输入法
  18. day05 Servlet组件(上)
  19. hyperledger fabric 实战开发——水产品溯源交易平台(二)
  20. 比Everything更强的文件搜索工具,支持文件名、文件内容和文件图片上的文字搜索,文件内容搜索工具,文件图片内容搜索工具,OCR图片文本识别搜索,文件快速搜索工具,文字识别文件搜索工具

热门文章

  1. php7.4 安装xdebug3.1.3扩展
  2. Mac + Android Studio(IDEA)快捷键
  3. 入耳式无线蓝牙耳机哪款好?无线入耳式蓝牙耳机音质排行榜
  4. IPhone 6的自适应布局
  5. 骁龙8 gen2和天玑8100哪个好 高通骁龙8gen2和天玑8100参数对比
  6. 知道阿里加班,没想到加班这么恐怖......
  7. C++ malloc、智能指针、类型转换等(三)
  8. 用iText给pdf添加水印图片
  9. 一键去除开发者模式提示
  10. HTML第一章 (WEB基础知识、 HTML入门、HTML的语法规则、HTML常用标签汇总、图片与超链接、HBuilder的快捷键)