nginx负载均衡配置

主宰稳场 提交于 2020-01-04 09:33:51

nginx负载均衡配置

什么是负载均衡

负载均衡的意思是在服务器集群中,需要有一台服务器作为调度者,客户端所有的请求都由调度者接收,调度者再根据每台服务器的负载情况,将请求分配给对应的服务器去处理;
在这个过程中,调度者如何合理分配任务,保证所有服务器将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡的问题了。

实现方式

1、Http重定向

过程描述
当用户向服务器发起请求时,请求首先被集群调度者截获;调度者根据某种分配策略,选择一台服务器,然后把选择的服务器IP地址封装在HTTP响应消息头的Location字段中,设置响应消息的状态码设为302,最后将这个响应消息返回给浏览器;
当浏览器收到响应消息后,解析Location字段,获取分配服务器的URL并发起请求,然后指定的服务器处理该用户的请求, 最后将结果返回给用户。
在使用HTTP重定向来实现服务器集群负载均衡的过程中,需要一台服务器作为请求调度者。用户的一项操作需要发起两次HTTP请求,一次向调度服务器发送请求,获取后端服务器的IP,第二次向后端服务器发送请求,获取处理结果。

调度策略
调度服务器收到用户的请求后,究竟选择哪台后端服务器处理请求,这由调度服务器所使用的调度策略决定。

随机分配策略:
当调度服务器收到用户请求后,可以随机决定使用哪台后端服务器,然后将该服务器的IP封装在HTTP响应消息的Location属性中,返回给浏览器即可。

轮询策略(RR):
调度服务器需要维护一个值,用于记录上次分配的后端服务器的IP。那么当新的请求到来时,调度者将请求依次分配给下一台服务器。
由于轮询策略需要调度者维护一个值用于记录上次分配的服务器IP,因此需要额外的开销;
此外,由于这个值属于互斥资源,那么当多个请求同时到来时,为了避免线程的安全问题,因此需要锁定互斥资源,从而降低了性能。而随机分配策略不需要维护额外的值,也就不存在线程安全问题,因此性能比轮询要高。

优缺点分析
优点
实现简单,逻辑简单

缺点
在HTTP重定向方法中,调度服务器只在客户端第一次向网站发起请求的时候起作用。当调度服务器向浏览器返回响应信息后,客户端此后的操作都基于新的URL进行的(也就是后端服务器),此后浏览器就不会与调度服务器产生关系,进而会产生如下几个问题:
a、不是真正意义上的负载均衡:
由于不同用户的访问时间、访问页面深度有所不同,从而每个用户对各自的后端服务器所造成的压力也不同;而调度服务器在调度时,无法知道当前用户将会对服务器造成多大的压力,因此这种方式无法实现真正意义上的负载均衡,只不过是把请求次数平均分配给每台服务器罢了。

b、无法处理服务器故障:
若分配给该用户的后端服务器出现故障,并且如果页面被浏览器缓存,那么当用户再次访问网站时,请求都会发给出现故障的服务器,从而导致访问失败。

CentOS7.0安装Nginx 1.7.4

一、安装准备

首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装
在这里插入图片描述
二、安装Nginx

首先进入/usr/local目录
在这里插入图片描述
从官网下载nginx
在这里插入图片描述
查看是否有下载OK
在这里插入图片描述
解压nginx压缩包
在这里插入图片描述
会产生一个nginx-1.7.4 目录,这时进入nginx-1.7.4目录
在这里插入图片描述
接下来安装,依次执行
在这里插入图片描述
如果没有报错,顺利完成后,最好看一下nginx的安装目录
在这里插入图片描述
安装后目录(/usr/local/nginx)

部分命令如下:

http://www.cnblogs.com/codingcloud/p/5095066.html
测试配置文件是否正常:

/usr/local/nginx/sbin/nginx –t
在这里插入图片描述
粘滞会话的解决方案
1、可以修改反向代理服务器的任务分配策略,以用户IP作为标识较为合适。相同的用户IP会交由同一台后端服务器处理,从而就避免了粘滞会话的问题。
2、可以在Cookie中标注请求的服务器ID,当再次提交请求时,调度者将该请求分配给Cookie中标注的服务器处理即可。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!