内容来自《Offer来了》
一般的负载均衡软件如LVS实现的功能只是对请求数据包的转发和传递,从负载均衡下的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户;而反向代理服务器在接收到用户的访问请求后,会代理用户重新向节点服务器(Web服务器、文件服务器、视频服务器)发起请求,反向代理服务器和节点服务器做具体的数据交互,最后把数据返回给客户端用户。在节点服务器看来,访问的节点服务器的客户端就是反向代理服务器,而非真实的网站访问用户,具体原理如图6-13所示。
ngx_http_upstream_module是Nginx的负载均衡模块,可以实现网站的负载均衡功能即节点的健康检查。upstream模块允许Nginx定义一组或多组节点服务器,在使用时可通过proxy_pass代理方式把网站的请求发送到事先定义好的对应Upstream组的名字上。具体的upstream定义如下:
upstream restLVSServer{
server 191.168.1.10:9000 weight=5 ;
server 191.168.1.11:9000;
server example.com:9000 max_fails=2 fail_timeout=10s backup;
}
如上代码定义了名为restLVSServer的upstream,并在其中定义了3个服务地址,在用户请求restLVSServer服务时,Nginx会根据权重将请求转发到具体的服务器。常用的upstream配置如下。
◎ weight:服务器权重。
◎ max_fails:Nginx尝试连接后端服务器的最大失败次数,如果失败时大于max_fails,则认为该服务器不可用。
◎ fail_timeout:max_fails和fail_timeout一般会关联使用,如果某台服务器在fail_timeout时间内出现了max_fails次连接失败,那么Nginx会认为其已经挂掉,从而在fail_timeout时间内不再去请求它,fail_timeout默认是10s, max_fails默认是1,即在默认情况下只要发生错误就认为服务器挂了,如果将max_fails设置为0,则表示取消这项检查。
◎ backup:表示当前服务器是备用服务器,只有其他非backup后端服务器都挂掉或很忙时,才会分配请求给它。
◎ down:标志服务器永远不可用。