Keepalived 踩坑

news/2024/10/21 6:18:06/

场景:操作系统环境为centos7.9 这里举例了定时检测一个http接口,若超过4次返回不为200则切换master到backup 同时若当前节点被切换为备份节点需要执行一个自己的脚本

两台虚拟机 准备一个vip

1.安装keepalived yum install keepalived

2.配置文件路径/etc/keepalived/keepalived.conf

3.master 节点配置

! Configuration File for keepalivedglobal_defs {smtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strict  vrrp_garp_interval 0vrrp_gna_interval 0script_user rootenable_script_security
}vrrp_script chk_url {script "/etc/keepalived/check.sh"interval 5weight 2rise 4fall 4
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 99priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.200.16}track_script {chk_url}notify_backup "/etc/keepalived/keepalive.sh"
}

4.backup配置

! Configuration File for keepalivedglobal_defs {smtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0script_user rootenable_script_security
}vrrp_script chk_url {script "/etc/keepalived/check.sh"interval 1weight 2
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 99priority 98advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.200.16}track_script {chk_url}notify_backup "/etc/keepalived/keepalive.sh"
}

这里说明下 chk_url函数就是配置你需要检测的脚本 

interval 间隔执行周期秒

 weight 权重值 

rise 判断一个服务正常工作之前需要连续成功的检测次数

fall 失败次数 切换备节点

track_script  这个设置后才会开始触发执行我们的脚本

notify_master 当前节点切换成主节点时触发 

notify_backup 当前节点切换成备节点时触发 

notify 当前节点切换成主/备节点和发生切换异常时触发 

5.脚本示例

check.sh

#!/bin/bashAPI_URL="http://xxx"response=$(curl -s -o /dev/null -w "${http_code}" "$API_URL")if [ $response != "200" ]; thenexit 1
elseexit 0
fi

keepalive.sh

#!/bin/bash
#根据自己业务需求执行对应的shell命令
systemctl restart xxx

注意事项:

  1. 检测脚本需要放在/etc/keepalived/
  2. 脚本的权限为 chmod 744 或者755(设置777不行)
  3. 其他配置未使用可以删除掉,按照我的配置
  4. vrrp_strict 这个需要注释掉,不然vip无法访问
  5. script_user root   enable_script_security 这两个需要添加上,不然启动会报错
  6. virtual_router_id  主备一定需要一致且在你的环境中需要唯一
  7. priority 设置的数字主>备
  8. authentication 主备需要一致
  9. interface 设置网卡 需要ip addr设置准确
  10. 脚本设置需要返回指定的值,keepalived是根据返回来判断是否正常
  11. 日志文件是写在/var/log/message 可以过滤下keepalived关键字 
  12. 若只是由于检测监听的脚本的服务异常,直接查看master节点日志就可以看见主备切换
  13. 当keepalived服务停止后 可以在backup查看切换日志


http://www.ppmy.cn/news/1393445.html

相关文章

【嵌入式实践】【芝麻】【硬件篇-4】从0到1给电动车添加指纹锁:硬件设计过程中遇到的问题

0. 前言 该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹,电动车进入P档等待时计时,计时超过5min则自动锁车,计时过程中按刹车可中断P档状态,同时中断锁车计时。改项目我称之为“芝…

Java使用itextpdf往pdf中插入图片

引入maven依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.9</version> </dependency>java代码 import cn.hutool.extra.qrcode.QrCodeUtil; import com.itextpdf.text.*; i…

python框架的一加剧场管理系统的设计与实现flask-django-nodejs-php

本文讲述了一加剧场管理系统。结合电子管理系统的特点&#xff0c;分析了一加剧场管理系统的背景&#xff0c;给出了一加剧场管理系统实现的设计方案。 本论文主要完成不同用户的权限划分&#xff0c;不同用户具有不同权限的操作功能&#xff0c;在用户模块&#xff0c;主要有用…

os.path模块(三)

文章目录 os.path.join(path, *paths)os.path.normcase(path)os.path.normpath(path)os.path.realpath(path, *, strictFalse)os.path.relpath(path, startos.curdir)os.path.samefile(path1, path2)os.path.sameopenfile(fp1, fp2)os.path.samestat(stat1, stat2)os.path.spli…

拒绝光照影响,一文教你在地平线旭日派X3上如何使用resnet18搭建自己的深度学习巡线小车

拒绝光照影响&#xff0c;一文教你在地平线旭日派X3上如何使用resnet18搭建自己的深度学习巡线小车 获取训练的代码请关注这个佬的文章,大佬,我这里只说怎么转模型&#xff0c;并且在旭日派X3部署 1. 在ubuntu虚拟机中将onnx模型转为bin模型 第一步将自己的resnet的onnx模型拖…

JavaScript初识及基本语法详解

JavaScript是一种广泛应用于Web开发的轻量级、解释型、面向对象的脚本语言&#xff0c;它支持事件驱动、函数式以及基于原型的编程风格。JavaScript不仅可以用于客户端&#xff08;在用户的浏览器中运行&#xff09;&#xff0c;也可以在服务端&#xff08;如Node.js环境&#…

python食品安全信息管理系统flask-django-nodejs-php

。 食品安全信息管理系统是在安卓操作系统下的应用平台。为防止出现兼容性及稳定性问题&#xff0c;编辑器选择的是Hbuildex&#xff0c;安卓APP与后台服务端之间的数据存储主要通过MySQL。用户在使用应用时产生的数据通过 python等语言传递给数据库。通过此方式促进食品安全信…

[游戏开发][Unity] 导出Xcode工程,完成调试与发布

Unity导出Xcode工程(模拟器版本与真机调试) [游戏开发][Unity] 打包Xcode工程模拟器真机调试_unity5 打包xcod-CSDN博客文章浏览阅读2k次。[游戏开发][Unity] 打包Xcode工程模拟器真机调试_unity5 打包xcodhttps://blog.csdn.net/liuyongjie1992/article/details/131934221 Uni…