web群集--nginx常见的几种负载均衡调度算法的配置过程和效果展示

文章目录

  • 前言
    • 环境
    • 前置配置
      • httpd主机
      • tomcat主机
    • 负载均衡调度算法
      • 1.轮询
        • 配置过程
        • 效果展示
      • 2.加权轮询
        • 配置过程
        • 效果展示
      • 3. IP哈希(IP Hash)
        • 配置过程
        • 效果展示
      • 4. 最少连接(Least Connections)
        • 配置过程
        • 效果展示
      • 5.加权最小连接
        • 这个在这里详细说明一下
        • 配置过程
        • 效果展示
  • 总结


前言

Nginx 作为一款广泛使用的开源 HTTP 和反向代理服务器,不仅以其高性能和灵活性著称,还因其强大的负载均衡能力受到青睐。负载均衡是 Nginx 的核心功能之一,通过将客户端请求分发到多个后端服务器上,优化资源使用、提升应用性能。本文将深入探讨 Nginx 支持的几种主要调度算法,帮助您更好地理解如何利用这些算法实现高效的负载均衡。

nginx相关博客,感兴趣的可以看看
链接: web群集–rocky9.2源码部署nginx1.24的详细过程
链接: nginx的基本使用示例(负载均衡,虚拟主机,动静分离)的详细配置过程

环境

系统ip应用web页面内容
rocky9.2192.168.10.11nginx1.24
rocky9.2192.168.10.12httpdweb1
rocky 9.2192.168.10.13tomcatweb2

前置配置

nginx源码安装请看
链接: web群集–rocky9.2源码部署nginx1.24的详细过程

httpd主机

安装httpd

yum -y install httpd
systemctl enable httpd
systemctl start httpd

配置访问页面
使用yum安装的httpd默认页面目录为/var/www/html/

echo "httpd is running" > /var/www/html/index.html

随后能访问到即可
在这里插入图片描述

tomcat主机

使用yum安装并启动tomcat

yum -y install tomcat 
systemctl enable tomcat
systemctl start tomcat

使用yum安装的tomcat默认没有web页面,如果想要获取默认的web页面,可以执行以下操作

yum -y install tomcat-webapps tomcat-admin-webapps

这里我们自己创建页面文件即可

mkdir /usr/share/tomcat/webapps/ROOT
echo "tomcat is running" > /usr/share/tomcat/webapps/ROOT/index.html

最后能访问到即可
在这里插入图片描述

负载均衡调度算法

1.轮询

轮询是最简单也是最常用的负载均衡算法。其基本原理是将请求依次分发给每一台后端服务器,直到所有服务器都处理完请求后,重新从第一台服务器开始分配。这种方法不考虑服务器的当前负载或健康状态,仅按顺序处理。

优点: 实现简单,易于配置,适用于负载均衡要求较低的环境。

缺点: 不考虑服务器的实际负载,可能导致资源使用不均。

