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

server/2024/11/15 6:04:55/

文章目录

  • 前言
    • 环境
    • 前置配置
      • 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.ppmy.cn/server/112739.html

相关文章

SqlDataAdapter和SqlDataReader的区别

SqlDataAdapter 和 SqlDataReader 都是 ADO.NET 中用于与 SQL Server 数据库交互的类,但它们在功能和用途上有所不同: SqlDataAdapter 用途:SqlDataAdapter 主要用于检索数据并将数据填充到 DataSet 或 DataTable 中。它也支持更新&#xff…

WebRTC协议下的视频汇聚融合技术:EasyCVR构建高效视频交互体验

视频汇聚融合技术是指将来自不同源、不同格式、不同网络环境的视频流进行集中处理、整合和展示的技术。随着视频监控、远程会议、在线教育、直播娱乐等领域的快速发展,视频数据的规模急剧增长,对视频处理能力和效率提出了更高要求。视频汇聚融合技术通过…

诚邀参与:CloudWeGo 技术沙龙 · 暨三周年庆典9月北京开幕

活动概述 CloudWeGo 开源项目自诞生以来已近三年。在这三年间,核心项目的 Star 数达到 28k,在五十余家企业用户中落地,社区贡献者超 400 人。为了更好地激发开发者的活力,增强社区凝聚力,推动意向企业用户落地&#x…

TL-Tomcat 整体架构和处理请求流程解析

我们写一个servlet后,在web.xml里配上我们的路径。然后把项目打包成war包放入webapps目录下 然后这样就返回了 这个war包里面的东西和这个文件夹其实是一样的: 那么最终我们把war包删掉 还有原来文件夹下其他的东西 只剩下这么个.class文件 其实这…

论文笔记:2023顶会SIGIR - Strategy-aware Bundle Recommender System

论文笔记:2023顶会SIGIR - Strategy-aware Bundle Recommender System

Windows 系统上让 A 电脑访问 B 电脑的 MySQL 数据库

要在 Windows 系统上让 A 电脑访问 B 电脑的 MySQL 数据库,可以按照以下步骤进行操作: 确保 B 电脑的 MySQL 服务已启动 首先,确保 B 电脑上的 MySQL 服务正在运行。您可以通过以下步骤检查: 打开 命令提示符,输入以…

【全网最全】2024年数学建模国赛B题31页完整建模过程+成品论文+matlab/python代码等(后续会更新

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 2024数学建模国赛B题 【全网最全】2024年数学建模国赛B题31页完整建模过程成品论文matlab/python代码等(后续会更新「首先来看看目前已有的资料…

记录elasticsearch-analysis-dynamic-synonym从8.7.0升级到8.15.0所遇到的问题

记录elasticsearch-analysis-dynamic-synonym从8.7.0升级到8.15.0所遇到的问题 一、问题伊始 今天打算用elasticsearch最新版本来学点东西,发现安装es插件就遇到了许多问题,于是便通过此篇博客来记录问题的整个过程。 去年我学习用的elasticsearch版本…