搭建环境
- CentOS 7
- Nginx 1.10.2
- Tomcat 8.5.16 X 2
安装 Nginx 和 Tomcat
安装过程在这里就不在赘述了,具体的可以参考网上教程。
分别修改2个 Tomcat 配置
这里修改的主要是 Tomcat的 Web 监听端口,AJP端口,以及 关闭时候监听的端口,具体如下。
tomcat 1 的配置文件如下:1
2
3
4
5
6
7
8<Server port="8006" shutdown="SHUTDOWN">
... 省略一部分配置
<Connector port="7001" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
... 省略一部分配置
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
tomcat 2 的配置文件如下:1
2
3
4
5
6
7
8<Server port="8007" shutdown="SHUTDOWN">
... 省略一部分配置
<Connector port="7002" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
... 省略一部分配置
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
完成配置文件修改以后,我们就在服务器上部署了两台 Tomcat 实例。可以分别通过http://ip地址:7001/
和 http://ip地址:7002
来访问测试。
修改 Nginx 的配置
在 http 配置里添加以下部分1
2
3
4upstream server_tomcat {
server 127.0.0.1:7001;
server 127.0.0.1:7002;
}
在 server 里面添加或修改以下部分1
2
3
4
5
6
7
8
9
10
11
12 listen 7003; // nginx 监听的端口
server_name localhost; // 服务器名,可以填写服务器的ip,或者域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://server_tomcat;
}
完成以上配置之后,我们就可以启动 nginx 了,来测试负载均衡是否正常。
可以发现,每次刷新nginx代理都会转发不同的服务器,貌似两台两台服务器被访问的概率一样,实现了负载均衡。那么我们能不能设置每次访问两台服务器的概率不一样呢,答案是可以的,可以通过设置 weight 来达到访问概率不一样的效果,weight 越大,相应的服务器访问到的概率也就一样。1
2
3
4upstream server_tomcat {
server 127.0.0.1:7001 weight=1;
server 127.0.0.1:7002 weight=2;
}
Nginx 服务器分配方式
- 默认
- weight
- ip hash
- fair(第三方)
- url_hash (第三方)