前言
今天我们来看看更多的负载均衡技巧和多服务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。