当前位置: 首页 > article >正文

Nginx 负载均衡的实现

1. 机器准备

客户端10.0.0.205
nginx10.0.0.206
web110.0.0.203
web210.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


http://www.kler.cn/a/449047.html

相关文章:

  • UWB无载波通信技术,UWB定位系统源码
  • scala基础学习(数据类型)-字符串
  • LabVIEW实现WiFi通信
  • linux定时器操作
  • Apache Samza开源的分布式流处理框架
  • iClient3D for Cesium 实现限高分析
  • 智能体实战(六顶思考帽)一、六顶思考帽智能体实现(基于柳丁思考帽理论,让大模型在不同角度对问题进行思考并给出答案)
  • Highcharts 饼图:数据可视化利器
  • 谷歌集群数据集:负载均衡云服务测试数据
  • 自动驾驶控制算法-横向误差微分方程LQR前馈控制
  • 深度学习在语音识别中的应用
  • 【Spring】控制反转(IoC)与依赖注入(DI)—依赖注入的分类与方式
  • Hive其七,序列化和反序列化,Serd,存储格式,压缩,以及视图view
  • 【解决】Linux更新系统内核后Nvidia-smi has failed...
  • vscode Ctrl D 复制到下一行 快捷键
  • 【机器学习】机器学习的基本分类-强化学习-模型预测控制(MPC:Model Predictive Control)
  • Springboot高并发乐观锁
  • Maven的概念
  • 【数理统计】假设检验
  • 【尚硅谷 - SSM+SpringBoot+SpringSecurity框架整合项目 】项目打包并且本地部署
  • devops和ICCID简介
  • ‌QPainter在Qt中三种类型的渐变
  • AOP中动态代理详解
  • 因子分解(递归)
  • Farfalle - 开源的AI搜索引擎
  • 基于微信小程序的在线选课系统springboot+论文源码调试讲解