六、nginx负载均衡

news2025/1/16 2:52:23

负载均衡:将四层或者七层的请求分配到多台后端的服务器上。

从而分担整个业务的负载。提高系统的稳定性,也可以提高高可用(备灾,其中一台后端服务器如果发生故障不影响整体业务).

负载均衡的算法

round robin 轮询 rr

负载均衡的默认算法,请求轮流分配给后端服务器。

轮询算法适合用于后端处理器能力相近的情况,默认的算法,可以不加。

默认

加权轮询-weight round robin

轮询的升级版,给每个后端服务器赋予不同的权重。

处理能力更强的服务器设置更高的权重,处理能力低的设置低权重。

高峰时间可以通过这个方法进行流量的优化,适用于服务器处理能力差异比较大的情况。

weight=number

ip_Hash

当我们访问后端服务器,根据客户端的IP地址,使用hash算法计算出IP地址的hash值,然后再根据请求发送到相应的后端服务器。

如果客户端访问的ip地址相同,通过hash算法,再一次的请求会分配到上一次访问的服务器,保证会话的稳定。

负载均衡的会话保持——>ip_Hash

会话保持到期之后,会话中断,重新请求会重新计算hash值。

ip_hash;

最小连接数

配合加权轮询一起使用,最小连接数的算法可以将请求发送到当前连接比较少的后端服务器。

这种算法适用后端服务器处理任务耗时不同的情况,可以有效的避免所有的请求集中在处理能力更强的后端服务器上。

least_conn;

weight=number

URL_Hash

根据请求当中url地址来计算hash值,如果客户端请求的url地址相同,客户端的请求会被分配到同一个服务器。

后台服务器的数量发生变化,会影响结果。(这个讨论无意义)

hash_$request_uri  consistest;

负载均衡的特点

1、根据算法把请求分配到不同的服务器

2、客户端访问的是代理地址,响应也是代理服务器响应。

3、客户端并不了解后端服务器的情况

4、可以提高安全性,后端服务器是隐藏的。

5、负载均衡是有缓存的,可以直接访问缓存,提高响应的速度。

负载均衡的架构

我们做个实验,三台主机,具体配置如下:

zw4:192.168.254.14(代理服务器)

zw5:192.168.254.15(后端)

zw6:192.168.254.16(后端)

客户端:浏览器

配置流量分发,主要是依靠服务器完成的,主要配置在代理服务器完成配置算法。

七层代理

upstream:模块仅支持http协议,用来处理http的请求和响应。

upstream只能写在http模块当中,不能在server也不能在全局。

基于IP的七层

轮询

配置完之后,我们访问主机(192.168.254.14)的nginx,会发现轮流访问的是设定的2台服务器的nginx,并且状态码为200,表示没有缓存。

加权轮询

这时候权重高的服务器被访问的次数多一点,状态码依然为200,没有缓存。

ip_hash

这时候第一次会根据hash算法匹配到一台服务器,之后再访问都是他了,并且状态码为304,表示访问缓存,这是根据IP地址的hash缓存,也是会话保持。

最小连接数配合轮询

这时候和轮询没什么区别,这是因为不好演示最小连接数,状态码依然为200。

URL_hash

这时候第一次会根据算法匹配到一台服务器,之后再访问都是他了,并且状态码为304表示缓存。注意:这里的缓存是url缓存,url地址不变才导致的访问服务器不变,并不是真正的会话保持。

最后我们停掉192.168.254.15的nginx后,会发现负载均衡依然再正常运行,并且只能访问192.168.254.16的nginx,证明了高可用。

基于域名的七层

 基于域名的七层代理

首先配置代理服务器zw4的nginx主配置文件

注意:1、如果使用域名才做七层,需要把客户端访问的真实IP地址传递给服务端

           2、如果经过代理,所有经过的代理地址也要传递给服务端

接着三台主机都配置域名解析,记得也要修改另外两台后端(zw5和zw6)的nginx上的localhost。

这时候我们发现负载均衡已正常工作,当然也是默认的轮询算法。

四层代理

stream:模块不支持http协议,仅支持tcp和udp,处理数据包流量分发。

四层代理只能写在全局模块当中。

根据上面的实验我们依然在代理服务器zw4上配置nginx的主配置文件,注意server中的端口号不能和下面http模块中server的端口号一样,所有这里我们随便定了个81。

重启nginx后,我们发现负载均衡的算法依然是轮询。

注意:

四层算法默认是轮询,也支持加权轮询和最小连接数支持。

ip_hash和uri_hash,不能在四层算法中使用,因为四层不能处理响应。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python使用Selenium库获取 网页节点元素、名称、内容的方法

我们要用到一些网页源码信息,例如获取一些节点的class内容, 除了使用Beautifulsoup来解析,还可以直接用Selenium库打印节点(元素)名称,用来获取元素的文本内容或者标签名。 例如获取下面的class的内容&am…

scala的泛型2

package test55 //隐式转换 //1.隐式函数 //2.隐式类 //3.隐式对象 //4.函数的隐式参数//泛型:类型参数化。 //Pair 约定一对数据 class Pair[T](var x:T, var y:T) //泛型的应用场景: //1.泛型函数 //2.泛型类 //3.泛型特质 object test2 {def main(arg…

服务器数据恢复—热备盘上线过程中硬盘离线导致raid5阵列崩溃的数据恢复案例

