haproxy负载均衡多台住宅服务器集群部署

适用场景与准备条件

当你有多台位于不同住宅宽带的服务器(例如家中旧电脑或NAS设备),希望把用户请求均匀分发到这些机器上,提高整体服务承载能力,同时避免单点故障时,HAProxy负载均衡多台住宅服务器集群部署就是最实用的方案。
HAProxy是一款轻量、高效的开源负载均衡软件,支持四层和七层代理,非常适合内网或公网环境。

准备前提

  • 至少2台运行Linux(推荐Ubuntu 20.04/22.04或CentOS 7/8)的住宅服务器,并确保它们之间网络互通。
  • 其中一台作为负载均衡器(HAProxy安装在该机上),其余作为后端真实服务器。
  • 了解各服务器内网IP(例如192.168.1.x)和服务端口(如Web服务常用80/443)。
  • 具备sudo权限的普通用户或root用户身份。

安装HAProxy

在充当负载均衡器的服务器上,通过包管理器安装HAProxy。
以下以Ubuntu为例:

sudo apt update
sudo apt install haproxy -y

CentOS/Fedora使用:

sudo yum install haproxy -y

安装完成后,检查版本确认安装成功:

haproxy -v

预期输出类似 HA-Proxy version 2.4.x

配置HAProxy实现后端服务器负载均衡

HAProxy的主配置文件位于 /etc/haproxy/haproxy.cfg
编辑前建议备份原文件:

sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

使用vim或nano打开配置文件:

sudo nano /etc/haproxy/haproxy.cfg

将内容替换为以下示例(记得修改IP和端口为你实际的住宅服务器内网地址):

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

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    timeout connect 5000
    timeout client 50000
    timeout server 50000

frontend web_front
    bind *:80
    default_backend web_servers

backend web_servers
    balance roundrobin
    option httpchk GET /health
    server server1 192.168.1.101:80 check
    server server2 192.168.1.102:80 check
    server server3 192.168.1.103:80 check

关键配置解析

  • balance roundrobin:轮询算法,请求依次分发到后端服务器。
  • option httpchk GET /health:HAProxy会定期向后端服务器发送GET请求到/health路径,只有返回2xx或3xx状态码才认为服务器健康。你需要确保后端服务器上有一个返回200的页面(可以创建一个简单的/health文件)。
  • 每行server定义一台真实服务器:server 别名 地址:端口 checkcheck启用健康检查。

保存文件并退出。
如果后端服务器需要响应健康检查,请登录每台后端服务器创建健康页:

echo 'ok' | sudo tee /var/www/html/health

然后重启Web服务(如Nginx: sudo systemctl reload nginx)。

启动与验证HAProxy

验证配置语法正确:

sudo haproxy -f /etc/haproxy/haproxy.cfg -c

如果输出Configuration file is valid,则继续启动HAProxy服务:

sudo systemctl enable haproxy
sudo systemctl restart haproxy

查看状态:

sudo systemctl status haproxy

确认进程正常运行后,可以通过访问负载均衡器的公网IP或内网IP加80端口测试。
在浏览器中输入 http://,多次刷新应该看到不同后端服务器返回的内容(例如Nginx默认页面或你自己部署的应用)。

你也可以通过HAProxy的统计信息页面(需额外配置)或命令查看后端状态:

sudo haproxy -f /etc/haproxy/haproxy.cfg -c
sudo echo 'show stat' | sudo socat stdio /var/run/haproxy/admin.sock

(如果未启用Unix socket,可使用netstat -tulpn检查端口80是否被haproxy进程监听)

避坑指南与高频问题

1. 后端服务器健康检查失败
如果后端服务器总是被标记为DOWN,检查防火墙是否放行了健康检查的端口(80或你自己指定的端口)。也检查后端服务器上/health路径是否可访问,并返回2xx状态码。可以用curl测试负载均衡器到后端服务器的连通性:

curl -I http://192.168.1.101/health

2. 住宅宽带没有固定公网IP
如果你的住宅服务器通过动态公网IP上网,负载均衡器的公网IP会变化。此时可以考虑使用DDNS(动态域名解析)配合端口映射,或者将所有服务器置于同一内网子网中,仅在内网使用HAProxy。

3. 高并发时的性能调优
默认配置已适合中小规模场景。若需要更高并发,可调整maxconnnbthread(多线程)及tune.bufsize等参数。

4. 日志查看
HAProxy日志默认通过rsyslog记录在/var/log/haproxy.log(需启用)。若未找到日志,检查/etc/rsyslog.conf中的配置,或使用journalctl -u haproxy查看。

总结

通过以上步骤,你已完成了HAProxy负载均衡多台住宅服务器集群的部署。
这套方案非常适合家庭实验室、小型团队或低预算项目的流量分发。
实际环境中,你可以根据需要切换到leastconn(最少连接)或source(源IP哈希)等算法。
遇到异常时,优先检查健康检查和网络连通性。
如果对更多高级功能(如HTTPS卸载、ACL规则)感兴趣,可以继续参考HAProxy官方文档或本站后续教程。

提示:如果你在配置中遇到其他问题,欢迎在评论区留言,我会尽力协助排查。

分享到:
上一篇
图片懒加载Nginx配置优化海外低速访问
下一篇
数据库备份恢复乱码统一字符集修复教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意