1. 程式人生 > >【Java】一臺服務器配置多個Tomcat

【Java】一臺服務器配置多個Tomcat

shu 找到 通過 下載 ref connect 解決方案 .gz header

需求緣由

最近接收了一個新的工具業務: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

【Java】一臺服務器配置多個Tomcat