Keepalived 深度解析:原理、编译安装与高可用集群配置

news/2026/1/22 11:33:19/文章来源:https://www.cnblogs.com/ceiloruz/p/19516193

Keepalived 深度解析:原理、编译安装与高可用集群配置

在高可用(High Availability, HA)架构中,消除单点故障是保障业务连续性的核心任务。Keepalived 正是为此而生的一款轻量级、高性能的解决方案。它通过VRRP协议实现地址漂移和故障自动转移,确保服务不间断。

1. Keepalived 简介与工作原理

Keepalived 是一个基于虚拟路由冗余协议 (VRRP) 的高可用解决方案。它的主要职责是监控服务器集群的状态,并在主服务器发生故障时,自动、无缝地将服务切换到备用服务器上。

1.1 核心思想:VRRP 协议

VRRP 协议是理解 Keepalived 的关键。我们可以通过一个简单的场景来理解它:

  1. 虚拟IP (VIP):在一个集群中(例如,两台服务器),我们设定一个不属于任何物理服务器的虚拟IP地址 (Virtual IP, VIP)。所有客户端的请求都只访问这个VIP。
  2. 角色分配:集群中的服务器分为两种角色:一台主节点 (MASTER) 和一台或多台备节点 (BACKUP)
  3. 正常运作:在正常情况下,主节点会持有VIP,并处理所有流向VIP的请求。同时,它会周期性地通过组播(地址 224.0.0.18)发送VRRP通告包,向集群中的其他节点宣告自己“在线”。
  4. 故障切换:如果备节点在预设的时间内没有收到主节点的通告,它会判定主节点发生故障。此时,备节点会根据预设的优先级 (priority) 来选举出一个新的主节点。优先级最高的备节点将接管VIP,将其绑定到自己的网络接口上,从而继续对外提供服务。

这个切换过程对客户端是完全透明的,从而实现了服务的高可用性。

1.2 Keepalived 的三大核心模块

Keepalived 的功能由三个主要模块构成:

模块 职责
Core 模块 作为核心,负责主进程的启动、维护,以及全局配置文件的加载和解析。
Check 模块 负责健康检查。它可以监控后端真实服务器(如Nginx、Tomcat等)的状态,支持TCP、HTTP等多种检查方式。
VRRP 模块 负责实现VRRP协议的功能,包括处理主备节点间的状态同步和故障切换。

2. 安装 Keepalived

安装 Keepalived 主要有两种方式:使用系统的包管理器(如YUM)或从源码编译安装。对于生产环境,强烈推荐使用源码编译安装,因为这样可以获得最新版本并进行灵活定制。

2.1 YUM 安装(适用于快速上手)

在 CentOS/RHEL 系统上,可以非常方便地使用 YUM 进行安装。

# 安装 Keepalived
yum install keepalived -y# 管理服务
systemctl start keepalived.service    # 启动服务
systemctl enable keepalived.service   # 设置开机自启
systemctl status keepalived.service   # 查看服务状态
2.2 源码编译安装(推荐用于生产环境)
  1. 安装编译依赖

    yum install -y gcc openssl-devel libnl3-devel libnfnetlink-devel net-snmp-devel curl make
    
  2. 下载、编译与安装

    # 进入源码存放目录
    cd /usr/local/src/# 下载源码包 (版本号可替换为最新的稳定版)
    curl -O http://keepalived.org/software/keepalived-2.2.4.tar.gz# 解压并进入目录
    tar xvf keepalived-2.2.4.tar.gz
    cd keepalived-2.2.4# 配置、编译并安装 (使用 --prefix 指定安装目录,便于管理)
    ./configure --prefix=/usr/local/keepalived
    make && make install
    
  3. 配置为系统服务

    为了方便管理,我们需要将其配置为 systemd 服务。

    # 复制 systemd 服务文件
    cp /usr/local/src/keepalived-2.2.4/keepalived/keepalived.service /usr/lib/systemd/system/# 重新加载 systemd 配置
    systemctl daemon-reload
    

3. 配置 Keepalived 实现主备高可用

下面我们通过一个实例来配置一个主备高可用集群。

环境假设:

  • 主节点 (MASTER): 物理IP 192.168.10.11
  • 备节点 (BACKUP): 物理IP 192.168.10.12
  • 虚拟IP (VIP): 192.168.10.100
  • 通信网卡: eth0
3.1 主节点 (MASTER) 配置

编辑配置文件 /etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {# 节点标识,建议唯一,可使用主机名router_id LVS_MASTER_01
}vrrp_instance VI_1 {state MASTER                # 初始状态设为 MASTERinterface eth0              # 绑定VIP和发送VRRP通告的网卡virtual_router_id 51        # 虚拟路由ID,主备节点必须一致priority 100                # 优先级,主节点应高于备节点(1-254)advert_int 1                # VRRP通告间隔(秒)# 单播配置,避免组播可能带来的问题unicast_src_ip 192.168.10.11 # 本机物理IPunicast_peer {192.168.10.12            # 对端备节点的物理IP}authentication {            # 认证配置,主备必须一致auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100/24       # 定义虚拟IP(VIP),可定义多个}
}
3.2 备节点 (BACKUP) 配置

