Tomcat集群与负载均衡的配置 -- windows篇

May . 02 . 2019
  • 集群的相关知识

web server only.JPG

如图这是一张单服务的web系统的架构图, web server 的主要职责是给 Tomcat App Server 做代理, 在这个架构图中,Nginx第二次职责是给FTPServer指定的目录再做一层目录转发。单服务体系的优点是当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。缺点是所有用户的请求都会打到一个服务器上面, 当用户量达到一定的数量, 并发的量达到服务器的瓶颈时, 网站会不堪重负。

web server many.JPG

为了解决单服务并发能力差的问题, 常见的解决的方法就是增加服务器, 此时用户的访问不会集中到一个服务器上, web Server 层会根据一定的策略, 随机的将用户分发的不同的服务器上, 很好的解决的用户量大的问题, 而多台服务器组成的 App server 就称为服务器集群。集群的优点很明显, 提高了服务的性能, 并发能力, 以及高可用性和横向扩展的能力等等。

  • Tomcat单机部署多应用

1. 下载tomcat  tomcat-8.5.40

下载两个tomcat服务器到本地并解压, 如图

tomcat.JPG


2. 配置环境变量

打开环境变量, 在系统变量上添加

system1.JPG

 system2.JPG

这里注意将值替换为你自己的解压路径

3. 修改tomcat配置

由于tomcat 的默认环境变量名是 CATALINA_BASE, CATALINA_HOME, TOMCAT_HOME 所以我们需要把另外一个不是使用默认名 tomcat的 配置修改一下, 否则启动程序会找不到路径, 在我这里是修改 tomcat8-3 这个服务器, tomcat8-2 的配置保持不变

打开 tomcat8-3  目录 bin 下的 catalina.bat (用记事本或者sublim打开, 不要双击) 和 startup.bat (用记事本或者sublim打开, 不要双击), 替换这两个文本中的 CATALINA_BASE 为 CATALINA_2_BASE, CATALINA_HOME 为 CATALINA_2_HOME , TOMCAT_HOME 为 TOMCAT_2_HOME 。

打开 tomcat8-3 的 conf 目录下 server.xml,

修改 server port 节点的端口号为

<Server port="9005" shutdown="SHUTDOWN">

修改 Connector port 的端口号为

<Connector port="9080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" URIEncoding="UTF-8"/>

修改 Connector port="" protocol="AJP/1.3" 的端口号为

<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

以上修改的端口号都可以自行修改, 只需要保证与系统或其他的 tomcat 服务器不重复即可。

4. 启动tomcat

通过 cmd 分别进入两个 tomcat 的 bin 目录, 执行 startup.bat 启动 tomcat, 启动成功后如图

start.JPG

此时访问http://localhost:8080, http://localhost:9080, 可以打开 tomcat 的默认首页, 如果还想继续增加tomcat服务器重复以上步骤即可

  • nginx负载均衡的配置

1. 替换 tomcat 的默认首页文件

分别进入刚才配好的两个tomcat目录下的 webapps/ROOT/ 目录下删除其他文件, 并添加一个index.jsp

tomcat8-2/webapps/ROOT/ index.jsp

<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
<h2>tomcat 1!</h2>
    
</form>
</body>
</html>

tomcat8-3/webapps/ROOT/ index.jsp

<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
<h2>tomcat 2!</h2>
    
</form>
</body>
</html>

2. 修改系统的host文件(C:\Windows\System32\drivers\etc\host)

新增一条, 域名可以自行替换

127.0.0.1 niu.test

保存之后, 可以使用 cmd 来 ping 一下你配置的域名是否生效, 如果出现保存不了的情况, 可以右键使用管理员打开。

ping.JPG

继续访问 http://niu.test:8080, http://niu.test:9080

8080.JPG

9080.JPG

如果一切正常, 进行下一步

3.配置nginx

确保你的nginx服务已启动, 编辑nginx根目录/conf/nginx.conf配置文件

在http节点下增加

include vhost/*.conf

在nginx的根目录下的conf目录下新建vhost文件夹

vhost.JPG

在vhost中新建 niu.test.conf 配置文件(这里的niu.test可以替换为你自己的, 但是要和之前的一致)

upstream niu.test{

    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:9080 weight=1;
    
    #server niu.test:8080;
    #server niu.test:9080;
}

server {
    listen 8080;
    autoindex on;
    server_name niu.test;
    access_log E:/nginx/nginx-1.14.2/logs/access.log combined;
    index index.html index.htm index.jsp index.php;
    location / {
            proxy_pass http://niu.test;
            add_header Access-Control-Allow-Origin *;
            }
}

注意替换配置文件中的路径为你本机的

3. 重启nginx

通过 cmd 在nginx根目录下执行 nginx -s reload

4. 验证

打开浏览器输入http://niu.test, 多次刷新观察页面, 如果发现是 Tomcat1 与 Tomcat2 交替显示, 则为Tomcat 集群及 Nginx 负载均衡环境搭建成功。