负载均衡
nginx的负载均衡可以分为两大类内置策略、扩展策略
内置策略默认会被编译进内核,使用时只需要在nginx配置中配置相关参数集合。内战策略包括
- 轮询
- 加权轮询
- IP Hash
扩展策略不会编译进内核,需要手动将第三方模块编译进nginx内核。扩展策略主要通过第三方模块实现,种类比较丰富,常见的有
- url hash
- fair 等
下面重点介绍几种常用策略
- 轮询
轮询就是讲每个请求按顺序(时间顺序或排列次序)注意分配到不动的后端节点上,对于出现问题的节点自动排除。
- 加权策略
加权轮询就是在轮询策略的基础上,根据后端节点性能的不同设置不同的权重。指定各个后端节点被轮询到的几率。
- ip_hash
ip_hash策略就是将前端的访问ip进行hash操作,然后根据hash的结果将请求分配到不同的后端节点。这种策略也可以看成是一种特殊的加权轮询。通过nginx的实现,每个前端访问的ip会固定访问一个后端节点。
优点:解决前端用户session在后端多个节点共享的问题
- usl hash
这种策略与ip_hash相近,不同点是ip_hash是对客户端的ip进行hash,而url_hash是对客户端请求的url进行hash。
优点:如果后端有缓存服务器,可以提高缓存的效率,同时也能解决session共享的问题
缺点:后端节点出现异常,不能自动排除。异常节点导致503错误
- fair
fair 将请求转发的负载最小的后端节点。负载判断的标准是:nginx通过后端节点队请求的响应时间来判断,响应时间段说明负载相对轻。得出结果后,nginx将请求转发到负载最小的节点