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

nginx 实现负载均衡的方式主要有以下几种:

1.循环机制 – 循环分发对应用服务器的请求
2.最少连接机制 – 将请求发送给连接数最少的服务器
3.ip-hash机制 – 哈西函数用于确定请求被配那个服务器(基于客户端IP地址)
4.权重记住 - 加权数

最简单的nginx 配置如下(默认是循环机制)

http { 
	upstream myurl{ 
		server srv1.example.com; 
		server srv2.example.com; 
		server srv3.example.com; 
	} 
	server { 
		listen 80; 
		location / { 
			proxy_pass http://myurl; 
		} 
	} 
}

上例中的同一应用的三个实例运行在srv1-srv3,当负载均衡没有特别配置,则默认循环机制。所以请求代理至服务器组myurl,然后nginx应用HTTP负载均衡分发请求。

最少连接机制

当某些请求耗费较长时间完成时,最少连接机制能让实例的负载更加均衡。
在最少连接机制下nginx不会让大量请求使应用服务器超载,而是将请求分发至相对“悠闲”的服务器。
当least_conn指令用在服务器组配置中时,最少连接机制就生效了。

http { 
	upstream myurl{ 
		least_conn; 
		server srv1.example.com; 
		server srv2.example.com; 
		server srv3.example.com; 
	} 
	server { 
		listen 80; 
		location / { 
			proxy_pass http://myurl; 
		} 
	} 
}

ip-hash机制(会话持久)

请注意循环或者最少连接数负载均衡机制,可能将同一客户端的请求分发至不同的服务器,无法保证相同客户端的请求总是会被指向相同服务器。
如果需要将客户端与服务端绑定,换而言之:为了使客户端请求总是分发向特定的服务器,ip-hash负载均衡机制就派上了用场。
使用ip-hash客户端IP地址作为一个hash运算的key,以此决定服务器组中的哪台服务器处理客户端请求。该方法保证来自相同客户端的请求总是指向相同服务器,除非服务器不可用。
配置ip-hash负载均衡只需要将ip_hash指令加入服务器组配置中:

http { 
	upstream myurl{ 
		ip_hash; 
		server srv1.example.com; 
		server srv2.example.com; 
		server srv3.example.com; 
	} 
	server { 
		listen 80; 
		location / { 
			proxy_pass http://myurl; 
		} 
	} 
}

加权机制-设置每台服务器的权重

上面的例子中,服务器权重没有配置,意味着所有服务器等权重的应用于负载均衡。
循环机制下大量请求以统一的方式处理,各服务器基本会被分发数量相等的请求。
当权重参数指定给服务器,权重就作为负载均衡的决定条件。

http { 
	upstream myurl{ 
		server srv1.example.com weight=3; 
		server srv2.example.com; 
		server srv3.example.com; 
	} 
	server { 
		listen 80; 
		location / { 
			proxy_pass http://myurl; 
		} 
	} 
}

在上面的配置中每5个请求,3个会被指向srv1,1个指向srv2,1个指向srv3。

在最新版本的nginx中权重可以和最少连接以及ip-hash负载均衡组合使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值