备节点的配置与主节点大部分相同,主要区别在于 statepriority

! Configuration File for keepalivedglobal_defs {router_id LVS_BACKUP_01
}vrrp_instance VI_1 {state BACKUP                # 初始状态设为 BACKUPinterface eth0virtual_router_id 51        # 必须与主节点相同priority 90                 # 优先级低于主节点advert_int 1unicast_src_ip 192.168.10.12 # 本机物理IPunicast_peer {192.168.10.11            # 对端主节点的物理IP}authentication {auth_type PASSauth_pass 1111          # 认证密码与主节点相同}virtual_ipaddress {192.168.10.100/24}
}
3.3 启动与验证
  1. 启动服务:在主备两个节点上分别启动 Keepalived。

    systemctl start keepalived
    
  2. 检查VIP:在主节点上执行 ip addr show eth0,您应该能看到 VIP 192.168.10.100 已经成功绑定。

  3. 模拟故障:停止主节点的 Keepalived 服务 (systemctl stop keepalived)。稍等片刻,在备节点上再次执行 ip addr show eth0,您会发现VIP已经成功“漂移”到了备用节点上。


4. 核心配置参数解析

下表是对 vrrp_instance 块中核心参数的详细说明:

参数项 含义与说明
state 节点的初始状态,MASTERBACKUP。最终谁是MASTER由优先级决定。
interface 用于绑定VIP和发送VRRP通告的物理网络接口。
virtual_router_id 虚拟路由ID(0-255),同一VRRP实例下的所有节点必须保持一致。
priority 优先级(1-254),数值越大,优先级越高。在选举中,高优先级的节点会成为MASTER。
advert_int VRRP通告包的发送时间间隔,单位为秒。
authentication 节点间的通信认证配置,防止非法节点加入集群。
auth_type 认证类型,通常使用 PASS (密码认证)。
auth_pass 认证密码,主备节点必须一致。
virtual_ipaddress 定义的虚拟IP (VIP) 列表,可以有多个。
nopreempt (可选) 启用非抢占模式。

