3.Nginx负载均衡策略
Nginx负载均衡策略
网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时候来自web前端的压力,也能让人十分头痛。怎样将同一个域名的访问分散到两台或更多的机器上呢?这其实就是另一种负载均衡了,nginx自身就可以做到,只需要做个简单的配置就行。
nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。
Nginx服务器的负载均衡策略:
内置策略
扩展策略
1.1 内置策略
在默认情况下,内置策略会被编译进Nginx内核,使用时只需要在Nginx服务器配置中设置相关参数即可。
- 轮询
将每个前端请求按顺序(时间顺序或者排序次序)逐一分配到不同的后端节点上,对于出现问题的后端节点自动排除。
- 加权轮询
在基本的轮询策略上考虑各后端节点接收请求的权重,指定各后端节点被轮询到的几率。加权轮询策略主要用于后端节点性能不均的情况。根据后端节点性能的实际情况,我们可以在Nginx服务器的配置文件中调整权值,使得整个网络对前端请求达到最佳的响应能力。
- IP hash
将前端的访问IP进行hash操作,然后根据hash结果将请求分配给不同的后端节点。事实上,这种策略可以看作是一种特殊的轮询策略。通过Nginx的实现,每个前端访问IP会固定访问一个后端节点。
优点:避免考虑前端用户的session在后端多个节点上共享的问题。
1.2 扩展策略
扩展策略不会编译进Nginx内核,需要手动将第三方模块编译到Nginx内核。
- url hash
与IP hash相近,IP hash:前端访问IP,IP url:前端请求url。
优点:如果后端有缓存服务器,可以提高缓存效率,同时也解决了session的问题
缺点:如果后端节点出现异常,不能自动排除该节点,后端节点出现异常会导致Nginx服务器返回503错误。
- fair
将前端请求转发到一个最近负载最小的后台节点。
判断负载最小的方法:Nginx通过后端节点对请求的响应时间来判断负载情况,响应时间短的节点负载相对较轻。得出判断结果后,Nginx就将前端请求转发到选中的负载最轻的节点。