高可用 Keepalived 服务部署流程
一、配置文件
vim /etc/keepalived/keepalived.confGLOBAL CONFIGURATION --- 全局配置部分VRRPD CONFIGURATION --- VRRP协议配置部分LVS CONFIGURATION --- LVS服务管理配置部分[root@lb01 ~]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs { --- 全局配置部分notification_email { --- 设置发送邮件信息的收件人acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from oldboy@163.com --- 设置连接的邮件服务器信息smtp_server 163.smtp.xxx_smtp_connect_timeout 30 router_id LVS_DEVEL --- 高可用集群主机身份标识(集群中主机身份标识名称不能重复)}vrrp_instance oldboy { --- Vrrp协议家族 oldboystate MASTER --- 标识所在家族中的身份 (MASTER/BACKUP)interface eth0 --- 指定虚拟IP地址出现在什么网卡上virtual_router_id 51 --- 标识家族身份信息 多台高可用服务配置要一致 priority 100 --- 设定优先级 优先级越高,就越有可能成为主advert_int 1 --- 定义组播包发送的间隔时间(秒) 主和备配置一样 1authentication { --- 实现通讯需要有认证过程auth_type PASSauth_pass 1111}virtual_ipaddress { --- 配置虚拟IP地址信息192.168.200.16192.168.200.17192.168.200.18}}
二、环境准备
1、服务器规划
角色 IP 地址 主机名 虚拟 IP (VIP) 优先级
Master 192.168.1.101 node1 192.168.1.100 100
Backup 192.168.1.102 node2 192.168.1.100 90
2、网络要求
主备节点需在同一局域网(二层互通)。确保防火墙允许 VRRP 协议报文(IP 协议号 112,组播地址 224.0.0.18)。若为云环境(如 AWS、阿里云),需确认支持组播或配置单播模式。
三、安装 Keepalived
1、在 Master 和 Backup 节点安装
# CentOS/RedHat
yum install keepalived -y# Ubuntu/Debian
apt-get install keepalived -y
2、启动服务并设置开机自启
systemctl start keepalived
systemctl enable keepalived
3、配置 Keepalived
1、主节点(Master)配置
配置文件路径:/etc/keepalived/keepalived.conf
global_defs {router_id NODE_MASTER # 唯一标识,建议按节点角色命名
}vrrp_instance VI_1 {state MASTER # 初始状态为 MASTERinterface eth0 # 绑定网卡名称(需根据实际修改)virtual_router_id 51 # 虚拟路由 ID,同一组需相同(1-255)priority 100 # 优先级,Master 需高于 Backupadvert_int 1 # 心跳间隔(秒)authentication { # 认证配置(主备需一致)auth_type PASSauth_pass 12345678 # 密码建议复杂化}virtual_ipaddress { # 虚拟 IP(VIP)192.168.1.100/24 dev eth0}# 可选:触发切换的脚本(如检测服务状态)track_script {chk_nginx # 引用健康检查脚本}
}# 可选:定义健康检查脚本(示例:检查 Nginx 是否存活)
vrrp_script chk_nginx {script "/usr/bin/killall -0 nginx" # 检查 Nginx 进程是否存在interval 2 # 检查间隔(秒)weight -20 # 检测失败时优先级降低值fall 2 # 连续失败 2 次判定为故障rise 1 # 成功 1 次即恢复
}
2、备节点(Backup)配置
配置文件路径:/etc/keepalived/keepalived.conf
global_defs {router_id NODE_BACKUP
}vrrp_instance VI_1 {state BACKUP # 初始状态为 BACKUPinterface eth0virtual_router_id 51 # 必须与 Master 一致priority 90 # 优先级低于 Masteradvert_int 1authentication {auth_type PASSauth_pass 12345678}virtual_ipaddress {192.168.1.100/24 dev eth0}track_script {chk_nginx}
}# 健康检查脚本需与 Master 一致
vrrp_script chk_nginx {script "/usr/bin/killall -0 nginx"interval 2weight -20fall 2rise 1
}
四、关键配置说明
virtual_router_id:同一 VRRP 组内所有节点必须相同,不同组需不同。priority:优先级决定选举结果,范围 1-254,默认 100。advert_int:心跳间隔建议设为 1 秒,超时时间为 3 × advert_int + skew_time。track_script:用于扩展健康检查(如检测应用服务状态),故障时触发优先级降低。
五、启动与验证
1、启动服务
systemctl restart keepalived
2、检查 VIP 绑定
在 Master 节点执行:ip addr show eth0 | grep 192.168.1.100
# 应输出:inet 192.168.1.100/24 scope global secondary eth0
3、查看 Keepalived 状态
journalctl -u keepalived -f # 查看实时日志
# 正常日志示例:VRRP_Instance(VI_1) Transition to MASTER STATE
4、模拟故障切换
1、手动停止 Master 的 Keepalived:
systemctl stop keepalived
2、验证 Backup 是否接管 VIP:
# 在 Backup 节点执行:
ip addr show eth0 | grep 192.168.1.100
六、高级配置
1、多实例负载均衡
为不同服务配置多个 VRRP 实例:
vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 52priority 100virtual_ipaddress {192.168.1.200/24 dev eth0}# 其他配置...
}
2、结合 Nginx/Haproxy 实现七层负载均衡
在 Keepalived 节点部署 Nginx/Haproxy,绑定 VIP。通过 Keepalived 监控 Nginx/Haproxy 进程,实现服务级高可用。
7、常见问题处理
1、脑裂(Split-Brain)
现象:主备节点同时持有 VIP。
解决:
检查防火墙是否允许 VRRP 报文。配置 nopreempt 关闭抢占模式。使用单播替代组播。
2、 VIP 无法绑定
原因:网卡未正确配置或 IP 冲突
解决
检查 interface 配置与实际网卡名称是否一致。
使用 arping 检测 VIP 是否被占用:
arping -I eth0 192.168.1.100
相关文章:
高可用 Keepalived 服务部署流程
一、配置文件 vim /etc/keepalived/keepalived.confGLOBAL CONFIGURATION --- 全局配置部分VRRPD CONFIGURATION --- VRRP协议配置部分LVS CONFIGURATION --- LVS服务管理配置部分[rootlb01 ~]# cat /etc/keepalived/keepalived.…...
【新春特辑】2025年1月科技浪潮中的AI最新时事与科技趋势
2025年1月科技浪潮中的AI最新时事与科技趋势 一、AI科技时事 人工智能代理(AI Agent)的发展 最新进展:人工智能代理正逐步成为科技领域的新热点。这些代理能够自主执行特定任务,如管理日程、回复邮件等。然而,它们仍…...
解决Django非ORM模型提示初始化request问题
提问 Django在DRF时候自定义显示一些非model的字段提示TypeError: Field.__init__() got an unexpected keyword argument request 解答1 错误提示 TypeError: Field.__init__() got an unexpected keyword argument request 显示在创建序列化器实例时,传递了一个…...
G. XOUR
题目链接:Problem - G - Codeforces 题目大意:给你一个n长的序列, 其中你可以将a[i] XOR a[j] 的值 严格小于4的数对进行交换。 你可以操作任何几次, 让最后的数列最小。如果在 x 和 y 不同的第一个位置, xi<yi &…...
有没有个性化的UML图例
绿萝小绿萝 (53****338) 2012-05-10 11:55:45 各位大虾,有没有个性化的UML图例 绿萝小绿萝 (53****338) 2012-05-10 11:56:03 例如部署图或时序图的图例 潘加宇 (35***47) 2012-05-10 12:24:31 "个性化"指的是? 你的意思使用你自己的图标&…...
【RAG】SKLearnVectorStore 避免使用gpt4all会connection err
gpt4all 列表中包含了多个开源的大模型,如 Qwen2.5、Llama 3、DeepSeek、Mistral 等,但 不包含 OpenAI 的 GPT-4o。GPT-4o 是 OpenAI 提供的闭源模型,目前只能通过 OpenAI API 或 ChatGPT 官方应用(网页版、移动端)访问,并不支持本地运行,也没有 GGUF 量化格式的模型文件…...
vue框架技术相关概述以及前端框架整合
vue框架技术概述及前端框架整合 1 node.js 介绍:什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。 作用 1 运行java需要安装JDK,而Node.js是JavaScript的运行环…...
Spring Boot + Facade Pattern : 通过统一接口简化多模块业务
文章目录 Pre概述在编程中,外观模式是如何工作的?外观设计模式 UML 类图外观类和子系统的关系优点案例外观模式在复杂业务中的应用实战运用1. 项目搭建与基础配置2. 构建子系统组件航班服务酒店服务旅游套餐服务 3. 创建外观类4. 在 Controller 中使用外…...
牛客周赛 Round 78
题目目录 A-时间表查询!解题思路参考代码 B-一起做很甜的梦!解题思路参考代码 C-翻之解题思路参考代码 D-乘之解题思路参考代码 E-在树上游玩解题思路参考代码 A-时间表查询! \hspace{15pt} 今天是2025年1月25日,今年的六场牛客寒…...
【机器学习】自定义数据集 ,使用朴素贝叶斯对其进行分类
一、贝叶斯原理 贝叶斯算法是基于贝叶斯公式的,其公式为: 其中叫做先验概率,叫做条件概率,叫做观察概率,叫做后验概率,也是我们求解的结果,通过比较后验概率的大小,将后验概率最大的…...
02.01 生产者消费者
请使用条件变量实现2生产者2消费者模型,注意1个生产者在生产的时候,另外一个生产者不能生产。 1>程序代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h>…...
mac 手工安装OpenSSL 3.4.0
如果你希望继续安装 openssl-3.4.0 而不是降级到 3.1.1,可以尝试以下解决方案。根据你提供的错误信息,问题可能出在测试阶段(make test),我们可以尝试跳过测试或修复测试失败的原因。 --- ### **解决方案:…...
kamailio-ACC_JSON模块详解【后端语言go】
要确认 ACC_JSON 模块是否已经成功将计费信息推送到消息队列(MQueue),以及如何从队列中取值,可以按照以下步骤进行操作: 1. 确认 ACC_JSON 已推送到队列 1.1 配置 ACC_JSON 确保 ACC_JSON 模块已正确配置并启用。以下…...
ArkTS语言介绍
文章目录 一、基本知识声明类型运算符语句函数函数声明可选参数Rest参数返回类型函数的作用域函数调用函数类型箭头函数(又名Lambda函数)闭包函数重载类字段方法构造函数可见性修饰符对象字面量抽象类接口接口属性接口继承抽象类和接口泛型类型和函数泛型类和接口泛型约束泛型…...
海外问卷调查之渠道查,企业经营的指南针
海外问卷调查,是企业调研最常用到的方法,有目的、有计划、有系统地收集研究对象的现实状况或历史状况的一种有效手段,是指导企业经营的有效手段。 海外问卷调查充分运用历史法、观察法等方法,同时使用谈话、问卷、个案研究、测试…...
spring和Mybatis的逆向工程
在现代企业级开发中,使用Spring和MyBatis进行快速、高效的数据库操作是非常常见的。本文将深入探讨如何使用Spring和MyBatis进行逆向工程,帮助开发者自动生成数据库相关的代码,提高开发效率和代码质量。 一、什么是逆向工程 逆向工程是指从…...
【Android】问deepseek存储访问
这些天deepseek爆火,我们来问问android问题看看,如果问android中的应用怎么访问外部存储,回答的很清楚,但是如果问的深入一些,比如Android中是怎么控制让应用不能读取其他应用的外部存储文件的,回答的比较抽…...
Android记事本App设计开发项目实战教程2025最新版Android Studio
平时上课录了个视频,从新建工程到打包Apk,从头做到尾,没有遗漏任何实现细节,欢迎学过Android基础的同学参加,如果你做过其他终端软件开发,也可以学习,快速上手Android基础开发。 Android记事本课…...
python学习——函数的返回值
在 Python 中,函数的返回值决定了调用该函数后得到的结果。默认情况下,如果函数没有使用 return 语句或没有明确返回一个值,函数将返回 None。为了实现更复杂的逻辑,可以通过 return 语句返回多个值、错误信息或其他数据类型。 返…...
【竞技宝】裂变天地S1:BB0-2PARI淘汰出局
北京时间2月1日,DOTA2裂变天地S1继续进行,昨日共进行三场比赛,第三场比赛迎来败者组第二轮PARI对阵BB。以下是本场比赛的详细战报。 第一局: 首局比赛,BB在天辉方,PARI在夜魇方。阵容方面,BB点出了圣堂、卡尔、玛尔斯、奶绿、亚巴顿,PARI则是拿到小娜迦、凤凰、大圣、玛西、萨…...
Apache Spark 第 11 章:Delta Lake 与 Lakehouse
第十一章深入拆解 Delta Lake 与 Lakehouse 架构,这是现代数据工程的核心组件。从传统数据湖的痛点出发,逐层剖析 Delta Lake 的实现原理。 第一张:为什么需要 Delta Lake。三大痛点和 Delta Lake 的解法一目了然。接下来看最核心的实现机制—…...
当前主流的AI编程助手Trae、Cursor、通义灵码功能对比分析
Trae、Cursor和通义灵码是当前主流的AI编程助手,它们在功能定位、技术架构和使用体验上各有特色。以下是三款工具的详细对比分析: Trae详细操作手册和常见问题解决,请访问http://www.zrscsoft.com/sitepic/12166.html 一、核心功能对比 功能…...
从‘巡逻’到‘狂暴’:手把手用Unity行为树节点拼出一个有灵魂的BOSS战AI
从‘巡逻’到‘狂暴’:手把手用Unity行为树节点拼出一个有灵魂的BOSS战AI 想象一下,你正在玩一款动作游戏,面对一个看似普通的BOSS。起初它只是机械地挥舞武器,但随着战斗深入,它开始召唤小弟、释放范围技能࿰…...
释放创意:Mi-Create让智能表盘设计触手可及
释放创意:Mi-Create让智能表盘设计触手可及 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 问题发现:智能表盘设计的三重困境 在智能穿…...
Alpamayo-R1-10B实战案例:自动驾驶算法工程师日常调试VLA模型工作流
Alpamayo-R1-10B实战案例:自动驾驶算法工程师日常调试VLA模型工作流 1. 项目概述 Alpamayo-R1-10B是专为自动驾驶研发设计的开源视觉-语言-动作(VLA)模型,基于100亿参数架构构建。这套工具链包含AlpaSim模拟器和Physical AI AV数据集,旨在通…...
告别云端依赖:AnythingLLM本地Whisper实现完全离线语音转文字
告别云端依赖:AnythingLLM本地Whisper实现完全离线语音转文字 【免费下载链接】anything-llm The all-in-one AI productivity accelerator. On device and privacy first with no annoying setup or configuration. 项目地址: https://gitcode.com/GitHub_Trendi…...
让老旧Mac焕发新生:OpenCore Legacy Patcher完整指南
让老旧Mac焕发新生:OpenCore Legacy Patcher完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 您的Mac是否被苹果官方"抛弃"&…...
GLM-4.1V-9B-Base效果展示:艺术画作风格+主题+文化元素三重解析
GLM-4.1V-9B-Base效果展示:艺术画作风格主题文化元素三重解析 1. 视觉理解新标杆:GLM-4.1V-9B-Base简介 GLM-4.1V-9B-Base是智谱开源的一款视觉多模态理解模型,专为图像内容识别、场景描述和目标问答任务而设计。不同于普通的图像识别工具&…...
foobar2000界面美化终极指南:3步打造你的专属音乐播放器
foobar2000界面美化终极指南:3步打造你的专属音乐播放器 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 还在为foobar2000那套单调乏味的默认界面感到困扰吗?今天我要为你介绍…...
从零到一:深度解析BertTokenizer.from_pretrained的加载机制与实战技巧
1. 初识BertTokenizer.from_pretrained:你的NLP敲门砖 第一次接触Hugging Face的Transformers库时,我被BertTokenizer.from_pretrained()这个方法深深吸引了。它就像是一把万能钥匙,能快速打开各种预训练语言模型的大门。记得当时我尝试用传统…...
