负载均衡(load-balance)就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。Nginx不仅可以作为一个Web服务器或反向代理服务器,还可以通过upstream指令实现配置负载均衡服务器组实现多种方式的负载均衡。4种典型方式:轮询方式、权重方式、ip_hash方式、第三方模块方式。
ip_hash方式是按每个请求访问IP的hash结果分配,可以使每个访客固定访问一个后端服务器,可以解决Session共享的问题。
1.准备服务器
准备3台虚拟机,并全部安装Nginx服务器。可以参考:源码编译安装Nginx,其中IP为192.168.1.141的服务器用作负载均衡服务器,另外两台用作后端Web服务器,IP分别为192.168.1.123和192.168.1.91
2.配置负载均衡服务器nginx.conf
#配置域名为test.com的主机 server { listen 80; server_name test.com; location / { proxy_pass http://web_server; } } #配置负载均衡服务器组名称和地址 upstream web_server { ip_hash; server 192.168.1.123; server 192.168.1.91; }
在使用ip_hash方式处理负载均衡时,Web服务器的状态可以使用down(表示当前的server暂时不参与负载均衡),但是不能使用weight(权重)和backup(预留的备份机器)。
3.配置WEB服务器组
在Web服务器192.168.1.123中的网站目录下编写index.html,内容如下:
192.168.1.123
在Web服务器192.168.1.91中的网站目录下编写index.html,内容如下:
192.168.1.91
4.测试验证
重启负载均衡服务器配置后,在其他机器上多次访问192.168.1.141输出的是一个固定IP,说明配置成功:
curl 192.168.1.141 #输出192.168.1.91 …… curl 192.168.1.141 #输出192.168.1.91
由于ip_hash方式为每一个用户IP绑定一个Web服务器处理,可能会导致某些Web服务器接收的请求多,某些Web服务器接到的请求少,无法保证Web服务器的负载均衡。 因此,建议只在必要的情况下使用这种方式。
转载请注明:零五宝典 » Nginx负载均衡配置——ip_hash方式