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

需求原因

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

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


功能需求

发布系统本身更新迭代需求的过程当中,不能中止服务,对用户是无感知的java

实现设计方案

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


600



架构很是简单,经过一个LB做为反向代理,而后将全部请求转发到 后端的tomat ,后端有两个tomcat ,可是提供服务的只能是某一个tomcatgit

操做步骤

前提条件

  • LB 使用的Nginx 监听 80端口apache

  • 配置两个tomcat 一个 8080 端口,一个 8081端口后端




Nginx


No.1 安装tomcat


#Ubuntu 
sudo apt-get install nginx

#Centos
sudo yum install nginx


No.2 配置bash


以下配置,我给你们截图下重点,能够看到 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系统 界面


600







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

智能推荐

相关文章
相关标签/搜索