Nginx 负载均衡的实现

1. 机器准备

|-------|------------|
| 客户端 | 10.0.0.205 |
| nginx | 10.0.0.206 |
| web1 | 10.0.0.203 |
| web2 | 10.0.0.204 |

2. nginx 服务配置

下载 nginx

root@ubuntu2204 \~# apt install nginx -y

编辑配置文件,将请求分发到后端服务器

root@ubuntu2204 \~# vim /etc/nginx/conf.d/load_balance.conf

upstream backend_servers {

server 10.0.0.203:8081 weight=2; # 权重为 2

server 10.0.0.204:8082 weight=1; # 权重为 1

}

server {

listen 81;

location / {

proxy_pass http://backend_servers;

proxy_set_header Host $host;

}

}

检查配置

root@ubuntu2204 \~# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

重启 nginx 服务

root@ubuntu2204 \~# systemctl restart nginx.service

3. 后端服务器准备

创建第一个后端服务

root@ubuntu2204 \~# mkdir -p /var/www/backend1

root@ubuntu2204 \~# echo "Backend Server 1" > /var/www/backend1/index.html

root@ubuntu2204 \~# python3 -m http.server 8081 --directory /var/www/backend1 &

创建第二个后端服务

root@ubuntu2204 \~# mkdir -p /var/www/backend2

root@ubuntu2204 \~# echo "Backend Server 2" > /var/www/backend2/index.html

root@ubuntu2204 \~# python3 -m http.server 8082 --directory /var/www/backend2 &

验证后端服务是否正常运行

root@ubuntu2204 \~# curl http://10.0.0.203:8081

Backend Server 1

root@ubuntu2204 \~# curl http://10.0.0.204:8082

Backend Server 2

4. 测试负载均衡

root@ubuntu2204 \~# for i in {1..10};do curl http://10.0.0.206:81;done

Backend Server 2

Backend Server 1

Backend Server 1

Backend Server 2

Backend Server 1

Backend Server 1

Backend Server 2

Backend Server 1

Backend Server 1

Backend Server 2

5. 健康检查

停止一个服务,测试nginx是否能检测到异常,并合理分发请求

root@ubuntu2204 \~# pkill -f "python3 -m http.server 8081"

客户端继续访问后端服务

root@ubuntu2204 \~# for i in {1..10};do curl http://10.0.0.206:81;done

Backend Server 2

Backend Server 2

Backend Server 2

Backend Server 2

Backend Server 2

Backend Server 2

Backend Server 2

Backend Server 2

Backend Server 2

Backend Server 2

相关推荐
lizhihai_992 小时前
股市学习心得-AI 产业链核心标的梳理清单
大数据·服务器·人工智能·科技·学习
云计算磊哥@2 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
黄同学real2 小时前
解决 Visual Studio Web Deploy 远程发布报 401 未授权 (ERROR\_USER\_UNAUTHORIZED)
服务器
天天进步20153 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
极客先躯3 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
Java面试题总结4 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器
●VON4 小时前
AtomGit Flutter鸿蒙客户端:数据模型
android·服务器·安全·flutter·harmonyos·鸿蒙
志栋智能4 小时前
超自动化巡检:提升MTTR,缩短业务影响时间
运维·自动化
酉鬼女又兒4 小时前
零基础入门计算机网络:网络层核心任务、三大关键问题、两种服务类型与 TCP/IP 网际层协议体系全解析
服务器·网络·网络协议·tcp/ip·计算机网络·php·求职招聘
kong@react4 小时前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker