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

Ubuntu 安装 Keepalived

Keepalived 是什么

Keepalived 是一个用于实现高可用性(High Availability, HA)的服务,是一款基于 VRRP 协议的高可用软件,常用于主备切换和虚拟IP漂移,在服务故障时自动实现故障转移。

Keepalived 的核心功能

功能说明
VRRPVirtual Router Redundancy Protocol,实现主备切换,保障VIP持续可用
健康检查(check)定时检测真实服务(如 Nginx、LVS、MySQL)是否存活
VIP 漂移将一个虚拟 IP 绑定到当前健康的主节点上,故障时自动转移到备节点
结合 LVS通常与 LVS(Linux Virtual Server)一起部署,提供高可用负载均衡

安装 Keepalived

sudo apt-get updatesudo apt-get install -y keepalived 

查看是否安装成功

keepalived -v

开启开机自启动:

sudo systemctl enable keepalived

Keepalived 常用命令

开启开机自启动:sudo systemctl enable keepalived

禁用开机自启动:sudo systemctl disable keepalived

开启服务:sudo systemctl start keepalived

关闭服务:sudo systemctl stop keepalived

重启服务:sudo systemctl restart keepalived

查看状态:sudo systemctl status keepalived


编辑配置文件

sudo vim /etc/keepalived/keepalived.conf

配置文件参数说明

# 定义一个 VRRP 实例,VI_1 是自定义的实例名称,每一个实例代表一个高可用虚拟路由组。
vrrp_instance VI_1 {## 指定该节点的初始角色,MASTER:主节点,正常情况下负责绑定虚拟IP(VIP)。BACKUP:备用节点,在主节点不可用时接管 VIP。# Keepalived 自动通过优先级判断主备,不是硬编码的主备,所以这个只是初始角色。state MASTER## 指定绑定 VIP 的网络接口(网卡名),例如 eth0、ens33、enp0s3 等。使用 ip a 查看当前系统的网卡名。interface ens33## 虚拟路由器的 ID,用于识别一个 VRRP 实例的组。所有参与该 VRRP 实例(主备)的服务器必须一致。范围:0~255,确保不同服务之间不要冲突。virtual_router_id 51## 指定该节点的优先级。数字越大,优先级越高。主节点应配置较高的值(如 100),备用节点配置较低(如 90)。当优先级高的节点恢复时,会自动抢占 VIPpriority 100## 指定 VRRP 广播间隔时间(秒)。主节点每隔指定的秒发送一次心跳包,默认是 1 秒,一般无需修改advert_int 1## 禁用抢占# nopreempt                      # 即使此节点优先级更高也不抢占 MASTER## 延迟抢占 VIP# 主节点恢复后,希望它稳定运行一段时间再接管 VIP,防止主节点频繁重启时反复抢占,导致服务中断# nopreempt 和 preempt_delay 不能同时使用。如果两者都写了,以 nopreempt 为准# preempt_delay 10              # 恢复后等待10秒才尝试抢占 MASTER## 状态通知脚本(可选)# notify_master "/path/to/script" # 成为 MASTER 时执行脚本# notify_backup "/path/to/script" # 成为 BACKUP 时执行脚本# notify_fault  "/path/to/script" # 出现故障时执行脚本# notify        "/path/to/script" # 所有状态变更时都执行的统一脚本## 本机实际 IP 地址(作为 VRRP 包发送源 IP)unicast_src_ip 192.168.189.135## 用于将 Keepalived 的 VRRP 心跳通信改为“单播”(Unicast)模式。不配置的话默认的是“组播”(Multicast)模式。云服务器(如阿里云、腾讯云)中,出于安全限制,组播通常被禁用或不可用。unicast_peer {192.168.189.136192.168.189.137}## 用于设置主备之间的认证信息authentication {## 认证类型,一般用 PASS(明文密码)auth_type PASS## 认证密码(主备节点必须保持一致)auth_pass 123456}## 指定一个或多个虚拟IP(VIP)。VIP 是客户端访问的目标地址,当主节点故障,VIP 会自动漂移到备节点virtual_ipaddress {192.168.189.100           # 虚拟IP 1,例如用于 web 服务A192.168.189.101           # 虚拟IP 2,例如用于 web 服务B192.168.189.102           # 虚拟IP 3,例如用于 mysql 服务}
}

