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

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

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

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

准备条件

  • 一台已装好 Linux 的家用主机(本文以 Ubuntu / Debian 为例)
  • 至少一台后端服务器(IP 需要可访问,比如 192.168.1.101192.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 nanovim 编辑:

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
系统公告

机房迁移升级通知

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