Nginx学习笔记(六):Nginx负载均衡策略

目录

一、准备服务器

二、配置上游服务器

三、负载均衡策略-轮训

四、负载均衡策略-加权轮训

五、负载均衡策略-ip_hash

六、负载均衡策略-hash

七、负载均衡策略-最少连接(least_conn)


一、准备服务器

准备1台Nginx服务器和3台Tomcat服务器,并修改3台服务器中Tomcat的默认访问页面,用数字标记页面所处的服务器。

vim /usr/local/tomcat-api/webapps/ROOT/index.jsp

二、配置上游服务器

在nginx.conf文件中配置上游服务器

# 配置上游服务器,每一个IP都对应一台服务器
upstream tomcats {
    server 192.168.72.132:8080;
    server 192.168.72.133:8080;
    server 192.168.72.134:8080;
}

server {
    listen	80;
	server_name	localhost;

	location / {
		proxy_pass	http://tomcats;	
	}
}

注:proxy_pass为代理转发配置。

三、负载均衡策略-轮训

完成上述配置后,启动Nginx,用浏览器访问Nginx服务器的80端口,反复刷新页面,会发现请求依次被转发到了不同的服务器。这其实是Nginx负载均衡默认的策略:轮训,通过轮训策略,可以将请求平均分配给各个服务器处理。

 

四、负载均衡策略-加权轮训

根据不同服务器的性能,给各个服务器增加权重,比如某个服务器硬件配置比较好,就可以给该服务器分配更多的请求,同理分配比较少的请求给硬件配置较差的服务器。
配置如下:

upstream tomcats {
    # weight的值越大,分配到的请求就会越多
    server 192.168.72.132:8080 weight=1;
    server 192.168.72.133:8080 weight=2;
    server 192.168.72.134:8080 weight=5;
}

server {
    listen	80;
	server_name	localhost;

	location / {
		proxy_pass	http://tomcats;	
	}
}

五、负载均衡策略-ip_hash

ip_hash是根据用户请求过来的ip,映射成hash值,然后分配到一个特定的服务器里面。使用ip_hash这种负载均衡以后,可以保证用户的每一次会话都只会发送到同一台特定的Tomcat里面,它的session不会跨到其他的tomcat里面去的。

upstream tomcats {  
	ip_hash;   
	server 192.168.72.132:8080;  
	server 192.168.72.133:8080 down;  
	server 192.168.72.134:8080; 
} 

注意事项:

一旦使用了ip_hash,当我们需要移除一台服务器的时候,不能直接删除这个配置项,而是需要在这台服务器配置后面加上关键字down,表示不可用。因为如果直接移除配置项,会导致hash算法发生更改,后续所有的请求都会发生混乱。

六、负载均衡策略-hash

服务端映射是基于散列key值的负载均衡策略,其中key值可以是文本、变量以及文本变量的组合。如果从一组上游服务器中添加或者删除服务器,将导致大部分key重新映射到不同的服务器。

hash key [consistent]

举例:根据url计算hash值,然后分配到特定的服务器里。具体配置如下:

upstream tomcats {  
    # $request_uri是从客户端发送过来的原生请求URI,包括参数
	hash $request_uri; 
	server 192.168.72.132:8080;
	server 192.168.72.133:8080;
	server 192.168.72.134:8080;
}   
server {  
	listen 80;  
	server_name localhost;   
	location / {  
        proxy_pass http://tomcats;  
	} 
}

注意:基于hash(url)的负载均衡策略,如果同一时间有大量的相同url请求过来,那么一台服务器也可能支撑不住,这个时候我们可以再做一层负载均衡,通俗来说,就是在nginx的上游服务器安装nginx再做一层转发。

七、负载均衡策略-最少连接(least_conn)

最少连接算法是指将请求传递到具有最少活动连接数的服务器,同时考虑服务器的权重。如果有多个上游服务器的连接数/权重同为最小,那么会采用加权轮训算法依次访问它们。

采用轮训的负载均衡策略,前提是每个请求所占用的后端时间要差不多,如果一些请求占用的时间较长,就会导致其所在的后端负载较高(由于请求占用的时间较长,连接数会因此不断累积),在这种场景下,把请求转发给连接数较少的服务器,能够达到更好的负载均衡的效果,这就是最少连接算法(least_conn)。

具体案例如下:

upstream tomcats {  
	# 最少连接
	least_conn;
	server 192.168.72.132:8080;
	server 192.168.72.133:8080;
	server 192.168.72.134:8080;
}   
server {  
	listen 80;
	server_name localhost;
	location / {
        proxy_pass http://tomcats;
	}
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值