当前位置: 首页 > news >正文

高可用 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

题目链接&#xff1a;Problem - G - Codeforces 题目大意&#xff1a;给你一个n长的序列&#xff0c; 其中你可以将a[i] XOR a[j] 的值 严格小于4的数对进行交换。 你可以操作任何几次&#xff0c; 让最后的数列最小。如果在 x 和 y 不同的第一个位置&#xff0c; xi<yi &…...

有没有个性化的UML图例

绿萝小绿萝 (53****338) 2012-05-10 11:55:45 各位大虾&#xff0c;有没有个性化的UML图例 绿萝小绿萝 (53****338) 2012-05-10 11:56:03 例如部署图或时序图的图例 潘加宇 (35***47) 2012-05-10 12:24:31 "个性化"指的是&#xff1f; 你的意思使用你自己的图标&…...

【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 介绍&#xff1a;什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Google的V8引擎。 作用 1 运行java需要安装JDK&#xff0c;而Node.js是JavaScript的运行环…...

Spring Boot + Facade Pattern : 通过统一接口简化多模块业务

文章目录 Pre概述在编程中&#xff0c;外观模式是如何工作的&#xff1f;外观设计模式 UML 类图外观类和子系统的关系优点案例外观模式在复杂业务中的应用实战运用1. 项目搭建与基础配置2. 构建子系统组件航班服务酒店服务旅游套餐服务 3. 创建外观类4. 在 Controller 中使用外…...

牛客周赛 Round 78

题目目录 A-时间表查询&#xff01;解题思路参考代码 B-一起做很甜的梦&#xff01;解题思路参考代码 C-翻之解题思路参考代码 D-乘之解题思路参考代码 E-在树上游玩解题思路参考代码 A-时间表查询&#xff01; \hspace{15pt} 今天是2025年1月25日&#xff0c;今年的六场牛客寒…...

【机器学习】自定义数据集 ,使用朴素贝叶斯对其进行分类

一、贝叶斯原理 贝叶斯算法是基于贝叶斯公式的&#xff0c;其公式为&#xff1a; 其中叫做先验概率&#xff0c;叫做条件概率&#xff0c;叫做观察概率&#xff0c;叫做后验概率&#xff0c;也是我们求解的结果&#xff0c;通过比较后验概率的大小&#xff0c;将后验概率最大的…...

02.01 生产者消费者

请使用条件变量实现2生产者2消费者模型&#xff0c;注意1个生产者在生产的时候&#xff0c;另外一个生产者不能生产。 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&#xff0c;可以尝试以下解决方案。根据你提供的错误信息&#xff0c;问题可能出在测试阶段&#xff08;make test&#xff09;&#xff0c;我们可以尝试跳过测试或修复测试失败的原因。 --- ### **解决方案&#xff1a…...

kamailio-ACC_JSON模块详解【后端语言go】

要确认 ACC_JSON 模块是否已经成功将计费信息推送到消息队列&#xff08;MQueue&#xff09;&#xff0c;以及如何从队列中取值&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 确认 ACC_JSON 已推送到队列 1.1 配置 ACC_JSON 确保 ACC_JSON 模块已正确配置并启用。以下…...

ArkTS语言介绍

文章目录 一、基本知识声明类型运算符语句函数函数声明可选参数Rest参数返回类型函数的作用域函数调用函数类型箭头函数(又名Lambda函数)闭包函数重载类字段方法构造函数可见性修饰符对象字面量抽象类接口接口属性接口继承抽象类和接口泛型类型和函数泛型类和接口泛型约束泛型…...

海外问卷调查之渠道查,企业经营的指南针

海外问卷调查&#xff0c;是企业调研最常用到的方法&#xff0c;有目的、有计划、有系统地收集研究对象的现实状况或历史状况的一种有效手段&#xff0c;是指导企业经营的有效手段。 海外问卷调查充分运用历史法、观察法等方法&#xff0c;同时使用谈话、问卷、个案研究、测试…...

spring和Mybatis的逆向工程

在现代企业级开发中&#xff0c;使用Spring和MyBatis进行快速、高效的数据库操作是非常常见的。本文将深入探讨如何使用Spring和MyBatis进行逆向工程&#xff0c;帮助开发者自动生成数据库相关的代码&#xff0c;提高开发效率和代码质量。 一、什么是逆向工程 逆向工程是指从…...

【Android】问deepseek存储访问

这些天deepseek爆火&#xff0c;我们来问问android问题看看&#xff0c;如果问android中的应用怎么访问外部存储&#xff0c;回答的很清楚&#xff0c;但是如果问的深入一些&#xff0c;比如Android中是怎么控制让应用不能读取其他应用的外部存储文件的&#xff0c;回答的比较抽…...

Android记事本App设计开发项目实战教程2025最新版Android Studio

平时上课录了个视频&#xff0c;从新建工程到打包Apk&#xff0c;从头做到尾&#xff0c;没有遗漏任何实现细节&#xff0c;欢迎学过Android基础的同学参加&#xff0c;如果你做过其他终端软件开发&#xff0c;也可以学习&#xff0c;快速上手Android基础开发。 Android记事本课…...

python学习——函数的返回值

在 Python 中&#xff0c;函数的返回值决定了调用该函数后得到的结果。默认情况下&#xff0c;如果函数没有使用 return 语句或没有明确返回一个值&#xff0c;函数将返回 None。为了实现更复杂的逻辑&#xff0c;可以通过 return 语句返回多个值、错误信息或其他数据类型。 返…...

【竞技宝】裂变天地S1:BB0-2PARI淘汰出局

北京时间2月1日,DOTA2裂变天地S1继续进行,昨日共进行三场比赛,第三场比赛迎来败者组第二轮PARI对阵BB。以下是本场比赛的详细战报。 第一局: 首局比赛,BB在天辉方,PARI在夜魇方。阵容方面,BB点出了圣堂、卡尔、玛尔斯、奶绿、亚巴顿,PARI则是拿到小娜迦、凤凰、大圣、玛西、萨…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...