文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

keepalived 检测服务状态、keepalived 检测脚本

2023-09-14 09:02

关注

前言

环境: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 keepalivedfi

对脚本授予可执行权限: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 {}段和 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#认证类型,默认PASS        auth_pass 1111#认证密码    }     track_script {#指定要检测的脚本             check_nginx #指定我们定义的要检查的脚本名称           }    virtual_ipaddress {        192.168.118.100#vip地址    }}[root@master~]#

修改backup备配置文件

backup的keepalived配置文件与master的一样,也是要加了vrrp_script {}段和 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#认证类型,默认PASS        auth_pass 1111#认证密码    }       track_script {#指定要检测的脚本             check_nginx #指定我们定义的要检查的脚本名称           }    virtual_ipaddress {        192.168.118.100#vip地址    }   }

验证

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

#查看主节点,现在nginx是启动状态的[master keepalived]# systemctl  status nginx | grep Active   Active: active (running) since Sat 2022-10-15 19:10:14 CST; 7min ago[root@master ~]# #主节点的keepalived也是启动状态的[root@master ~]# systemctl  status keepalived.service | grep Active   Active: 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 ~]# 

来源地址:https://blog.csdn.net/MssGuo/article/details/127337550

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