Nginx+Tomcat搭建集群

搭建环境

  1. CentOS 7
  2. Nginx 1.10.2
  3. 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
4
upstream 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
4
upstream server_tomcat {
server 127.0.0.1:7001 weight=1;
server 127.0.0.1:7002 weight=2;
}

Nginx 服务器分配方式

  1. 默认
  2. weight
  3. ip hash
  4. fair(第三方)
  5. url_hash (第三方)
显示评论