• tomcat配置多实例


    tomcat配置多实例

    单实例单应用

    正常安装部署之后,运行一个webapp

    单实例多应用

    正常安装部署之后,运行多个不同的webapp;就是将多个webapp项目的war包,放到appbase指定的那个目录下就好,启动服务时tomcat自动运行代码,简单的讲,就是一个Tomcat运行多个应用而已,还是在同一个进程上运行的

    多实例单应用(且nginx做负载均衡)

    • 环境
    主机 软件
    nginx:192.168.111.3 nginx-1.14.2
    tomcat:192.168.111.4 apache-tomcat-8.5.16
    • 结构图

    使用3个tomcat实例部署同一个项目将端口号修改为不同的

    [root@localhost ~]# rm -rf /usr/bin/java
    #将系统自带jdk删除,很多功能不全
    
    
    [root@localhost ~]# tar zxf jdk-8u201-linux-x64.tar.gz 
    [root@localhost ~]# mv jdk1.8.0_201/ /usr/local/java
    
    [root@localhost ~]# vim /etc/profile
        export JAVA_HOME=/usr/local/java
        export PATH=$PATH:$JAVA_HOME/bin
    
    [root@localhost ~]# . /etc/profile
    
    [root@localhost ~]# java -version
    java version "1.8.0_201"
    Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
    Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
    
    [root@localhost ~]# javac -version
    javac 1.8.0_201
    
    [root@localhost ~]# tar zxf apache-tomcat-8.5.16.tar.gz 
    [root@localhost ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8
    #配置安装tomcat
    
    [root@localhost ~]# mkdir -pv /usr/local/tomcat_instance/tomcat{1,2,3}/{bin,conf}
    #工作目录
    
    [root@localhost ~]# cp /usr/local/tomcat8/conf/* /usr/local/tomcat_instance/tomcat1/conf/
    [root@localhost ~]# cp /usr/local/tomcat8/conf/* /usr/local/tomcat_instance/tomcat2/conf/
    [root@localhost ~]# cp /usr/local/tomcat8/conf/* /usr/local/tomcat_instance/tomcat3/conf/
    #相关配置文件进行拷贝
    
    #编辑tomcat起停脚本
    [root@localhost local]# vim /usr/local/tomcat_instance/tomcat1/bin/startup.sh
    #!/bin/bash
    export JRE_HOME=/usr/local/java/jre
    export CATALINA_HOME=/usr/local/tomcat8
    export CATALINA_BASE="/usr/local/tomcat_instance/tomcat1"
    export CATALINA_TMPDIR="$CATALINA_BASE/temp"
    export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"
    export JAVA_OPTS="-server -Xms1024m -Xmx1024m -Djava.awt.headless=true -Dtomcat.name=tomcat1"
    #-server:一定要作为第一个参数,在多个CPU时性能佳;-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些;-Xmx:javaheap最大值,使用的最大内>存;
    #Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标,因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。相当于告诉程序,自力更生,依靠系统计算能力模拟出这些硬件的特性来;设置这些变量供后面Java读取
    
    #创建logs目录
    
    if [ ! -d "$CATALINA_BASE/logs" ]; then
      mkdir $CATALINA_BASE/logs
    
    fi
    
    #创建temp目录
    
    if [ ! -d "$CATALINA_BASE/temp" ]; then
      mkdir $CATALINA_BASE/temp
    
    fi
    
    # 调用tomcat启动脚本
    
    bash $CATALINA_HOME/bin/startup.sh "$@"
    
    [root@localhost local]# vim /usr/local/tomcat_instance/tomcat1/bin/shutdown.sh
    #!/bin/bash
    export JRE_HOME=/usr/lcoal/java/jre
    
    export CATALINA_HOME=/usr/local/tomcat8
    
    export CATALINA_BASE="/usr/local/tomcat_instance/tomcat1"
    
    export CATALINA_TMPDIR="$CATALINA_BASE/temp"
    
    export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"
    
    bash $CATALINA_HOME/bin/shutdown.sh "$@"
    
    • 将以上起停脚本复制到tomcat2,和3的目录下,注意修改CATALINA_BASE的路径。

    [root@localhost ~]# chmod +x /usr/local/tomcat_instance/tomcat{1,2,3}/bin/*

    • 以下是修改配置文件中的端口,避免冲突(Server port、 Connector port、AJP)
    [root@localhost local]# vim /usr/local/tomcat_instance/tomcat2/conf/server.xml 
        <Server port="8005" shutdown="SHUTDOWN">
        <Connector port="8080" protocol="HTTP/1.1"
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
        
    [root@localhost local]# vim /usr/local/tomcat_instance/tomcat2/conf/server.xml 
    #进行端口的修改:(Server port、Connector port、AJP)
        <Server port="8015" shutdown="SHUTDOWN">
        <Connector port="8090" protocol="HTTP/1.1"
        <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
        
    [root@localhost local]# vim /usr/local/tomcat_instance/tomcat3/conf/server.xml 
    #进行端口的修改:(Server port、Connector port、AJP)
        <Server port="8025" shutdown="SHUTDOWN">
        <Connector port="8070" protocol="HTTP/1.1"
        <Connector port="8029" protocol="AJP/1.3" redirectPort="8443" />
        
    [root@localhost local]# mkdir /usr/local/tomcat_instance/tomcat{1,2,3}/webapps/ROOT -pv
    #测试用到的默认网页目录
    
    [root@localhost local]# echo "welcom tomcat1" > /usr/local/tomcat_instance/tomcat1/webapps/ROOT/index.jsp
    [root@localhost local]# echo "welcom tomcat2" > /usr/local/tomcat_instance/tomcat2/webapps/ROOT/index.jsp
    [root@localhost local]# echo "welcom tomcat3" > /usr/local/tomcat_instance/tomcat3/webapps/ROOT/index.jsp
    #测试页
    
    
    
    [root@localhost ~]# /usr/local/tomcat_instance/tomcat1/bin/startup.sh 
    
    [root@localhost ~]# /usr/local/tomcat_instance/tomcat2/bin/startup.sh 
    
    [root@localhost ~]# /usr/local/tomcat_instance/tomcat3/bin/startup.sh 
    
    
    [root@localhost ~]# netstat -lnpt | grep java
    tcp6       0      0 :::8029                 :::*                    LISTEN      64828/java          
    tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      64717/java          
    tcp6       0      0 :::8070                 :::*                    LISTEN      64828/java          
    tcp6       0      0 :::8009                 :::*                    LISTEN      64717/java          
    tcp6       0      0 127.0.0.1:8015          :::*                    LISTEN      64773/java          
    tcp6       0      0 :::8080                 :::*                    LISTEN      64717/java          
    tcp6       0      0 :::8019                 :::*                    LISTEN      64773/java          
    tcp6       0      0 127.0.0.1:8025          :::*                    LISTEN      64828/java          
    tcp6       0      0 :::8090                 :::*                    LISTEN      64773/java          
    #可以看到使用的是不同的端口,每个实例的进程号也不相同。
    
    
    [root@localhost ~]# curl http://192.168.111.4:8080
    welcom tomcat1
    [root@localhost ~]# curl http://192.168.111.4:8090
    welcom tomcat2
    [root@localhost ~]# curl http://192.168.111.4:8070
    welcom tomcat3
    
    • 负载均衡
    [root@promote ~]# vim /usr/local/nginx/conf/nginx.conf
    
    http {
        ...
        upstream tomcatserver {
            server 192.168.111.4:8080 weight=1;
            server 192.168.111.4:8090 weight=1;
            server 192.168.111.4:8070 weight=1;
            }
        ...
        server {
            ...
            location ~ .jsp$ {
              proxy_pass http://tomcatserver;
            }
    
    [root@promote ~]# killall -HUP nginx
    
    
    [root@promote ~]# curl 192.168.111.3/index.jsp
    welcom tomcat1
    [root@promote ~]# curl 192.168.111.3/index.jsp
    welcom tomcat2
    [root@promote ~]# curl 192.168.111.3/index.jsp
    welcom tomcat3
    

    至此,也算是一个简单的多实例单应用并且结合nginx负载均衡算是完成,想真正应用于生产环境,还有诸多考虑的因素,有利有弊,结合实际环境谨慎使用

    多实例多应用

    在以上配置中的起停脚本当中
    CATALINA_HOME指的是tomcat自身的安装配置文件
    CATALINA_BASE指的是tomcat上运行的实例的配置文件和应用的代码
    这样做的好处就是升级 tomcat 或修改tomcat脚本的相关配置,只需要更新这一套程序就行,也方便了日后的维护。多实例部署最大作用就是最大化利用服务器资源。

  • 相关阅读:
    昇腾AI处理器软件栈--任务调度器(TS)
    [转]shopnc 版权问题
    关于对接诸葛IO 解决的问题
    Mysql中like查询中存在反斜杠的解决方法
    关于TP,PHP和shopnc 的cookie
    TypeError: document.getElementById(…).submit is not a function解决
    关于图片上传的 相对路径出现问题
    Android 通讯录
    关于kindedit和 Uedit后者兼容前者
    Handler机制
  • 原文地址:https://www.cnblogs.com/jojoword/p/10809914.html
Copyright © 2020-2023  润新知