Nginx集群负载均衡配置完整流程

news/2024/11/2 13:21:15/

今天,良哥带你来做一个nginx集群的负载均衡配置的完整流程。

一、准备工作

本次搭建的操作系统环境是win11,linux可配置类同。

1)首先,下载nginx。

下载地址为:http://nginx.org/en/download.html
良哥下载的是:1.24.0 版本
在这里插入图片描述

2)建立工作目录

下载到硬盘后解压三份,目录存放如下:
在这里插入图片描述
其中master为主节点,负责代理分发请求。slave1、slave2负荷提供应用服务(读者可根据需要将其更换为tomcat或java后端服务)。

二、配置集群

1)配置从机

①修改默认主页
为了查看配置效果,我们首先需要将两个nginx从机的默认主页修改一下。
进入slave1的html目录,使用文本编辑器打开index.html
在这里插入图片描述
添加一行内容,如下:
在这里插入图片描述

slave2类同,添加的内容为:

I am server: slave-2

②修改nginx.conf配置文件
进入slave1的conf目录,用记事本打开nginx.conf文件
在这里插入图片描述
将侦听端口改为:8081
在这里插入图片描述

slave2类同,

端口设置为:8082

2)配置主机

进入master主机目录,用记事本打开配置文件
在这里插入图片描述
在http节点中添加配置:

    ## 4.1)七层负载均衡(节点列表配置)upstream backend {##least_conn;server 127.0.0.1:8081;server 127.0.0.1:8082;}

在http的server节点中添加配置:

    ## 4.2)七层负载均衡(代理配置)location / {proxy_pass http://backend;}

在这里插入图片描述

三、验证效果

将三个nginx服务启起来。
打开浏览器,在地址栏输入 http:localhost 回车。
1)浏览器页面显示内容为 I am server: slave-1,说明请求被分发到了slave1的服务端上去了,如下:
在这里插入图片描述
2)刷新页面,浏览器内容显示 I am server: slave-2,说明请求被分发到了slave2的服务端去了,如下:
在这里插入图片描述
重复刷新,页面内容会在上述两个中切换!说明请求已经被轮询分发到不同的后端节点了。

四、扩展知识

1)四层负载均衡配置

四层负载均衡数据包是在底层就进行了分发,而七层负载均衡数据包则在最顶端进行分发。因此,四层负载均衡的效率比七层负载均衡的要高;但是,四层负载均衡不能识别域名只能配置IP+端口模式进行访问,而七层负载均衡配置域名访问的。
具体配置如下:
(注意:stream模块的位置,要在http模块上方,同时proxy_pass的书写方式也有不同。)
在这里插入图片描述

2)nginx的负载均衡策略

负载均衡策略包括三种:轮询(默认策略)、ip_hash(ip哈希策略)、least_conn(最少连接策略);配置在upstream节点中,如下:
在这里插入图片描述

1.轮询(默认)
每个请求按照请求时间顺序分配到不同的后端服务器,如果后端服务器挂了,则自动剔除。
此策略还可以设置:权重,指定轮询的频率,weight和访问率成正比,用于后端服务器性能不均匀的情况。

2.ip_hash
客户端ip地址被用作hash key来判断客户端请求应该发送到哪个服务器,这种方法保证了来自相同客户端的请求总是发送到相同服务器。

3.least_conn
最少连接策略,nginx会尽量不让负载繁忙的应用服务器上负载过多的请求,相反的,会把新的请求发送到比较不繁忙的服务器。

配置示例如下:

http {upstream serverlist{ip_hash;##least_conn;## 屏蔽上述两个参数即采用默认的策略:轮询server www.address1.com weight=3;// 或者ip+端口 , 不需要加入http/https前缀server www.address2.com weight=2;server www.address3.com; // 默认 weight=1}server {listen 80;location / {proxy_pass http://serverlist;}}
}

3)故障下线、备份服务、访问失败等配置

1.down
假如有一台主机是出了故障,或者下线了,要暂时移出,那可以把它标为down,表示请求是会略过这台主机的。

upstream serverlist{server www.address1.com; // 或者ip+端口 , 不需要加入http/https前缀server www.address2.com down;
}

2.backup
backup是指备份的机器,相对于备份的机器来说,其他的机器就相当于主要服务器,只要当主要服务器不可用的时候,才会用到备用服务器。

upstream serverlist{server www.address1.com; // 或者ip+端口 , 不需要加入http/https前缀server www.address2.com backup;
}

3.max_fails和fail_timeout
默认情况下,max_fails的值为1,表示的是请求失败的次数,请求1次失败就换到下台主机。另外还有一个参数是fail_timeout,表示的是请求失败的超时时间,在设定的时间内没有成功,那作为失败处理。

upstream serverlist{server www.address1.com max_fails=2; // 或者ip+端口 , 不需要加入http/https前缀server www.address2.com backup;
}

http://www.ppmy.cn/news/1167044.html

相关文章

Android 13.0 系统设置 app详情页默认关闭流量数据的开关

1.概述 在13.0的系统产品开发中,移动流量消耗也是关于产品优化的一个方面,由于产品需求需要对app详情页的流量进行管控默认关闭流量开关,不让流量无故流失,所以需要从流量开关分析问题流量打开流程,然后关闭 2.系统设置 app详情页默认关闭流量数据的开关的核心类 package…

三辊闸机的应用领域和特点

三辊闸机是一种常用于门禁控制的设备,它具有以下应用和优点: 应用: 门禁控制:三辊闸机可以用于各种场合的门禁控制,如小区、写字楼、学校、医院等。考勤管理:三辊闸机可以与考勤系统集成,用于…

Aspect Android埋点统计activity页面使用时长 onResume onPause,并保存时长

Aspect Android埋点统计activity页面使用时长 onResume onPause,并保存时长 标记: 1.项目下build.gradle dependencies {classpath com.android.tools.build:gradle:3.5.4classpath com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10 } 2.…

黎曼几何与切空间之间的投影

公式: 从黎曼空间投影到切空间,其中P为黎曼均值,也是切空间的参考中心点,Pi是要投影到切空间的点。 从切空间投影回来,其中Si为切空间中的向量。 function Tcov CovToTan(cov,Mcov)Cm12 Mcov^(-1/2);X_new logm(Cm…

哪些人适合学习Python?

零基础学Python要多久?python培训路线 Python是一门简单的编程语言,很多没有编程经验或者对编程一知半解的人都会选择python作为入门编程语言,随着人工智能的发展,python的就业前景也是相当不错的,因此,python是一门既…

电流监测芯片SGM8199A2应用电路设计

SGM8199是一系列具有电压输出功能的双向电流监测芯片,用于监测共模电压范围内分流电阻上的压降,而不受电源电压的影响。该器件具有-0.1V至26V的宽共模电压范围输入。低偏移使得在监测电流时允许分流器上的满量程最大压降为10mV。SGM8199系列提供三种固定…

Maven系列第8篇:大型Maven项目,快速按需任意构建

本篇涉及到的内容属于神技能,多数使用maven的人都经常想要的一种功能,但是大多数人都不知道如何使用,废话不多说,上干货。 需求背景 我们需要做一个电商项目,一般都会做成微服务的形式,按业务进行划分&am…

webrtc基于DTLS的端口复用技术

DTLS协议: DTLS(Datagram Transport Layer Security)数据包安全传输协议,用于在不可靠的数据包传输协议上(如UDP)提供数据的安全传输。 UDP多路复用: 一个UDP多路复用,被用来处理共享同一个UDP端口的多个并发的UDT连接。类似同一个tcp port上创建多个socket connec…