配置文件实操

  • 主节点:192.168.189.135,优先级为 100
  • 备节点:192.168.189.136,优先级为 90
  • 第三节点:192.168.189.137,优先级为 80

这些参数必须在所有节点一致:vrrp_instance、virtual_router_id、advert_int、authentication、virtual_ipaddress

1. 主节点(192.168.189.135)配置

sudo vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1unicast_src_ip 192.168.189.135unicast_peer {192.168.189.136192.168.189.137}authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.189.100}
}

重启 keepalived

sudo systemctl restart keepalived

2. 备节点(192.168.189.136)配置

sudo vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1unicast_src_ip 192.168.189.136unicast_peer {192.168.189.135192.168.189.137}authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.189.100}
}

重启 keepalived

sudo systemctl restart keepalived

3. 第三节点(192.168.189.137)配置

sudo vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 80advert_int 1unicast_src_ip 192.168.189.137unicast_peer {192.168.189.135192.168.189.136}authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.189.100}
}

重启 keepalived

sudo systemctl restart keepalived

测试是否配置成功

测试步骤:查看VIP在哪个节点上?发现在主节点上,把主节点关闭后,发现VIP漂移到备用节点上了

1. 在主节点(192.168.189.135)运行:

ip a | grep 192.168.189.100

输入如下内容,表示 VIP 被绑定到此节点

inet 192.168.189.100/32 scope global ens33

2. 关闭主节点的 Keepalived 服务:

sudo systemctl stop keepalived

3. 在备节点(192.168.189.136)运行:

ip a | grep 192.168.189.100

VIP 会自动漂移到备节点。

http://www.xdnf.cn/news/4536.html

相关文章:

  • Linux 系统的进阶指令详解
  • 【软件设计师:算法】3.排序算法
  • 微信小程序pinia的应用
  • 对redis的深入了解
  • 【每日刷题】第2天
  • 互联网大厂Java求职面试:AI集成与云原生架构设计
  • Go 面向对象,封装、继承、多态
  • 拆解 Prompt 工程:五大场景驱动 DeepSeek 超越 ChatGPT
  • AUTOSAR图解==>AUTOSAR_SWS_WirelessEthernetTransceiverDriver
  • 【AI入门】CherryStudio入门3:结合FastMCP创建自己的MCP服务,实现哔哩视频查询
  • 梅特卡夫法则——AI与思维模型【97】
  • 单片机-STM32部分:7、GPIO输入 按键
  • ()初始化 和 { }初始化
  • PostgreSQL中“参数默认值实现伪重载“详解
  • Unable to ping server at localhost:1099解决
  • 【Linux庖丁解牛】—程序地址空间【进程地址空间 | 虚拟地址空间】
  • 每日一题洛谷P1025 [NOIP 2001 提高组] 数的划分c++
  • Python打卡 DAY 18
  • MySQL核心机制:日志系统、锁机制与事务管理的深度剖析
  • 六个仓库合并为一个仓库,保留master和develop分支的bat脚本
  • llama-Factory不宜直接挂接Ollama的大模型
  • 互联网大厂Java求职面试:分布式系统中向量数据库与AI应用的融合探索
  • FastDFS,分布式文件存储系统,介绍+配置+工具类
  • upload-labs靶场通关详解:第一关
  • 远程访问代理+内网穿透:火山引擎边缘网关助力自部署模型公网调用与全链路管控
  • 阿维塔汽车CAN总线数据适配技术解析与免破线数据采集实践
  • 模型中台建设全流程指南
  • [逆向工程]什么是 Process Explorer
  • 智慧系统搭建平台有哪些?2025智慧系统搭建平台推荐?智慧系统搭建平台TOP10全面解析
  • ERP源码?ERP系统是什么?能够解决什么问题?