nginx负载均衡(nginx负载均衡502)

http://www.itjxue.com  2023-02-24 06:31  来源:未知  点击次数: 

nginx负载均衡原理

? ? ? ? 负载均衡(Load Balance),它在网络现有结构之上可以提供一种廉价、有效、透明的方法来扩展 网络设备 和 服务器的带宽 ,并可以在一定程度上 增加吞吐量 、 加强网络数据处理能力 、提高 网络的灵活性 和 可用性 等。用官网的话说,它充当着网络流中“交通指挥官”的角色,“站在”服务器前 处理所有服务器端和客户端之间的请求 ,从而最大程度地 提高响应速率和容量利用率 ,同时 确保任何服务器都没有超负荷工作 。如果单个服务器出现故障, 负载均衡的方法会将流量重定向到其余的集群服务器,以保证服务的稳定性 。当新的服务器添加到服务器组后,也可通过负载均衡的方法使其开始自动处理客户端发来的请求。

负载均衡涉及到以下的基础知识。

a. Round Robin: 对所有的backend轮训发送请求,算是最简单的方式了,也是默认的分配方式;

b. Least Connections(least_conn): 跟踪和backend当前的活跃连接数目,最少的连接数目说明这个backend负载最轻,将请求分配给他,这种方式会考虑到配置中给每个upstream分配的weight权重信息;

c. Least Time(least_time): 请求会分配给响应最快和活跃连接数最少的backend;

d. IP Hash(ip_hash): 对请求来源IP地址计算hash值,IPv4会考虑前3个octet,IPv6会考虑所有的地址位,然后根据得到的hash值通过某种映射分配到backend;

e. Generic Hash(hash): 以用户自定义资源(比如URL)的方式计算hash值完成分配,其可选consistent关键字支持一致性hash特性;

? ? ? ?用户(浏览器)在和服务端交互的时候,通常会在本地保存一些信息,而整个过程叫做一个会话(Session)并用唯一的Session ID进行标识。会话的概念不仅用于购物车这种常见情况,因为HTTP协议是无状态的,所以任何需要逻辑上下文的情形都必须使用会话机制,此外HTTP客户端也会额外缓存一些数据在本地,这样就可以减少请求提高性能了。如果负载均衡可能将这个会话的请求分配到不同的后台服务端上,这肯定是不合适的,必须通过多个backend共享这些数据,效率肯定会很低下,最简单的情况是保证会话一致性——相同的会话每次请求都会被分配到同一个backend上去。

? ? ? ? 出问题的backend要能被及时探测并剔除出分配群,而当业务增长的时候可以灵活的添加backend数目。此外当前风靡的Elastic Compute云计算服务,服务商也应当根据当前负载自动添加和减少backend主机。

? ? ? ? 通常现代的网络服务者一个域名会关连到多个主机,在进行DNS查询的时候,默认情况下DNS服务器会以round-robin形式以不同的顺序返回IP地址列表,因此天然将客户请求分配到不同的主机上去。不过这种方式含有固有的缺陷:DNS不会检查主机和IP地址的可访问性,所以分配给客户端的IP不确保是可用的(Google 404);DNS的解析结果会在客户端、多个中间DNS服务器不断的缓存,所以backend的分配不会那么的理想。

转自

几种Nginx实现负载均衡的方式

Nginx中常见的几种负载均衡方式:

1、轮询(Nginx自带、默认)

该策略是Nginx默认的负载均衡策略,每一个客户端请求按时间顺序轮流分配到不同的服务器上,如果后端服务不可以用,会自动过滤掉。

upstream my_test_server {

server 192.168.0.100:8080;

server 192.168.0.101:8080;

}

2、weight 权重(Nginx自带)

weight代表权重的意思,用于指定轮询的几率,默认权重都是1.可以手动设置调整,权重越高,被分配的次数越多,weight权重和访问比例是成正比的,用于解决后端服务器性能不均衡时,调整访问比例。

upstream my_test_server {

server 192.168.0.100:8080 weight=1;

server 192.168.0.101:8080 weight=2;

server 192.168.0.102:8080 weight=3;

}

3、ip_hash(Nginx自带)

ip_hash是将每个请求按照访问ip的hash结果进行分配,这种方式可以保证同一个用户会固定访问一个后端服务器。优点:可以保证session会话,解决服务器之间session不能共享的问题。

