【Java】一台服务器配置多个Tomcat

需求缘由

最近接收了一个新的工具业务:ipublish发布系统,刚接手这个业务的时候,发现每次发布新的代码 需要到群里告知大家,我要停服务几分钟,准备更新代码啦。这尼玛 哪个公司都不敢这么牛逼的和用户说,我们网站要停服务几分钟,准备发布的。

基于这个原因我要对ipublish进行优化,如何优雅的发布代码,而用户是无感的

功能需求

发布系统自己更新迭代需求的过程中,不能停止服务,对用户是无感知的

实现设计方案

其实这个问题基本都知道解决方案,我这里就王婆卖瓜自卖自夸吧,来一张架构图

架构非常简单,通过一个LB作为反向代理,然后将所有请求转发到 后端的tomat ,后端有两个tomcat ,但是提供服务的只能是某一个tomcat

操作步骤

前提条件

  • LB 使用的Nginx 监听 80端口
  • 配置两个tomcat 一个 8080 端口,一个 8081端口

Nginx

No.1 安装

#Ubuntu 
sudo apt-get install nginx

#Centos
sudo yum install nginx

No.2 配置

如下配置,我给大家截图下重点,可以看到 upstream 中有8080 8081两个配置,其中后面有一个down关键字,表示对应端口不提供服务,

upstream ipublish {
	server 127.0.0.1:8080 weight=1 down;
	server 127.0.0.1:8081 weight=1 ;
}

server {
    listen       80 default_server;
	server_name  www.54php.cn;
    location / {
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://ipublish;
    }

}

Tomcat

其实tomcat 非常容易安装,因为官网提供编译后的可以直接下载运行就行了,我们这里重点讲解如何配置两个tomcat 监听不同的端口

No.1 下载

官网下载地址,这里我们下载tomcat7,  http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.78/bin/apache-tomcat-7.0.78.tar.gz

No.2 准备

下载完成后,将 压缩文件解压,加入解压之后 文件夹名称是apache_tomcat,此时我们复制出两个文件夹,名称分别是tomcat_8080,tomcat_8081,这两个目录就是用来配置两个端口

No.3 配置

以 tomcat_8080为例,tomcat_8081配置逻辑一样

修改 tomcat_8080/conf/server.xml

#找到如下地方,将port 改为7080(tomcat_8081的这个地方改为 7081)
<Server port="8070" shutdown="SHUTDOWN">

#找到如下地方,将port 改为8080(tomcat_8081的这个地方改为 8081)
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

修改tomcat_8080/bin/start.sh

#找到如下地方,增加配置
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export JAVA_VERSION=jdk1.8.0_101
export JAVA_HOME=/usr/local/$JAVA_VERSION
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export CATALINA_HOME=/usr/local/tomcat_8080  #此处根据各种路径配置
export CATALINA_BASE=/usr/local/tomcat_8080  #此处根据各种路径配置

No.4 启动

例如开始提供服务的是tomcat_8080,然后我要更新东西的时候我就把代码放入tomcat_8081,然后启动8081端口的tomcat服务,由于java启动是需要时间的,所以等启动好了之后,我就把nignx 中的 upstream 8080端口加上down关键字,然后nginx reload,这样就是8081 对外提供服务,我在关闭8080服务,这样对用户就是无感更新了

效果展示

主要给大家展示一下我们风骚的ipublish系统 界面

原文地址:【Java】一台服务器配置多个Tomcat
标签:java   发布系统   ipublish   tomcat   nginx   upstream

时间: 2024-08-09 10:44:06

【Java】一台服务器配置多个Tomcat的相关文章

用两台服务器配置moosefs

#########################################  网络架构                ######################################### (一) 网络架构 M1: 192.168.1.138 主服务器,存储块服务器,客户端 M2: 192.168.1.139  日志服务器,备份主控服务器,存储块服务器 ########################################   具体安装配置测试       ####

eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)

我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的webapps以下,没有看到我部署的项目 同一时候,work文件夹(jsp的工作文件夹)以下也没有生成相关的jsp的class文件和java源文件.可是我想看源代码啊.找了一堆关于jsp的源代码位置的文章,都说是在work以下能够找到.后来在不断的尝试下,我搜索了keyword server loc

Java web 项目读取src或者tomcat下class目录下的xml文件或者properties文件

//生成一个文件对象: File file = new File(getClass().getClassLoader().getResource("test.xml").getPath()); //直接得到一个输入流: InputStream in = getClass().getClassLoader().getResourceAsStream("test.xml"); //在当前线程获取--这个方法不大稳定 //String path = Thread.curr

Java企业级电商项目实战 Tomcat集群与Redis分布式

本套课程包含:java电商项目实战课程 Tomcat集群视频教程 Redis项目实战课程课程目录1-1 课程导学1-2 大型Java项目架构演进解析1-3 一期课程与问答服务回顾1-4 一期项目结构和代码回顾1-5 课程使用系统及技术版本介绍(一期+二期)1-6 二期项目初始化第2章 Lombok框架集成及原理解析本章会对Lombok框架进行介绍,同时会讲解Lombok的原理.并手把手领着小伙伴们实战,引入Lombok以及IDE安装Lombok插件.然后会带着大家实战Coding,讲解@Data

一台服务器上多tomcat实例的启动脚本

公司有一台服务器起了多个tomcat,每次需要重启,查看catalina.out输出都特别麻烦,写了一个脚本,贴出来,希望有经验的前辈指点一二,脚本如下: #!/bin/sh echo "请选择要操作的tomcat实例:" echo "1 : tomcat" echo "2 : tomcat2" echo "3 : tomcat_errorQues" tomcatid=`ps aux | grep java | grep -v

JAVA学习之路--Eclipse配置Tomcat Server

需要工具: Tomcat7 Eclipse step1:Window--Preference--Server--Runtime Envirenment step2:--Add--选择Apache Tomcat v7.0--next -- Name:Apache Tomcat v7.0 Tomcat Installation directory     D:\soft\tomcat7(我的Tomcat安装路径) JRE:选择jdk1.7.0.79(我的JDK版本) --Finish 此时工程目录下

腾讯云服务器配置JDK和Tomcat环境

1.添加tomcat所需的JDK环境变量(百度jdk下载即可),并将以下变量添加进服务器系统变量中 JAVA_HOME:C:\ProgramFiles\Java\jdk1.8.0_101(注:不同版本不同服务器的路径可能有所不同) CLASSPATH:.;%JAVA_HOME%\lib; Path:;%JAVA_HOME%\bin 2.下载安装tomcat 进入http://tomcat.apache.org/download-70.cgi,选择服务器对应版本的安装包下载,这里使用32-bit/

Linux下安装和配置java开发环境(jdk/eclipse/tomcat)

第一步 安装jdk 1.进入usr目录 cd /usr 2.在usr目录下建立java安装目录 mkdir java 3.将jdk-6u24-linux-i586.bin拷贝到java目录下 cp jdk-6u24-linux-i586.bin /usr/java/ 4.安装jdk cd /usr/java ./jdk-6u24-linux-i586.bin 5.安装完毕为他建立一个链接以节省目录长度 ln -s /usr/java/jdk1.6.0_24/ /usr/jdk 6.编辑配置文件

java学习---maven工程的创建+tomcat的热部署

 一.创建maven工程 1.创建maven的的web功能 2.在创建完成后,可能发现功能有错误,在eclipse中的错误描述如下: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决办法如下: 步骤:bulid Path --> Configure Bulid Path --> Libraries --> add Library -->