编程技术分享平台

网站首页 > 技术教程 正文

基于 Linux 搭建高可用 Keepalived+HAProxy 双机热备负载均衡集群

xnh888 2025-06-10 02:45:28 技术教程 6 ℃ 0 评论

一、前言

在实际生产环境中,为了保障业务的连续性和高可用性,负载均衡器本身也需要做到冗余和容灾。通过 Keepalived 和 HAProxy 结合,可以快速搭建一套双机热备的负载均衡集群,确保主服务器故障时,备服务器能够无缝接管,实现业务的零中断。


本文将详细手把手教你,在 Linux 环境下部署 Keepalived + HAProxy 的高可用负载均衡架构。





二、整体架构设计



  • 两台负载均衡器(LB1 和 LB2)
  • 虚拟 IP(VIP) 由 Keepalived 漂移,实现主备切换
  • HAProxy 提供四层或七层的负载均衡转发
  • 后端应用服务器池



高可用流向示意:

Client → VIP(Keepalived) → HAProxy → Backend Servers




三、实战部署步骤


1. 环境准备


  • 操作系统:CentOS 7/8 或其他兼容的 Linux 发行版
  • 节点角色:

    • LB1(Master):192.168.1.101
    • LB2(Backup):192.168.1.102
    • VIP:192.168.1.100


确保两台 LB 服务器时间同步,防火墙和 SELinux 状态合理。


2. 安装 HAProxy 和 Keepalived


在 LB1 和 LB2 两台服务器上执行:

sudo yum install -y epel-release

sudo yum install -y haproxy keepalived



3. 配置 HAProxy



编辑 /etc/haproxy/haproxy.cfg:

global

log 127.0.0.1 local2

maxconn 4096

daemon


defaults

mode http

log global

timeout connect 5s

timeout client 30s

timeout server 30s


frontend http_front

bind *:80

default_backend http_back


backend http_back

balance roundrobin

server web1 192.168.1.201:80 check

server web2 192.168.1.202:80 check

启动 HAProxy:

sudo systemctl enable --now haproxy






4. 配置 Keepalived



编辑 LB1 上
/etc/keepalived/keepalived.conf:

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

192.168.1.100

}

}

编辑 LB2 上
/etc/keepalived/keepalived.conf:

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

192.168.1.100

}

}

说明:


  • priority 数值越大,优先级越高(Master)
  • virtual_router_id 两台服务器必须一致
  • auth_pass 密码一致,保证认证成功


5. 启动 Keepalived


在两台服务器上执行:

sudo systemctl enable --now keepalived

查看 VIP 是否漂移到 Master 节点:

ip a

可以看到 Master 绑定了 VIP 192.168.1.100。


四、验证高可用切换

  1. 通过 VIP 192.168.1.100 访问负载均衡服务,观察访问效果是否正常分发到后端 Web1、Web2。
  2. 模拟故障:停止 LB1 上的 Keepalived 服务:


sudo systemctl stop keepalived


  1. 检查 VIP 是否自动漂移到 LB2 上。
  2. 恢复 LB1,VIP 会自动根据优先级回切。


五、优化和进阶

  • 配置 email 通知故障切换告警
  • 增加健康检查脚本,动态决定 VIP 漂移
  • 使用 ipvsadm 加速四层负载均衡
  • 整合防火墙策略,控制访问来源


六、总结

通过 Keepalived + HAProxy 的组合,可以快速搭建一套简单高效的双机热备负载均衡集群。

这种架构非常适用于中小型企业、内部业务系统、测试环境等,极大提升了业务系统的高可用性和容错能力。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表