家用住宅主机Linux haproxy负载均衡多住宅服务器

为什么要在家用主机上用 HAProxy 做负载均衡

如果你家里有两台或更多服务器(比如一台跑 NAS 文件共享、一台跑个人网站、一台跑开发测试环境),每次都记不同 IP 和端口很麻烦。
用 HAProxy 装在其中一台 Linux 主机上,就能把所有流量统一到一个入口,还能自动把请求分到不同的后端服务器,既减少单点压力,又方便管理。

本文用的家用主机是一台普通 Intel NUC 装 Ubuntu 22.04,后端两台服务器都在同一局域网内。
步骤同样适用于树莓派、旧笔记本等设备。

准备条件

  • 一台已装好 Linux 的家用主机(本文以 Ubuntu / Debian 为例)
  • 至少一台后端服务器(IP 需要可访问,比如 192.168.1.101 和 192.168.1.102),分别监听 8080 端口
  • 确保家庭路由器已为 HAProxy 主机分配固定内网 IP,并做好端口转发(如果需要外网访问)
  • 准备好 SSH 或直接连显示器操作

安装 HAProxy 并验证版本

在 HAProxy 主机上运行:

sudo apt update
sudo apt install haproxy -y
haproxy -v

输出类似 HA-Proxy version 2.6.* 即可。

编写 HAProxy 配置文件

配置文件路径 /etc/haproxy/haproxy.cfg。
用 sudo nano 或 vim 编辑:

sudo nano /etc/haproxy/haproxy.cfg

清空内容,填入以下配置(根据你的实际 IP 和端口修改):

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend myfrontend
    bind *:80
    default_backend myservers

backend myservers
    balance roundrobin
    server srv1 192.168.1.101:8080 check
    server srv2 192.168.1.102:8080 check

关键点说明:

  • bind *:80 表示监听所有网卡的 80 端口;如果改为 127.0.0.1:8080 仅本地访问。
  • balance roundrobin 是轮询算法,还有 leastconn(最小连接)等可选。
  • server 行最后的 check 表示开启健康检查,如果后端挂掉会自动踢出。

检查配置并启动服务

先检查语法:

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

显示 Configuration file is valid 后继续。

启动并设置开机自启:

sudo systemctl restart haproxy
sudo systemctl enable haproxy
sudo systemctl status haproxy

状态显示 active (running) 即成功。

避坑与常见问题

端口被占用:如果 80 端口被 Apache/Nginx 占用,先停掉或改 HAProxy 端口。
检查方法:sudo netstat -tulpn | grep :80

防火墙未放行:Ubuntu 默认可能没开端口,执行 sudo ufw allow 80/tcp 再重载 sudo ufw reload。

后端服务器无健康检查响应:默认 HAProxy 只检查 TCP 连接状态,如果后端返回 404 或 500 也会视为正常。
可在 backend 加一行 option httpchk GET / 尝试特定的健康检查路径。

配置文件语法错误:常见原因是缩进使用了 Tab 或多余空格,务必保持每行开头连续空格对齐。

效果验证

在局域网内另一台电脑打开浏览器,输入 HAProxy 主机的内网 IP(例如 192.168.1.100)。
多次刷新页面,观察后端服务器的日志,如果看到请求轮流落在这两台服务器上,说明负载均衡生效。

你也可以用 curl 测试:

curl -I http://192.168.1.100

查看返回头中的 Server 字段,或者直接看后端日志文件(例如 /var/log/nginx/access.log)。

常见问题速查

Q: 访问 HAProxy 页面返回 503
A: 所有后端服务器都不可用或端口不通。检查网络连接或后端服务状态。

Q: 只有一台服务器收到请求
A: 可能是 balance 算法导致或健康检查把另一台标记为 down。用 sudo systemctl status haproxy 查看日志是否提示 Server srv2 is DOWN。

Q: 日志在哪里看
A: HAProxy 的访问日志默认通过 rsyslog 写入 /var/log/haproxy.log,如果没有则需单独配置 rsyslog。

掌握这些步骤,家用主机上的多服务负载均衡就能跑起来了。
后续可以根据需要添加 SSL 终止、ACL 路由等高级功能。

分享到:
上一篇
外贸站宝塔面板网站图片懒加载优化海外访问
下一篇
跨境独立站宝塔面板服务器磁盘分区无损扩容教程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意