1. 单点故障解决方案
Keepalived + nginx 实现nginx的高可用
通过keepalived来实现同一个虚拟IP映射到两台Nginx代理服务器,如果主服务器挂掉或者主服务器的keepalived挂掉又或者主服务器的Nginx挂掉(Nginx挂掉后会杀死keepalived的进程,在脚本中有控制)那从服务器的keepalived会检测到并会接管原先MASTER的网络功能,这种方式来实现Nginx的高可用性(如上文中的keepalived简要介绍)
2. 负载均衡策略
负载均衡的策略可以大致分为两大类:内置策略
和扩展策略
内置策略:一般会直接编译进Nginx内核,常用的有、轮询、ip hash、最少连接扩展策略:fair、url hash等
轮询
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
轮询加权:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
ip_hash(ip绑定)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
最少连接(least_conn)
下一个请求将被分派到活动连接数量最少的服务器
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
调度策略 | 含义 |
---|---|
轮询 | 按照时间顺序,逐一分配到不同的后端服务器 |
加权轮询 | weight值越大,分配到的访问几率越高 |
ip_hash | 每个请求按访问IP的hash结果分配,这样来自同一个IP的请求固定访问一个后端服务器,可以解决分布式session问题,但不是最优的解决办法,另一个即集中式session存储校验,将session放到redis集群当中。 |
url_hash | 按照访问的URL的hash结果来分配请求,使一个URL始终定向到同一个后端服务器 |
less_conn | 最少连接数,哪个机器连接数少,就分发 |
hash关键数值 | hash自定义的key |

网友评论