服务器负载均衡零基础教程:配置、避坑与验证

## 负载均衡是什么?新手能做什么? 服务器负载均衡就是把访问你网站的流量分散到多台服务器上,避免一台机器扛不住导致网站变慢或崩溃。比如你只有一台服务器,用户一多就卡;加一台服务器后,用负载均衡把请求分到两台,体验就稳了。新手能直接用 Nginx 或宝塔面板快速配起来,不用懂底层原理。 ## 搭建前需要做好哪些准备? 开始之前,确保你手里有这些东西: * **至少两台云服务器**(可以是同一家云厂商的,也可以不同,推荐同一区域降低延迟)。 * **每台服务器上部署好相同的网站环境**(比如都装了 Nginx + PHP,网站文件放到相同的路径)。 * **一个域名**(可选,但推荐;负载均衡通常绑定域名)。 * **SSH 客户端**(如 Xshell、Putty 或者直接用服务器面板的终端)。 * **宝塔面板**已安装(如果你用面板操作,会省去很多命令)。 > 小提示:如果只有一台服务器,可以用 Docker 在本地创建两个容器模拟多台后端,或者先学理论,等有两台再实操。 ## 手把手教你用 Nginx 配置负载均衡 以下以 Nginx 为例,假设你有两台后端服务器 IP:`192.168.1.10`(Web1) 和 `192.168.1.20`(Web2),端口都是 80。 ### 1. 登录负载均衡服务器(代理服务器) 通过 SSH 连接你将要充当“调度员”的那台服务器(可以是全新装好 Nginx 的机器)。确认 Nginx 已安装: ```bash nginx -v ``` 如果没有安装,执行: ```bash # CentOS / RHEL yum install -y nginx # Ubuntu / Debian apt install -y nginx ``` ### 2. 编辑 Nginx 配置文件 ```bash vim /etc/nginx/nginx.conf ``` 在 `http {}` 块内添加一个 `upstream` 块,然后修改 `server` 块中的 `location /` 部分,把请求转发到这个 `upstream`。 ```nginx upstream backend { server 192.168.1.10:80 weight=1; server 192.168.1.20:80 weight=1; } server { listen 80; server_name your-domain.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` * `weight=1` 表示两台服务器权重一样,轮流处理请求。 * `proxy_set_header` 是为了让后端服务器能拿到真实用户 IP。 ### 3. 重启 Nginx 并测试 ```bash nginx -t # 测试配置语法 systemctl restart nginx # 或 service nginx restart ``` 现在访问 `http://your-domain.com`,流量就会在后台两台服务器间轮转。 ### 4. 宝塔面板操作方法(如果你用面板) 进入宝塔面板 → 网站 → 添加站点 → 反向代理 → 目标 URL 填写 `http://backend`(前提是你已经在“系统设置 - 负载均衡”里添加了 upstream 并指定了后端服务器列表)。面板会自动生成类似上面配置,你只需填写域名和 IP 列表即可。 ## 配置过程中容易踩的坑 * **后端服务器没有正确返回数据**:检查后端 Nginx 是否启用了 `proxy_set_header`,或者后端防火墙是否放行了代理服务器 IP。 * **会话丢失问题(用户登录后刷新就退出)**:默认负载均衡会把同一个用户的请求随机发到不同服务器,导致登录状态丢失。解决办法是用 `ip_hash` 或 `sticky` 模块,让同一个 IP 固定访问同一台后端。修改 upstream 块: ```nginx upstream backend { ip_hash; server 192.168.1.10:80; server 192.168.1.20:80; } ``` * **健康检查缺失**:某台后端挂了,Nginx 默认还会继续转发,导致部分用户看到 502。建议开启被动健康检查(`max_fails=3 fail_timeout=30s`): ```nginx upstream backend { server 192.168.1.10:80 max_fails=3 fail_timeout=30s; server 192.168.1.20:80 max_fails=3 fail_timeout=30s; } ``` * **超时设置太短**:如果后端处理慢,可能在代理层就超时报错。在 `location /` 中添加: ```bash proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; ``` ## 如何确认负载均衡正常工作? 完成配置后,不要只刷新一次网页就觉得完了,要做几个验证: ### 1. 查看 Nginx 访问日志 在代理服务器上执行: ```bash tail -f /var/log/nginx/access.log ``` 随后再做打开浏览器访问你的域名,看日志里 `upstream_addr` 字段是否轮换显示 `192.168.1.10:80` 和 `192.168.1.20:80`。 ### 2. 用 curl 测试轮询 ```bash for i in {1..10}; do curl -s http://your-domain.com | grep -o 'Server IP: [0-9.]*'; done ``` 前提是后端服务器返回内容里包含自己的 IP。如果没有,可以在后端服务器 `index.html` 中写一行 `

Server IP: php echo $_SERVER['SERVER_ADDR']; ?
>

`(如果支持 PHP)。 ### 3. 停掉一台后端模拟故障 ```bash # 在 Web1 上停止 Nginx systemctl stop nginx ``` 访问域名,应该仍然能打开(请求全部由 Web2 处理),等待 30 秒左右后再次访问,不应该出现 502。 ### 4. 压力测试(可选) 使用 `ab`(Apache Bench)或 `wrk` 模拟高并发,确认机器负载被分散: ```bash yum install -y httpd-tools # CentOS ab -n 1000 -c 10 http://your-domain.com/ ``` 查看各后端服务器的 CPU 和内存使用率(`top` 或面板监控),应该都差不多。 ## 这篇内容的关键结论 本文从零开始介绍了服务器负载均衡的原理、准备、配置、避坑和验证。按照上面的步骤,即使你之前完全没接触过,也能在两台服务器之间实现流量分发。记住几个关键点:**upstream 配置、ip_hash 解决会话、健康检查保稳定、日志和 curl 验证结果**。遇到异常时优先回看避坑部分,基本能解决 90% 的问题。
分享到:
上一篇
零基础服务器集群搭建实战:从准备到部署完整流程
下一篇
零基础服务器容灾备份教程:从准备到验证的完整方案
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意