温馨提示×

温馨提示×

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

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

HAProxy高可用架构怎样搭建

发布时间:2025-12-24 00:24:37 来源:亿速云 阅读:179 作者:小樊 栏目:系统运维

HAProxy高可用架构搭建指南

一、架构与规划

  • 拓扑结构:使用2台服务器部署HAProxy + Keepalived,对外暴露VIP(虚拟IP);两台HAProxy同时运行,通过VRRP选举持有VIP,实现主备自动切换。后端可横向扩展为Web/API/数据库读写分离池等。
  • 典型地址规划示例:
    • 节点1:192.168.1.101(HAProxy + Keepalived,state=MASTER)
    • 节点2:192.168.1.102(HAProxy + Keepalived,state=BACKUP)
    • VIP:192.168.1.200/24(对外统一入口)
  • 适用场景:对外提供HTTP/HTTPS服务、API网关、K8s apiserver/ingress 前端的四层/七层负载均衡与故障切换。

二、基础部署步骤

  • 安装组件(两台均执行)
    • CentOS/RHEL系:执行yum install -y haproxy keepalived && systemctl enable haproxy keepalived
  • HAProxy配置要点(/etc/haproxy/haproxy.cfg,主备一致)
    • 全局与进程
      • global log /dev/log local0 maxconn 10000 user haproxy group haproxy daemon nbproc 4 cpu-map 1 0 2 1 3 2 4 3
    • 默认项
      • defaults mode http timeout connect 5s timeout client 30s timeout server 30s option httplog option dontlognull option http-server-close retries 3
    • 前端
      • frontend http-in bind :80 bind :443 ssl crt /etc/haproxy/certs/example.com.pem alpn h2,http/1.1 ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
      • 可选ACL:acl allowed_ips src 192.168.1.0/24 tcp-request connection reject if !allowed_ips
      • default_backend servers
    • 后端
      • backend servers balance leastconn server web1 192.168.1.101:80 check inter 2s rise 2 fall 3 server web2 192.168.1.102:80 check inter 2s rise 2 fall 3
    • 统计页(建议改端口并加认证)
      • listen stats bind :8080 stats enable stats uri /haproxy?stats stats auth admin:SecurePassword stats hide-version
  • Keepalived配置(/etc/keepalived/keepalived.conf)
    • 主节点
      • vrrp_script chk_haproxy { script "systemctl is-active haproxy" interval 1 fall 2 rise 2 }
      • vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass YourSecurePassword } virtual_ipaddress { 192.168.1.200/24 } track_script { chk_haproxy } }
    • 备节点
      • 将state改为BACKUP,priority设为90(低于主),其余与主一致
  • 启动与验证
    • systemctl start haproxy keepalived
    • 观察VIP绑定:ip addr show eth0 | grep 192.168.1.200
    • 访问测试:curl -I http://192.168.1.200 与 curl -Ik https://192.168.1.200。

三、生产优化与安全

  • HAProxy性能与SSL
    • tune.ssl.default-dh-param 2048、tune.bufsize 32768、tune.maxrewrite 1024
    • option redispatch、retries 3、maxconn(按内存与压测调优,常见为8000–12000)
  • 内核与系统
    • net.ipv4.ip_nonlocal_bind = 1(允许绑定非本地地址,便于VIP)
    • net.core.somaxconn = 65535、net.ipv4.tcp_tw_reuse = 1、net.ipv4.tcp_max_syn_backlog = 10240
    • 文件句柄:haproxy soft nofile 65535、haproxy hard nofile 131072
  • 安全加固
    • 防火墙放行:firewall-cmd --permanent --add-service=http --add-service=https
    • 放行VRRP:firewall-cmd --permanent --add-rich-rule='rule protocol value="vrrp" accept' && firewall-cmd --reload
    • SSL/TLS:仅启用TLS 1.2+,使用ECDHE与AES-GCM等现代套件,禁用SSLv2/SSLv3。

四、监控与日志

  • 指标与可视化
    • 内置统计页::8080/haproxy?stats(建议改端口并启用强认证)
    • Prometheus指标端点(可选):listen stats bind :9101 mode http stats enable stats uri /metrics stats auth prometheus:Password123
  • 日志与轮转
    • rsyslog:local0.* /var/log/haproxy/haproxy.log
    • logrotate(/etc/logrotate.d/haproxy):按日轮转、保留30天、压缩、缺失不报错。

五、验证与常见问题

  • 高可用验证
    • 停止主节点Keepalived:systemctl stop keepalived,在备节点执行ip addr show eth0确认VIP漂移
    • 业务回归验证:curl http://VIP 与 curl -Ik https://VIP
    • 压力测试:ab -n 100000 -c 1000 http://VIP/
  • 常见问题速查
    • VIP不漂移:检查vrrp_script返回值与路径(如/usr/bin/killall)、virtual_router_id一致性、advert_int与认证配置;优先用systemctl is-active haproxy提升可靠性
    • VIP能漂移但访问不通:确认HAProxy配置bind为*0.0.0.0/或包含VIP,而非仅绑定某物理IP;检查本机转发与后端健康
    • 健康检查脚本依赖:若用killall -0,需安装psmisc;脚本建议使用绝对路径避免环境差异。
向AI问一下细节

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

AI
助
手