Keepalived学习

[复制链接]
发表于 2026-10-3 22:04:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Keepalived 是 Linux 高可用里最基础的一环,靠 VRRP 把多个节点虚拟成同一个 VIP,主节点挂了就自动漂移。本文把搭建过程走一遍:环境准备、安装、配置从节点、抢占与非抢占模式、单播设置、邮件通知,再到双主架构,最后落到 IPVS 与 HAProxy 两种真实用途。

一、环境准备

需要两台服务器、两台客户机。为了排除干扰,先把防火墙和 SELinux 关掉——否则 VRRP 报文可能被直接丢掉,表现为 VIP 一直起不来。

两台主机上都要装 keepalived:

yum install keepalived -y

二、配置文件骨架

主配置文件在 /etc/keepalived/keepalived.conf:

vim /etc/keepalived/keepalived.conf

先配从(backup)节点。核心是三个部分:global_defs 里放路由标识,vrrp_instance 里定 VRRP 实例与权重,virtual_server 里放后端真实服务器。主从之间靠 state 与 priority 区分,主节点 priority 更大。

另一台路由上做同样的配置,只把 state 和 priority 对调。配完用 systemctl restart keepalived 起服务,再用 ip addr 看 VIP 是否落在主节点上。

三、抢占模式与非抢占模式

  • 抢占模式(默认):高优先级节点回来后立刻抢回 VIP,出现主从切换比较频繁的抖动场景时容易反复漂移。
  • 非抢占模式:先启动的节点占住 VIP,后启动的高优先级节点只待命不抢,适合希望稳定一次、减少切换的场景。

做法是给 vrrp_instance 加 nopreempt,主节点先起来并持锁,之后即使另一台优先级更高的机器加入,也不会把 VIP 抢走。

四、单播模式设置

默认 VRRP 走组播 224.0.0.18,很多云环境和开启组播受限的机房会丢包,改成单播点到点更稳。在 vrrp_instance 里显式声明源地址与对端地址:

unicast_src_ip 本机IP
unicast_peer {
  对端IP
}

两端都要写对方的地址。改完重启 keepalived,再看 VIP 是否能正常漂移,这是线上最常见的失败点之一。

五、邮件通知

节点切换时发邮件提醒,需要在 global_defs 里配 SMTP 服务器与收件人,再写一个通知脚本放在 /etc/keepalived/ 下,在 notify_master / notify_backup 里调用。

流程是:装好发送软件 → 拿到邮箱授权码(QQ 邮箱需在邮箱设置里开启 SMTP 并生成授权码,不是登录密码)→ 写通知脚本 → 在配置里引用 → 手动触发切换验证能不能收到信。

六、双主架构

单主模式下备机长期空闲浪费资源。双主(主备互为主)的做法是建两个 VRRP 实例:一个在 A 上为主、B 上为备,另一个在 B 上为主、A 上为备。两个 VIP 分别落在两台机器上,任一节点故障时会整体易主,两台机器同时干活又各自有备份。

七、实现 IPVS 高可用

Keepalived 自带 IPVS 支持,可以顺便做四层负载均衡。前提是装好 httpd,并把客户机的 VIP 相关配置先关掉,再往回环口加 VIP——注意掩码要写 32 位,写成 24 位会导致长途连接不出来。

ip addr add dev lo 172.25.254.100/32

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

yum install httpd -y
echo RS1-172.25.254.100 > /var/www/html/index.html

前面四个 arp 参数是为了让新增的 VIP 不响应非本地地址的 ARP 请求、不主动宣告,避免与真实网卡冲突。两台节点都要做一遍,只是 index.html 内容写成各自的标识。

八、实现 HAProxy 高可用

如果前面挂着的是 HAProxy,思路一样:两台主机各装一份 HAProxy,配置相同,由 keepalived 的 VIP 做入口。另外两个节点要打开内核参数转发:

net.ipv4.ip_forward = 1

改完执行 sysctl -p 生效。整体结构是:客户端 → VIP → 两台节点上的 HAProxy → 后端真实服务器,VIP 的漂移由 VRRP 负责。

小结

Keepalived 本身只管 VIP 漂移,真正的业务能力挂在 IPVS 或 HAProxy 上。搭建时最容易卡住的三处是:防火墙/SELinux 没关、组播不通需要改单播、VIP 掩码写成 24 位导致远程连不上。把这三点确认掉,主备切换基本一次成。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表