5. 非抢占模式(nopreempt

默认情况下,Keepalived 工作在抢占模式。这意味着当原来的主节点从故障中恢复后,它会凭借更高的优先级重新抢占VIP,导致服务再次切换。

在某些对服务稳定性要求极高的场景下,我们希望避免这种不必要的切换。这时可以启用非抢占模式

配置方法:在备节点的 vrrp_instance 配置块中添加 nopreempt

vrrp_instance VI_1 {state BACKUPpriority 90nopreempt  # 启用非抢占模式...
}

注意:在非抢占模式下,建议将所有节点的初始 state 都设置为 BACKUP,并确保它们的 priority 值不同。这样,启动时优先级最高的节点会成为MASTER,而当它故障后,即便恢复了也不会主动抢占VIP。


总结

通过本文档,相信您已经对Keepalived的原理、安装和配置有了深入的了解。Keepalived 以其简单、高效的特性,成为构建高可用架构的得力工具。在生产环境中,它通常与 Nginx、LVS、HAProxy 等负载均衡器结合,并配合自定义的健康检查脚本,以构建更加健壮和复杂的应用高可用体系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1199818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026中国DevSecOps市场全景:安全左移催生国产化工具链崛起

2026中国DevSecOps市场全景:安全左移催生国产化工具链崛起 随着数字化转型进入深水区,中国软件产业正在经历一场由安全合规驱动的DevSecOps工具链重构。在《网络安全法》《数据安全法》等政策法规的硬性要求下,传统"先开发后安全"的…

2026年项目管理工具TOP10:Gitee以技术驱动重塑研发协作生态

2026年项目管理工具TOP10:Gitee以技术驱动重塑研发协作生态 **2026年的企业数字化战场,项目管理工具正经历从"功能堆砌"到"价值创造"的质变。**在这场变革中,Gitee凭借其独特的"代码托管项目管理"双轮驱动模式…

基于STM32单片机金属探测器涡流传感器语音播报分拣无线设计S224(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机金属探测器涡流传感器语音播报分拣无线设计S224(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码STM32-S224-金属探测器金属分拣涡流传感器语音播报阈值可设OLED屏指示灯按键(无线方式选择) 产品功能描述&#x…

CentOS7升级curl8.18.0

(1).实验环境4核8G CentOS7.9.2009配置阿里云yum源和阿里云epel源,关闭防火墙和SELinux。 (2).源码编译安装curl8.18.0CentOS7官方支持的版本只到curl 7.29.0 ,所以需要进行源码编译安装,包下载地址:https://curl…

基于STM32单片机C可调设计S274(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机C可调设计S274(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码STM32-S274-温湿度对讲机频道可设语音通话一对一状态显示铃音提醒按键设置OLED屏声光提醒 产品功能描述: 本系统由STM32F103C8T6单片机…

2026上海国际课程培训机构解析:课程体系与口碑参考

随着留学需求的持续增长,上海地区国际课程培训市场逐渐成熟,涵盖语言标化考试、国际高中先修课程及综合能力提升等多领域,为不同阶段学生提供多样化学习支持。选择合适的培训机构成为许多家庭关注的重点,需结合课程…

创业首选!多城市覆盖的同城小程序源码,零基础搭建

温馨提示:文末有资源获取方式 本地生活服务市场正迎来前所未有的机遇。一款功能集成度极高的多城市同城便民信息小程序源码系统,以其开箱即用的特性,成为无数创业者与中小企业切入蓝海市场的利器。它不仅仅是一套代码,更是一个完整…

基于STM32单片机衣柜鞋柜照明红外感应空气质量除湿消毒设计S290(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机衣柜鞋柜照明红外感应空气质量除湿消毒设计S290(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码STM32-S290-空气质量光敏照明红外感应温湿度换气除湿加热烘干真实紫外线消毒开关柜门自动手动OLED屏声光提醒(无线…

上海市虹口杨浦浦东新闵行宝山区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜

经教育部教育考试院备案、全国雅思教学质量评估中心独家指导,参照《2025-2026中国大陆雅思备考趋势白皮书》核心指标,结合上海市虹口区、杨浦区、浦东新区、闵行区、宝山区11500份考生调研问卷、136家教育机构实地探…

python 列表和元组及其常用库函数

列表(List)和元组(Tuple)是 Python 中两种常用的序列类型,它们在功能和特性上有显著差异。 目录 列表和元组介绍 常用库函数(以列表为例) a 末尾添加x 删除a[idx]元素 查找元素 x 在序列 a 中第一次出…

基于STM32单片机交流电市电电压电流过载保护220V无线APP设计S176(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机交流电市电电压电流过载保护220V无线APP设计S176(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码STM32-S176-交流电压电流功率过载保护LCD1602液屏声光报警按键(无线方式选择) 产品功能描述: 本系统…

基于STM32单片机宠物喂食鱼缸鱼塘水养殖液位定时云平台设计S192(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机宠物喂食鱼缸鱼塘水养殖液位定时云平台设计S192(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码STM32-S192-定时投喂温度(防水)水位检测补水加热手动自动OLED屏声光提醒按键(无线方式选择) 产品功能描述&#x…

前端邪修:不用Vite也不用Webpack,把React拖回HTML时代的反工程化实践

前言 最近一直忙于装修和开发新产品,文章都没时间更新,快速迭代的后果就是架构没有跟上功能增长的步伐,现在隐隐有脱离掌控的感觉,我这几天也把进度放慢下来,思考一下整体的规划。 也顺便整理一下笔记,没有输出心…

STAR-CCM+许可证与HPC计算资源全局使用状态可视化监控大屏

为什么你的企业需要STAR-CCM许可证与HPC计算资源的全局监控?作为一家企业的IT部门经理,我深知企业在数字化转型过程中,计算资源和软件许可证这两个“隐形资源”对研发投入的影响。在我们公司,工程仿真软件STAR-CCM是产品设计阶段不…

原圈科技AI营销内容:SaaS案例创作告别低效,效率翻倍

原圈科技的AI营销内容解决方案,旨在解决SaaS企业客户案例生产周期长、效率低的痛点。本文将通过四步实操教程,揭秘如何利用其AI多智能体系统,快速、批量生成高质量的个性化客户故事,将营销团队从繁琐工作中解放出来,实…

从手动管理到智能运营:Citrix许可证管理数字化升级

从手动管理到智能运营:Citrix许可证管理数字化升级作为一名长期从事Citrix平台运维的工程师,我深知企业IT部门在进行许可证管理时所面临的挑战。是在大规模部署的环境下,手动登记、核对、更新许可证不仅效率低下,更存在极高的出错…

学长亲荐10个一键生成论文工具,本科生搞定毕业论文!

学长亲荐10个一键生成论文工具,本科生搞定毕业论文! 论文写作的救星:AI工具如何改变你的学术之路 在当今这个信息爆炸的时代,本科生面对毕业论文的压力可谓前所未有。从选题到撰写,再到查重降重,每一个环…

好写作AI:面对数据就头大?别慌!让AI当你的“数据分析翻译官”

各位一看到Excel里密密麻麻的数字就瞳孔地震、一想到要写“结果与讨论”就双手发软的同学们,你们并不孤单!数据处理与分析,简直是横在文科生和部分理科生面前的“珠穆朗玛峰”——知道它重要,但爬上去真的好难。 别急着投降&…

nRF21540特性及配置详解

nRF21540 的主要特性如下 集成射频功率放大器(PA)和低噪声放大器(LNA) 支持协议:Bluetooth Low Energy、Bluetooth mesh、Thread、Zigbee (IEEE 802.15.4) 以及 2.4 GHz 私有协议 最大输出功率:可调节,最高可达…

OpenHarmony环境下React Native:Zustand持久化存储

OpenHarmony环境下React Native:Zustand持久化存储实战指南本文深入探讨在OpenHarmony平台使用Zustand实现React Native应用状态持久化的完整解决方案。通过详细的架构解析、适配策略和实测代码,解决跨平台状态管理的核心痛点,提供开箱即用的…