nginx负载均衡
使用upstream模板定义目标服务器列表,当有请求时,按照制定的规则选择一台服务器发送请求。
实例
lb01服务器配置文件/etc/nginx/conf.d/proxy.conf
注:weight是一种负载均衡策略,权重。
web01、web02配置文件/etc/nginx/conf.d/proxy.conf (web02对应的ip是172.16.1.8)
本地hosts:192.168.1.5 www.pm.com blog.pm.com
在浏览器中输入:www.pm.com,多次刷新,发现依次在7和8转换
负载均衡策略
常用的策略
轮询 | 默认方式 |
weight | 权重方式 |
ip_hash | 依据ip方式 |
least_conn | 最少连接方式 |
fair(第三方) | 响应时间方式 |
url_hash(第三方) | 依据url方式 |
常用的参数
注:默认fail_timeout=10s max_fails=1
1.轮询
默认的匹配方式,如有两台服务器A和B,则访问顺序为ABABABABAB...
此策略适合服务器配置相当,无状态且短平快的服务使用。
2.权重
weight值默认为1,权重值越高,负载的压力越大,如:
服务器A为172.16.1.7,另一台为B,则访问顺序为ABBABBABBABB...
此策略比较适合服务器的硬件配置差别比较大的情况
3.ip_hash
保证同一ip每次都访问同一服务器,以保证session会话。
如此设置后,我每次访问的服务器都是7或者都是8。
注:ip_hash不能与backup同时使用。当有服务器需要剔除,必须手动down掉。
此策略适合有状态服务,比如session。
4.least_conn
把请求转发给连接数较少的后端服务器。在轮询方式下,如果占用时间较长的请求都集中在一台服务器,会导致其负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。
5.第三方策略
第三方的负载均衡策略的实现需要安装第三方插件。
①fair
按照服务器端的响应时间来分配请求,响应时间短的优先分配。
②url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。
四层负载均衡和七层负载均衡
上述 proxy_pass http://服务器组名 的方式属于基于http协议的七层负载均衡。
四层负载均衡是基于ip和端口的,实例讲解:
1.在lb01中/etc/nginx/nginx.conf文件中添加
注意:此行要放在http模块外面。
2.创建/etc/nginx/conf.c/proxy_ssh.conf
注:这里upstream里不要写多个地址,因为我们想连接某个服务器,是要固定连接,而写多个地址的话,就会一会连接这个服务器,一会又连接另一个服务器。
3.重启nginx服务,使用xshell打开一个新标签,使用如下命令
在弹出的对话框中输入密码,登陆成功。