前言
今天我们来看看更多的负载均衡技巧和多服务nginx应该怎么配置。
高级负载均衡算法
在之前,我们已经演示了怎么去配置一个负载均衡算法了。一般的,默认使用的负载均衡算法就是轮询负载均衡,而加权负载均衡需要我们指定好权重,即weight参数。现在我们来看看其它的负载均衡算法。
最少连接
最少连接算法是一种高级的负载均衡算法,它的思想是把下一次请求分配给连接数最少的机器。
这个想法其实是显而易见的,因为连接数越少的机器服务压力应该小于连接数大的机器,开启这个配置也很简单,需要在upstream中指定好参数即可。
|
|
同样的,也有加权最少连接算法。这种算法也是最少连接,不过考虑了权重。这种加权算法还是考虑了不同服务器之间的性能差异,性能好的,虽然连接数多,但是处理能力也强,所以权限就大。
例如,请考虑下面这种情形
| 服务器 | 连接数 |
|---|---|
| A,高性能 | 20 |
| B,性能较差 | 10 |
按照我们的思路,此时,虽然B服务器的连接数小于A服务器,但是出于权重的考虑,我们应该把下一次请求分配给A服务器,在nginx中,我们只需要在server后面加入weight参数即可。
|
|
hash算法
我们之前提到,常用的hash算法有两种,包括ip和url哈希,配置也很简单。
-
ip哈希
1 2 3 4 5 6upstream testServer { ip_hash; server localhost:5000; server localhost:5001; server localhost:5002; } -
url哈希1 2 3 4 5 6upstream testServer { hash $request_url; server localhost:5000; server localhost:5001; server localhost:5002; }
下面我们再来说说url路径的问题。
location路径
在url,不同服务之间一般是有着不同的子路径,比如,下面有三个服务
|
|
注意到刚开始的location参数
|
|
有没有感觉location后面的这个 /有些奇怪呢?刚开始我以为是某种固定的语法参数,后来仔细一想,应该是url的参数路径才对,我们可以改写一下此时的后端服务。
- 当访问端口
5000时,会说一句Hello - 当访问端口
5001时,会说一句你好 - 当访问端口
5002时,会说一句老铁们,说实话没吃饱
现在我们来看一看是否可以做到!
- 访问5000端口
-
访问5001端口
-
访问5002端口

可以看到,正确显示了“老铁们,说实话没吃饱”!这个标题!
总结
这次我们主要关注了一些其它的负载均衡算法和子url。