温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

HAProxy高可用如何搭建

发布时间:2026-11-04 20:47:41 来源:亿速云 阅读:90 作者:小樊 栏目:系统运维

下面给你一个生产可用的 HAProxy 高可用(HA)搭建方案,基于最常见的 HAProxy + Keepalived 架构(Linux 环境)。


一、整体架构说明

        VIP (虚拟IP)
            |
   +--------+--------+
   |                 |
 HAProxy-1        HAProxy-2
 Keepalived       Keepalived
   |                 |
 +--+--+          +--+--+
 |     |          |     |
Web1  Web2       Web1  Web2
  • VIP:对外提供服务的统一入口
  • Keepalived:负责 VIP 漂移和故障切换
  • HAProxy:负责负载均衡和健康检查

二、环境准备

假设:

角色 IP 主机名
HAProxy Master 192.168.1.10 ha1
HAProxy Backup 192.168.1.11 ha2
VIP 192.168.1.100 -
后端 Web 192.168.1.20 / 21 web1 / web2

系统:CentOS 7 / 8 或 Rocky / Ubuntu(命令略有差异)


三、安装 HAProxy

1. 安装

# CentOS / Rocky
yum install -y haproxy

# Ubuntu
apt install -y haproxy

2. 配置 HAProxy

编辑 /etc/haproxy/haproxy.cfg

global
    log /dev/log local0
    maxconn 4096
    user haproxy
    group haproxy

defaults
    log global
    mode http
    option httplog
    timeout connect 5s
    timeout client 30s
    timeout server 30s

frontend http_front
    bind *:80
    default_backend web_back

backend web_back
    balance roundrobin
    server web1 192.168.1.20:80 check
    server web2 192.168.1.21:80 check

启动:

systemctl enable haproxy
systemctl start haproxy

四、安装 Keepalived(核心)

1. 安装

yum install -y keepalived
# 或
apt install -y keepalived

2. Master 节点配置(ha1)

/etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        192.168.1.100
    }
}

3. Backup 节点配置(ha2)

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        192.168.1.100
    }
}

⚠️ interface 要用你真实的网卡名(如 ens192)


4. 启动 Keepalived

systemctl enable keepalived
systemctl start keepalived

验证 VIP:

ip addr | grep 192.168.1.100

五、增强高可用(强烈推荐)

✅ 1. 检测 HAProxy 状态(防止“VIP在但HAProxy挂了”)

vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2
    weight -30
}

vrrp_instance VI_1 {
    ...
    track_script {
        chk_haproxy
    }
}

✅ 2. 使用 nopreempt(避免抖动)

Master 配置:

nopreempt

六、测试高可用

  1. 访问 VIP:
curl http://192.168.1.100
  1. 关闭 Master:
systemctl stop haproxy
# 或
reboot
  1. 观察 Backup 是否接管 VIP

七、可选进阶方案

  • ✅ HAProxy + Keepalived + 多VIP(双活)
  • ✅ HAProxy HTTPS / TLS 卸载
  • ✅ 使用 Docker / Kubernetes Ingress
  • ✅ 云环境用 SLB + 多AZ(不推荐 Keepalived)

八、常见坑

问题 原因
VIP 不漂移 防火墙 / selinux / 网卡名错误
脑裂 未配置 preempt / script
云服务器不支持 VIP 云厂商禁止 ARP 漂移

如果你告诉我:

我可以直接给你可复制的完整配置。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手