配置过程
upstream web {server 192.168.10.12:80;server 192.168.10.13:8080;
}server {listen       80;server_name  localhost;location / {proxy_pass http://web;

注: 配置在http块里
我这里是更改了默认server块的配置,如果新加server块,注意不要重叠

重启nginx

systemctl restart nginx
效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.加权轮询

加权轮询算法在轮询的基础上引入了权重的概念。每台服务器根据其权重值接收请求,权重较高的服务器会处理更多的请求。这种方法适用于服务器性能不均的情况,通过设置不同的权重来实现负载的合理分配。

优点: 允许根据服务器的性能调整请求分配,灵活性较高。

缺点: 需要为每台服务器配置合适的权重,权重设置不准确可能导致负载不均。

配置过程
upstream web {server 192.168.10.12:80 weight=2;server 192.168.10.13:8080 weight=1;
}server {listen       80;server_name  localhost;location / {proxy_pass http://web;
效果展示

在这里插入图片描述

3. IP哈希(IP Hash)

IP哈希算法通过计算客户端 IP 地址的哈希值,将请求分配给特定的服务器。这样,相同 IP 地址的请求将始终被分配到同一台服务器上,确保会话的粘性(session persistence)。

优点: 适用于需要保持用户会话的一致性场景,如需要会话粘性的应用。

缺点: 当服务器发生变化时,可能会导致请求的分布不均。

配置过程
upstream web {ip_hash;server 192.168.10.12:80;server 192.168.10.13:8080;
}server {listen       80;server_name  localhost;location / {proxy_pass http://web;
效果展示

在这里插入图片描述
效果不太明显,简单来说就是有会话保持的特点

4. 最少连接(Least Connections)

最少连接算法将请求分配给当前连接数最少的服务器。这种方法动态地调整请求分配,适合负载波动较大的场景。它有助于平衡负载,并最大化服务器资源的利用。

优点: 更动态地处理负载,有助于避免服务器过载。

缺点: 如果服务器性能差异很大,可能会导致负载分配不均。

配置过程
upstream web {least_conn;server 192.168.10.12:80;server 192.168.10.13:8080;
}server {listen       80;server_name  localhost;location / {proxy_pass http://web;
效果展示

这个效果也不太明显,这里我是两台同时访问的,可以看看这个效果
在这里插入图片描述
在这里插入图片描述

5.加权最小连接

这个在这里详细说明一下

加权最少连接(Weighted Least Connections)算法是一种结合了服务器权重和当前连接数的负载均衡策略。它通过考虑服务器的性能权重来决定请求的分配,旨在优化资源使用和提高系统性能。具体而言,这种算法优先将请求分配给连接数较少且权重较高的服务器,从而实现更智能和均衡的负载分配。

需要注意的是,Nginx 本身不直接支持加权最少连接算法,但可以通过结合权重和最小连接数的配置来实现类似的效果。

加权最少连接的工作原理
加权最少连接算法的工作原理可以概括为以下步骤:

计算加权连接数:对于每台服务器,计算其当前连接数和权重的比值。公式为:
加权连接数 = 当前连接数 / 权重

选择最小值:将请求分配给加权连接数最小的服务器。即,选择具有最少加权连接数的服务器来处理请求。

让我们来举个例子
假设有三个服务器,它们的当前连接数和权重分别如下:
服务器 A: 当前连接数 = 10, 权重 = 5
服务器 B: 当前连接数 = 20, 权重 = 10
服务器 C: 当前连接数 = 15, 权重 = 2

我们可以计算它们的加权连接数:
服务器 A: 加权连接数 = 10 / 5 = 2
服务器 B: 加权连接数 = 20 / 10 = 2
服务器 C: 加权连接数 = 15 / 2 = 7.5

根据这些加权连接数,负载均衡系统会选择加权连接数最小的服务器来处理新的请求。在这个例子中,服务器 A 和服务器 B 的加权连接数相同,但服务器 A 的连接数较少,因此它可能会被优先选择。

配置过程
upstream web {least_conn;server 192.168.10.12:80 weight=2;server 192.168.10.13:8080 weight=1;
}server {listen       80;server_name  localhost;location / {proxy_pass http://web;
效果展示

这个效果也不太明显,这里我是三台同时访问的,可以看看这个效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

总结
在本文中,讲述了Nginx 常见的几种负载均衡调度算法,包括:

轮询(Round Robin):
轮询是一种简单且常见的负载均衡算法,它会依次将请求分配给每台服务器。适用于负载相对均衡的场景,但对于连接数或处理能力不均衡的服务器,可能会导致负载不均衡。

加权轮询(Weighted Round Robin):
加权轮询算法通过为每台服务器分配权重来进行负载均衡。服务器的权重决定了其接收请求的比例,适用于服务器性能差异较大的场景,但不考虑服务器当前的负载。

IP Hash:
根据客户端的 IP 地址将请求固定分配到特定的服务器。适用于需要会话保持的场景,例如用户需要始终与同一台服务器交互的应用场景。它可以提供更一致的用户体验,但可能导致负载不均衡。

最少连接(Least Connections):
最少连接算法将请求分配给当前连接数最少的服务器。这种算法适用于连接数变化较大的场景,可以有效地防止单台服务器过载,但可能不考虑服务器性能差异。

加权最少连接(Weighted Least Connections):
加权最少连接算法结合了服务器的权重和当前连接数,以更智能的方式分配请求。这种算法在考虑服务器性能差异的同时,也平衡了当前的负载。

每种算法都有其优点和适用场景,选择合适的负载均衡算法可以显著提高系统的性能和稳定性。在实际应用中,除了选择合适的负载均衡算法,还需要综合考虑服务器性能、网络延迟以及请求的特性等因素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/417054.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

25考研人数预计下降?这一届考研有哪些新趋势?

2025年考研时间线: 2024年9月:公共课及各院校考试大纲公布; 2024年9月下旬:预报名; 2024年10月:正式报名; 2024年11月:线上/线下确认; 2024年12月中下旬&#xff1a…

如何批量修改图片的名称,高效修改图片名的软件

图片存在我们电脑上,有的时候由于某些原因,可能需要对图片进行大批量的名称修改,这个时候如果我们使用系统的重命名来做的话,它只能一个一个修改,想要批量修改,只能使用专门的命令,不仅复杂&…

虚幻5|C++第三人称射击(1)添加摄像机

一.在C类创建一个一个角色类蓝图,命名为BasePlayer 1.得到cpp和h文件 2.打开BasePlayer.h,定义摄像机内容 编译以下代码,定义摄像机和摄像机组件 private: //定义摄像机 UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category"…

深入学习电路基础:从理论到实践

引言 电路是电子学的核心,也是现代科技的基石。从简单的灯泡开关到复杂的计算机处理器,电路在各类电子设备中都起到了至关重要的作用。深入学习电路知识不仅有助于理解电子设备的工作原理,还能够为实际设计和开发电子产品打下坚实的基础。 …

qt配合halcon深度学习网络环境配置

1.开发环境qt6,编译器MSCV2019,网络是halcon的对象检测,halcon用20. 2.建立qt项目 3.到halcon安装目录下复制include,lib这两个文件夹到qt项目中进行引用 4.引用到halcon静态库后,到halcon运行目录下找到静态库对应dll文件&…

STM32-PWM驱动舵机——HAL库

什么是舵机? 舵机,也叫伺服电机,在嵌入式开发中,舵机作为一种常见的运动控制组件,具有广泛的应用。 舵机型号介绍: 市面上常见的舵机型号有 SG90、MG90S、MG995、MG996R 等等,主要是扭矩大小…

低代码平台赋能:烟花鞭炮企业数字化转型新篇章

随着数字化转型的浪潮席卷全球,传统制造业正面临着前所未有的变革机遇。烟花鞭炮行业,作为承载深厚文化底蕴与独特工艺的传统产业,也不例外。近年来,我国政府高度重视中小企业数字化转型,出台了一系列扶持政策&#xf…

pdf在线转换成word免费版,一键免费转换

在日常的学习和办公中,PDF文件和Word文档是我们离不开的两种最常见的文件,而PDF与Word文档之间的转换成为了我们日常工作中不可或缺的一部分。无论是为了编辑、修改还是共享文件,掌握多种PDF转Word的方法都显得尤为重要。很多小伙伴关心能不能…

基于大数据的电商平台电脑销售数据分析系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 随着电子商务的蓬勃发展,各大电商平台积累了海量的商品数据。如何从这些数据中提取有价值的信息,对于商家来说至关重要。本项目利用网络爬虫技术从京东电商平台采集各类品牌…

Flink优化之--旁路缓存和异步IO

Apache Flink 是一个开源流处理框架,以其高吞吐量、低延迟和事件驱动的处理能力著称。随着大数据和实时处理需求的不断增加,Flink 在许多行业和应用场景中得到了广泛应用,如金融风控、物联网数据处理、实时数据分析等。然而,随着数…

【基础算法总结】BFS_拓扑排序问题

目录 一, 拓扑排序简介1. 有向无环图(DAG图)2. AOV 网3. 拓扑排序4. 如何实现拓扑排序 二,算法原理和代码实现207.课程表201.课程表IILCR114.火星词典 三,算法总结 一, 拓扑排序简介 1. 有向无环图(DAG图) 入度:针对一…

详解GPU服务器与普通服务器之间的差异

GPU服务器与普通服务器之间的差异,犹如赛车与家用车的对比,不仅在于表面的速度与力量,更深入到其核心技术与应用场景的广泛适应性。以下是对这些差异的深度剖析与美化呈现: 一、硬件配置:架构的革新 普通服务器&#…

Linux下的MySQL8.0报错:[Err]1055

Linux下的MySQL8.0报错:[Err]1055 报错信息解决办法 报错信息 在Linux环境下的MySQL里执行SQL语句报如下错误:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column information_schema.PROFIL…

Linux下使用crontab配置定时任务

文章目录 Linux使用crontab安装crontab启动crontab查看定时任务创建定时任务配置案例配置语法位置含义符号含义 注意 取消定时任务 Linux使用crontab crontab为Linux下的计划任务程序,对应的服务为crond。crond是一个守护进程,每分钟会定期检查是否有要…

涨幅超过了90%,心动网络股价成V字后,TapTap找到流量源了吗?

心动公司发布了截至2024年6月30日止六个月的中期业绩。 在2024年上半年(24H1),公司实现总营收22.21亿元,较去年同期增长了26.7%。归属于母公司的净利润达到2.05亿元,同比激增127.4%。经调整后,归属于母公司…

# 利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优--1

利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优–1 一、Tomcat专题 - Tomcat性能调优 - 性能测试 1、tomcat 性能测试: 对于系统性能,用户最直观的感受就是系统的加载和操作时间,即用户执行某项操作的耗时。从…

10 先序遍历创建二叉树

这个代码是使用手动输入的方式创建二叉树 比较直观 #include "stdio.h" #include "stdlib.h"typedef int ElemType; typedef struct node {ElemType data;struct node *lchild;struct node *rchild; } Node;Node *create_node(int value) {Node *node (N…

HTTP代理支持UDP协议吗?

在网络通信中,HTTP代理和UDP协议是两个常见但功能和用途不同的技术。本文将详细探讨HTTP代理是否支持UDP,以及在什么情况下可以实现两者的结合。 HTTP代理的基本概念 HTTP代理是一种代理服务器,用于处理HTTP请求和响应。它在客户端和目标服…

element table 表格 span-method 某一列进行相同合并 支持树结构表格

须知 这是 vue2 版本&#xff0c;不过理论上 vue3 也能参考使用 可以直接打开 codepen 查看代码 效果图 代码 打不开 codepen 或者codepen 失效&#xff0c;查看下面代码参考 <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src&…

驭势科技研究成果入选学术顶会IROS 2024

近日&#xff0c;驭势科技团队关于自动驾驶车辆定位算法的最新研究成果《LiDAR-based HD Map Localization using Semantic Generalized ICP with Road Marking Detection》&#xff0c;创造性地解决了基于LiDAR的实时路标检测和高精地图配准所带来的挑战&#xff0c;成功入选国…