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

这篇具有很好参考价值的文章主要介绍了keepalived 检测服务状态、keepalived 检测脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

global_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 <script_name> {}段和 track_script{}段,如下:

#配置BACKUP主节点
[root@master~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_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地址
    }   
}

验证

1、都重启主备的keepalived服务和nginx服务;文章来源地址https://www.toymoban.com/news/detail-540771.html

#查看主节点,现在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 ~]# 

到了这里,关于keepalived 检测服务状态、keepalived 检测脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • keepalived检测Nginx高可用

    node1 192.168.136.55 node2 192.168.136.56 两台机器都安装dnf install keepalived nginx 主的配置 从的配置 测试  访问虚拟IP   访问的是master 访问的是backup 目前 Keepalived 仅能通过主机是否宕机来进行业务切换,如果仅 Nginx 业务出现故障是无法 切换的,需在 Keepalive 中添加健康检查来达到检

    2024年04月27日
    浏览(31)
  • 服务器防火墙状态怎么查看

    在现代网络环境中,服务器的安全运行至关重要。其中,防火墙作为第一道防线,是保障服务器安全的关键一环。在服务器管理中,我们经常需要查看防火墙的状态,以便及时发现问题并快速解决。小编将介绍如何在不同操作系统下查看服务器防火墙的状态。 首先我们以Wi

    2024年02月10日
    浏览(39)
  • SElinux 导致 Keepalived 检测脚本无法执行

    哈喽大家好,我是咸鱼 今天我们来看一个关于 Keepalived 检测脚本无法执行的问题 一位粉丝后台私信我,说他部署的 keepalived 集群 vrrp_script 模块中的脚本执行失败了,但是手动执行这个脚本却没有任何问题 这个问题也是咸鱼第一次遇到,为了能让更多的小伙伴以后不会踩这个

    2024年02月12日
    浏览(33)
  • Jetson硬件平台状态查看工具jtop安装,服务器平台上可以通过nvtop工具来查看资源使用情况

    首先安装支持环境包(maybe…need) sudo apt-get install git cmake sudo apt-get install python3-dev sudo apt-get install libhdf5-serial-dev hdf5-tools sudo apt-get install libatlas-base-dev gfortran 安装 pip3 因为最终需要用 pip3 安装,所以这一步是不可缺少的。 sudo apt install python3-pip 安装 jtop sudo -H pip3 install -U jetso

    2023年04月23日
    浏览(56)
  • OneNote由于某种原因,无法连接到服务器请尝试检查您的连接以查看服务器是否可用的两种解决方案

    本来一直在用OneNote记录东西,点击同步笔记的时候,突然冒出 “OneNote由于某种原因,无法连接到服务器请尝试检查您的连接以查看服务器是否可用” 警告错误。捣鼓了一会发现可以两种方案解决。 第一种:方法就是科学上网,再次点击同步笔记就可以了。 第二种:右键左下

    2024年02月06日
    浏览(70)
  • Nginx+Keepalived实现服务高可用

    Nginx 和 Keepalived 是常用于构建高可用性(High Availability)架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器,而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。 在服务器1和服务器2分别下载nginx 在服务器1配置,vim /usr/share/nginx/html/index.html  在服务器

    2024年02月07日
    浏览(38)
  • HTTP状态 404 - 未找到 类型 状态报告 消息 请求的资源[]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.70

    Idea启动javaweb 程序报错 HTTP状态 404 - 未找到 类型 状态报告 消息 请求的资源[]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.70 在本地可以启动tomcat,用idea启动tomcat项目报错。 最下面不能选中Build ,要选中下面那个点

    2024年02月11日
    浏览(50)
  • unity中如何查看网络是否可用状态

    目录 一、检查网络是否可用及类型 二、如何获得网络信号的强弱: 1、Android检查网络信号强弱 2、在IOS设备下获得网络信号的强弱 在 Unity 中,可以使用  Application.internetReachability  属性来检查网络是否可用。 Application.internetReachability  返回一个枚举值,表示当前设备的网络

    2024年02月09日
    浏览(55)
  • zookeeper集群启停及状态查看脚本(linux)

    注意集群名称修改 启动传参start 停止传参stop 查看状态传参status

    2024年02月15日
    浏览(31)
  • keepalived 主备都存在vip, keepalived主备跨网段配置;keepalived主备服务器不在同一个网段怎么配置

    主机:128.192.10.10 备机:128.192.11.11 备机:128.192.22.22 通过上述示例,根据自己的服务修改配置。 注意上图中标记的空格不要不能省略;本人因设置为“unicast_peer{” 缺失了大括号{前面的空格,怎么调试都不通过。切记切记

    2024年02月01日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包