Keepalived与Apache构建主从高可用架构,核心是通过VIP实现无缝切换:主节点持VIP并运行Apache,备节点监听状态;主节点Apache异常时,Keepalived快速检测并漂移VIP至备节点,确保服务连续。

Keepalived 与 Apache 构建主从高可用架构,核心是用 Keepalived 管理一个对外服务的虚拟 IP(VIP),由主节点(Master)持有并响应流量,备节点(Backup)实时监听主节点状态;一旦主节点上的 Apache 服务异常或主机宕机,Keepalived 自动将 VIP 漂移到备节点,客户端无感知地继续访问——这就是“无缝切换”的实质。关键不在“零中断”,而在故障检测快、切换动作准、服务恢复稳。
基础环境与服务部署
确保两台服务器(如 apache-master 和 apache-backup)系统一致(推荐 CentOS 7+/Rocky 8+),网络互通,且关闭防火墙与 SELinux:
- 执行 systemctl stop firewalld && systemctl disable firewalld 和 setenforce 0(临时)或修改 /etc/selinux/config 永久禁用
- 两台均安装 Apache:yum install -y httpd,配置不同首页便于验证切换效果(如 master 显示 "Apache-Master-192.168.10.10",backup 显示 "Apache-Backup-192.168.10.20")
- 启动并设为开机自启:systemctl enable --now httpd
Keepalived 主从配置要点
在两台服务器上均安装 Keepalived:yum install -y keepalived,然后差异化配置 /etc/keepalived/keepalived.conf:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 主节点(priority 100):设置 state MASTER,priority 100,启用抢占(默认),绑定 VIP 到本机网卡(如 interface eth0)
- 备节点(priority 90):设置 state BACKUP,priority 90,其余 VRRP 参数(如 virtual_router_id、authentication)必须与主节点严格一致
- VIP 示例:virtual_ipaddress { 192.168.10.100/24 dev eth0 label eth0:1 },该地址即客户端最终访问的统一入口
健康检查与故障触发逻辑
仅靠主机存活不等于服务可用。需让 Keepalived 主动探测 Apache 是否真能响应 HTTP 请求:
- 在配置中添加 vrrp_script chk_httpd 脚本块,例如定期调用 curl -s --head http://127.0.0.1 | grep "200 OK"
- 在 vrrp_instance VI_1 中引用该脚本:track_script { chk_httpd },并设定权重变化(如 weight -20)
- 当脚本失败时,主节点优先级降为 80,低于备节点的 90,触发 VRRP 重新选举,VIP 自动漂移
验证与日常维护建议
切换是否真正“无缝”,需实测验证而非仅看日志:
- 客户端持续请求 curl http://192.168.10.100(或用浏览器 F5 刷新),同时在主节点执行 systemctl stop httpd,观察返回内容是否秒级切换为 backup 页面
- 检查 Keepalived 日志:journalctl -u keepalived -f,确认有 "VRRP_Instance(VI_1) Entering FAULT STATE" 和 "Transition to MASTER STATE" 等关键事件
- 生产环境务必开启邮件告警,在 notification_email 和 smtp_server 区块配置 SMTP 信息,并启用 notify_master / notify_backup 脚本

