服务器数据恢复环境: 两组分别由4块SAS接口硬盘组建的raid5阵列,两组raid5阵列划分LUN并由LVM管理,格式化为EXT3文件系统。 服务器故障: RAID5阵列中一块硬盘未知原因离线,热备盘自动激活上线替换离线硬盘。在热备盘上…

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 数据处理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 数据处理 flyfish 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推理 基于Q…

华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架的SGD优化器案例实现

SGD优化器基本原理讲解 随机梯度下降(SGD)是一种迭代方法,其背后基本思想最早可以追溯到1950年代的Robbins-Monro算法,用于优化可微分目标函数。 它可以被视为梯度下降优化的随机近似,因为它用实际梯度(从…

【C++】闰年判断问题完整解析与代码优化

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述💯我的解法分析 💯老师解法分析代码 1(未优化版本)分析 代码 2(优化版本)分析 &#x1f4af…

云和恩墨 zCloud 与华为云 GaussDB 完成兼容性互认证

近日,云和恩墨(北京)信息技术有限公司(以下简称:云和恩墨)的多元数据库智能管理平台 zCloud 与华为云计算技术有限公司(以下简称:华为云)的 GaussDB 数据库完成了兼容性互…

HtmlRAG开源,RAG系统联网搜索能力起飞~

网络是RAG系统中使用的主要外部知识来源,许多商业系统,如ChatGPT和Perplexity,都使用网络搜索引擎作为他们的主要检索系统。传统的RAG系统将网页的HTML内容转换为纯文本后输入LLM,这会导致结构和语义信息的丢失。 HTML转换为纯文…

Android显示系统(10)- SurfaceFlinger内部结构

一、前言: 之前讲述了native层如何使用SurfaceFlinger,我们只是看到了简单的API调用,从本文开始,我们逐步进行SurfaceFlinger内部结构的分析。话不多说,莱茨狗~ 二、类图: 2.1、总体架构: 先…

PPT技巧:将幻灯片里的图片背景设置为透明

在PPT中添加了图片,想要将图片中的背景设置为透明或者想要抠图,有什么方法吗?今天分享两个方法。 方法一: 添加图片,选中图片之后,点击【图片格式】功能,点击最左边的【删除背景】 PPT会自动帮…

以太网链路详情

文章目录 1、交换机1、常见的概念1、冲突域2、广播域3、以太网卡1、以太网卡帧 4、mac地址1、mac地址表示2、mac地址分类3、mac地址转换为二进制 2、交换机的工作原理1、mac地址表2、交换机三种数据帧处理行为3、为什么会泛洪4、转发5、丢弃 3、mac表怎么获得4、同网段数据通信…

CNCF云原生生态版图

CNCF云原生生态版图 概述什么是云原生生态版图如何使用生态版图 项目和产品(Projects and products)会员(Members)认证合作伙伴与提供商(Certified partners and providers)无服务(Serverless&a…

每日计划-1212

1. 完成 SQL1 查询所有列 2. 八股部分 1) C 中多态性在实际项目中的应用场景有哪些? (1)图形绘制系统 场景描述:在一个图形绘制软件中,可能有多种图形,如圆形、矩形、三角形等。每种图形都需要有自己的…

Autosar CP RTE:一个例子简要介绍工作原理

以下是一个示例,展示如何通过AUTOSAR的RTE机制利用配置(ARXML文件)来实现软件组件集成,包含对应的C源代码以及模拟自动生成的RTE框架代码的示例。请注意,实际的AUTOSAR项目会复杂得多,这里只是一个简化且示…

动手学深度学习---预备知识

深度学习是关于优化的学习。对一个带有参数的模型,找到其中能拟合数据最好的模型。 一、数据操作 张量:表示一个由数值组成的数组,这个数组可能有多个维度。具有一个轴的张量对应数学上的向量,具有两个轴的张量对应数学上的矩阵&…

频域采样引起Gibbs效应——频域采样FIR滤波器设计的主要问题(答作者问)

还是这个图,我不明白廖老师为什么纠结这几个图不放过。Rafael Gonzalez的《数字图像处理》概念不清楚的地方,我就直接放过了,我为什么要和基础差的人纠结。 现在的问题是图(c )到图(d)为什么会产生Gibbs效应。这与补零(哪怕是异想…

《Keras3 minist 手写数字AI模型训练22秒精度达到:0.97》

《Keras3 minist 手写数字AI模型训练22秒精度达到:0.97》 一、修改源码加上如下两条代码二、源码修改如下三、Keras3 minist 训练22秒结束,训练过程截图四、Keras3 minist 源码截图 一、修改源码加上如下两条代码 import os os.environ["KERAS_BAC…

R语言——缺失值处理

目录 缺失数据 1 R中的缺失值 2查看缺失值is.na() 3 去除缺失值 1 R中的缺失值 在R中,NA代表缺失值,NA是不可用(可能是0,可能是其他值,NA是未知的),notavailable的简称,用来存储…

找不到共享打印机0x00000bc4报错多种解决方法

在访问共享打印机提示"找不到打印机0x00000bc4"解决方法怎么解决?今天小编就教大家找不到共享打印机0x00000bc4报错多种解决方法 找不到共享打印机0x00000bc4报错多种解决方法原因分析: 1、检查打印机驱动:一般出现这种情况是由于打…

vulhub复现CVE-2021-44228log4j漏洞

目录 一:漏洞概述 二:漏洞原理 三:漏洞利用 lookup功能: JNDI解析器: ldap服务: RMI: 四:漏洞复现 4.1靶场 4.2dnslog测试 4.3部署jndi-injection-exploit 4.4打开监听端口 4.5触发请…