Nginx+Tomcat负载均衡及常见负载均衡策略
1.环境准备
ip | 安装软件 |
---|---|
192.168.33.129 | Nginx、Tomcat |
192.168.33.130 | Tomcat |
2.部署
修改两台服务器的Tomcat访问页面方便区分
vi /usr/local/apache-tomcat-7.0.99/webapps/ROOT/index.jsp
添加如下代码
启动Tomcat并访问
192.168.33.129:8080
192.168.33.130:8080
至此,两台Tomcat已配置完毕
配置Nginx
vi /usr/local/tengine/conf/nginx.conf
在http块内添加upstream
upstream tomcats {
server 192.168.33.129:8080;
server 192.168.33.130:8080;
}
修改server块内location里面的规则
location / {
proxy_pass http://tomcats;
}
重载Nginx配置文件
service nginx reload
访问192.168.33.129,请求会轮询分发到node1和node2
至此,Ngxin+Tomcat负载均衡配置完毕
Nginx负载均衡常用策略
1.轮询(默认策略):将两台服务器写在upstream中,请求以循环的方式访问不同的服务器
upstream tomcats {
server 192.168.33.129:8080;
server 192.168.33.130:8080;
}
2.加权轮询:权重值1-10,权重值越大分配到的请求率越高,权重比与访问比成正比。通常在两台服务器性能不一致的情况下使用
upstream toncats {
server 192.168.33.129:8080 weight=3;
server 192.168.33.129:8080 weight=7;
}
3.ip_hash:通过访问的ip来分配不同的服务器,同一个ip发来的请求永远访问同一台服务器。可能会导致访问倾斜问题,即并发量大的时候请求可能打到一台服务器
upstream tomcats {
ip_hash;
server 192.168.33.129:8080;
server 192.168.33.130:8080;
}
4.最少连接数:在一些请求需要长时间响应的情况下,使用最少连接数策略,Nginx不会把新的请求分发到比较繁忙的服务器上
upstream tomcats {
least_conn;
server 192.168.33.129:8080;
server 192.168.33.130:8080;
}
5.url_hash:通过访问的URL来分配不同的服务器,同一个URL的请求只会分发给同一台服务器
upstream tomcats {
hash $request_uri;
server 192.168.33.129:8080;
server 192.168.33.130:8080;
}