Tomcat多实例部署和动静分离

一、多实例部署:

多实例:多实例就是在一台服务器上同时开启多个不同的服务端口,同时运行多个服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。

1.前期准备:

bash 复制代码
1.关闭防火墙:
  systemctl stop firewalld.service
  setenforce 0

2.准备安装包

3.安装jdk:
  rpm -ivh jdk-8u201-linux-x64.rpm

4.部署两个tomcat:
  mv apache-tomcat-9.0.16 /usr/local/tomcat1
  cp -a /usr/local/tomcat1/ /usr/local/tomcat2

2.配置tomcat环境变量:

bash 复制代码
vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat1
export CATALINA_BASE1=/usr/local/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat1

#tomcat2
export CATALINA_HOME2=/usr/local/tomcat2
export CATALINA_BASE2=/usr/local/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat2


source /etc/profile.d/tomcat.sh  ##刷新配置

3.更改端口号:

修改 tomcat2 中的 server.xml 文件,各 tomcat 实例配置不能有重复的端口号

bash 复制代码
22行,修改Server prot,默认为8005 -> 修改为8006

69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081

116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

4.更改启动、关闭脚本的环境变量:

bash 复制代码
tomcat1:

vim /usr/local/tomcat1/bin/startup.sh
  export CATALINA_BASE=$CATALINA_BASE1
  export CATALINA_HOME=$CATALINA_HOME1
  export TOMCAT_HOME=$TOMCAT_HOME1

vim /usr/local/tomcat1/bin/shutdown.sh
  export CATALINA_BASE=$CATALINA_BASE1
  export CATALINA_HOME=$CATALINA_HOME1
  export TOMCAT_HOME=$TOMCAT_HOME1

tomcat2:

vim /usr/local/tomcat2/bin/startup.sh
  export CATALINA_BASE=$CATALINA_BASE2
  export CATALINA_HOME=$CATALINA_HOME2
  export TOMCAT_HOME=$TOMCAT_HOME2

vim /usr/local/tomcat2/bin/shutdown.sh
  export CATALINA_BASE=$CATALINA_BASE2
  export CATALINA_HOME=$CATALINA_HOME2
  export TOMCAT_HOME=$TOMCAT_HOME2

5.启动tomcat:

6.测试:

二、动静分离:

1.实验背景:

Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但不是把所有的web请求转发,而是将静态页面请求Ncinx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理。

Tomcat是属于轻量级的应用服务器,可接受访问量可能会不足,所以我们需要多台Tomcat服务器。并且Tomcat并发量处理能力弱(约Nginx的六分之一),所以需要Nginx方向代理时,进行合理的调用分配。

2.地址分配:

(1)代理服务器(Nginx):

192.168.88.100

  • 作为前端,处理静态请求,响应静态页面
  • 将动态请求转发到后端,由后端Toncat处理
  • 动态请求的负载均衡

(2)Tomcat服务器:

192.168.88.103:8080 192.168.88.103:8081 192.168.88.104:8080

作为后端,处理动态请求

3.配置tomcat:

bash 复制代码
  tomcat 8080
                               #添加jsp界面
vim  /usr/local/tomcat1/webapps/www/index.jsp
  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  <html>
  <head>
  <title>JSP test1 page</title>
  </head>
  <body>
  <% out.println("动态页面 1,192.168.88.103:8080");%>
  </body>
  </html>
                               #配置主机访问路径
vim /usr/local/tomcat1/conf/server.xml
  <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" 
  xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="/usr/local/tomcat1/webapps/www" path="" reloadable="true" />
  </Host>



  tomcat  8081
vim  /usr/local/tomcat2/webapps/www/index.jsp
  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  <html>
  <head>
  <title>JSP test2 page</title>
  </head>
  <body>
  <% out.println("动态页面 2,192.168.88.103:8081");%>
  </body>
  </html>

vim /usr/local/tomcat2/conf/server.xml
  <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" 
  xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="/usr/local/tomcat2/webapps/www" path="" reloadable="true" />
  </Host>

tomcat 192.168.88.104:8080   同上

#配置完成后重启服务
shutdown.sh    startup.sh

4.配置nginx动静分离:

4.1 在http块中配置服务器组:

bash 复制代码
upstream www {
    server 192.168.88.103:8080;
    server 192.168.88.103:8081;
    server 192.168.88.104:8080;
}

4.2 配置动态静态请求的location:

bash 复制代码
##访问以jsp结尾的url时代理到动态服务器组 

 location ~ .*\.jsp$ {
          proxy_pass http://www;
          proxy_set_header HOST $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             #ip透穿
        }


##访问静态图片就用nginx本机处理:

    location ~ .*\.(jpg|png) {
       root /apps/nginx/html;
}


nginx -s reload  ##刷新配置文件

5.测试:

相关推荐
stormsha9 分钟前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
eternal__day12 分钟前
Spring Cloud 多机部署与负载均衡实战详解
java·spring boot·后端·spring cloud·负载均衡
新加坡内哥谈技术40 分钟前
Meta计划借助AI实现广告创作全自动化
运维·人工智能·自动化
zyjyyds1131 小时前
win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
运维·docker·容器
Altairr1 小时前
Docker基础(一)
运维·docker·容器·eureka
文牧之1 小时前
PostgreSQL 的扩展pageinspect
运维·数据库·postgresql
小兔子酱#2 小时前
【Docker 01】Docker 简介
运维·docker·容器
jugt3 小时前
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
linux·运维·centos
hunter1274 小时前
Nginx 事件驱动理解
nginx
21号 15 小时前
9.进程间通信
linux·运维·服务器