使用Nginx实现负载均衡

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Nginx实现负载均衡相关的知识,希望对你有一定的参考价值。

参考技术A 一、负载均衡的作用

1、转发功能

按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。

2、故障移除

通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。

3、恢复添加

如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。

二、Nginx实现负载均衡

1、源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

2、轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

3、随机法:通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。

4、加权轮询法:不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。

5、加权随机法:与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。

6、最小连接数法:由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。

三、配置说明

四、轮询

五、权重

六、iphash

七、最少链接

八、fair

九、完整代码

十、也可以使用域名

使用Nginx+IIS的部署方案实现负载均衡

使用Nginx+IIS的部署方案实现负载均衡

    这段时间一直在研究负载均衡问题,用家用电脑搭建了个Nginx+IIS的负载均衡部署,算是个入门级别的说明吧,因为是测试简化版本的部署方案搭建,所以使用的是测试业务。在文章初期我先明确一下问题:

1、负载均衡是什么?

2、为什么使用负载均衡?

3、处理负载均衡还可以有别的优化方案吗?

4、什么时候必须用负载均衡?

下面我依次回答这些问题:

问题1负载均衡是什么?

百度百科给负载均衡的定义是,负载均衡是建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。示意图如下:我换句简单理解的话说就是,当一台服务器完成一个业务出现性能问题时让两台服务器同时完成这个功能就好了。技术分享

问题2为什么使用负载均衡?

负载均衡主要是为优化服务器而使用的,一台服务器的性能始终是有限的,就像一个人再有劲也不可能和100个人同时拔河一样。

问题3处理负载均衡还可以有别的优化方案吗?

负载均衡可以理解为一个业务节点的水平扩展,读者看待水平就想到垂直了吧,对。其实我在对服务器集群进行性能优化的方案上也是秉承一个优化原则。在有服务器的大前提下,(当然单位要是不给机器那什么都白搭),可以根据业务进行垂直切割。和朋友聊天室很多人都问题怎么进行优化,我会一直会反问,你的业务是什么不同业务的垂直分割方案是不同的,垂直分割没有一刀切似的优化方案,只有针对业务服务分割方案。

问题4什么时候必须用负载均衡?

在针对单个业务服务节点时,当不能在优化服务业务时,就必须要水平扩展了,也就是必须要使用负载均衡的时候了。

 

好,说了这么多铺垫负载均衡的文字,下面不罗嗦了,说点主题。

我们按照一下4个步骤后进行说明:

1、获取Nginx,并试运行。

2、发布两个IIS服务节点,服务节点A和服务节点B

3、使用Nginx充当反向代理服务器,设置服务器集群。

4、测试服务节点A,测试服务节点B,测试反向代理服务器。

 

步骤1、获取Nginx并试运行。

Nginx官网http://nginx.org/en/download.html,下载Nginxwindows版本,我下载的是1.11.10版本,如图所示。

技术分享

解压nginx-1.11.10.zip文件,打开命令行进入到Nginx目录下:

技术分享

使用start nginx命令打开:

技术分享

进程中多了两个Nginx进程如图:

技术分享

Nginx配置中的默认端口是80,我们可以在\conf\nginx.conf配置文件修改为5000

技术分享

下面重启Nginx

技术分享

查看Nginx开始界面:

技术分享

 

步骤2、发布两个IIS服务节点,服务节点A和服务节点B

使用IIS创建两个服务站点,

为了方便区分,第一台服务器我们设置为服务器A,端口为50001,如图。

技术分享

第二台服务器我们设置为服务器B,端口为50002,如图。

技术分享

 

步骤3、使用Nginx充当反向代理服务器,设置服务器集群。

我们打开\conf\nginx.conf配置文件,添加一个服务器集群的配置,使用upstream节点设置一个服务器集群Jiqun_one,端口50000,跳转的权重分别为1

技术分享

然后在Locaition节点中设置集群名称,设置主机头和客户端真实地址。

技术分享

 

步骤4、测试服务节点A,测试服务节点B,测试反向代理服务器的跳转。

设置好开始测试啦。进入集群的地址,先看到服务器A,端口50001

技术分享

刷新几下后,见证奇迹的时候到了,突然,yes,服务器B,端口50002出现啦。

技术分享

本文出自 “张隽永” 博客,谢绝转载!

以上是关于使用Nginx实现负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

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

nginx负载均衡怎么访问数据库

Nginx+SpringBoot实现负载均衡

使用Nginx+IIS的部署方案实现负载均衡

Nginx 负载均衡

Nginx实现负载均衡