upstream my_test_server {

ip_hash;

server 192.168.0.100:8080;

server 192.168.0.101:8080;

}

4、least_conn(Nginx自带)

将请求转发给连接数较少的后端服务器。每个后端服务器配置可能不同,处理的请求也有可能不同,对于处理的请求有快有慢,least_conn是根据后端服务器的连接情况,动态的选择连接数量较少的一台服务器来处理当前的请求。

upstream my_test_server {

least_conn;

server 192.168.0.100:8080;

server 192.168.0.101:8080;

}

5、fair(第三方)

fair是按照服务器端的响应时间来分配请求,响应时间短的服务器优先分配。第三方的负载均衡策略需要安装第三方的插件。

upstream my_test_server {

fair;

server 192.168.0.100:8080;

server 192.168.0.101:8080;

}

6、url_hash(第三方)

url_hash是根据url的hash结果进行分配请求,每一个url会固定到同一个服务器上,配合缓存使用,可以减少不必要的下载和资源时间的浪费。每次同一个url请求到达同一个服务器上,第一次加载后放入缓存,后面再次请求,直接取缓存资源。如果不采用url_hash,可能会导致请求到达不同的服务器,资源出现重新加载的情况。第三方的负载均衡策略需要安装第三方的插件。

upstream my_test_server {

hash $request_uri;

server 192.168.0.100:8080;

server 192.168.0.101:8080;

}

nginx负载均衡

nginx的负载均衡策略有4种,轮询、权重、IP地址哈希、最少连接策略。

示例用nginx默认的负载均衡策略,即轮询策略,本机服务器地址是127.0.0.1,域名localhost指向该地址,访问 三次,轮询转发请求到 、 、 ,接口返回此次调用的服务器端口信息8080、8081、8082。

如图所示:

如图所示,访问三次 ,依次返回8080、8081、8082:

一般而言,linux上安装nginx,配置文件默认路径是在etc/nginx/nginx.conf,当然也可以通过ps -ef|grep nginx来查看启动的nginx是用哪个路径下的配置文件。

编辑好配置文件之后,需要用nginx -t查看此次配置文件有没有出错,没错的话再重新加载配置文件即可,用nginx -s reload命令。

Nginx实现负载均衡

实现负载均衡可有以下算法:

Nginx实现负载均衡的原理是利用Http重定向实现负载均衡

rpm 安装方式nginx配置文件地址 /etc/nginx/conf.d 目录下面,配置文件内容结构如下:

修改完配置文件以后,还需要输入重新加载配置命令:

我们从官网上面看一下负载均衡配置案例,然后根据案例配置去对每项参数进行解释,案例如下( 注意:以下模块内容必须放在http模块下 ):

从上面这个案例Nginx会作如下执行,默认情况下,请求使用 加权循环平衡法。 在上面的示例中,每 7 个请求将按如下方式分配: 5个请求去 backend1.example.com 向第二台和第三台服务器分别发送一个请求。 如果在与服务器通信过程中发生错误,请求将 被传递到下一个服务器,依此类推,直到所有的功能 服务器将被尝试。 如果无法从任何服务器获得成功的响应, 客户端将收到与最后一个服务器通信的结果。

语法:

parameters类别:

商业版本需要付费的其他属性这里就不阐述了

1)轮训策略:

upstream模块默认的负载均衡策略是轮训策略,它会依次在服务列表进行分发

2)加权策略:

容器会根据server设置的权重进行请求分配,例如server1 weight=5 ,server2 weight=2 将会使得每 7 个请求将按如下方式分配server1 5个请求,server2两个请求。

3)Ip哈希策略:

其中请求 根据客户端 IP 地址在服务器之间分布,确保来自同一客户端的请求将始终 传递到同一服务器。使用方法是在upstream模块下面添加ip_hash;

4)最少连接数策略(least_conn):

指定组应使用负载平衡方法,其中请求 传递给活动连接数最少的服务器, 考虑到服务器的权重。 如果有多个这样的服务器,它们会依次尝试使用 加权循环平衡法。

5)扩展策略(需要安装插件):

还有一些其他需要付费的策略这里就不进行阐述了,比如:最少时间策略( least_time)、随机策略等。

(责任编辑:IT教学网)

更多

相关安全产品文章

推荐安全产品文章