1. 程式人生 > >使用mod_jk整合Apache HTTP Server和Tomcat

使用mod_jk整合Apache HTTP Server和Tomcat

前言

我們的一個新專案是一個RESTful架構風格的程式,伺服器端用Java編寫,對客戶端提供REST Web Service。使用Tomcat作為Servlet Container,Tomcat本身是無狀態的(stateless,REST的特點),無需做Session同步。不過為了實現可伸縮性,可用性以及可靠性的非功能性要求,需要做負載均衡,使用Apache HTTP Server作為前置。

Apache HTTP Server(以下簡稱Apache)整合Tomcat,通過模組來實現。有兩個方案,mod_jk和mod_proxy。前者是老牌勁旅,功能強大完備,但是理念有些落後,Apache安裝包不包含,需要額外下載;後者是主力新軍,有待雕琢和檢驗,天空才是極限,Apache安裝包自帶。具體的比較可以參考StackOverflow上的帖子(見參考1)本文只介紹mod_jk的方式。

結構圖如下:

Apache整合Tomcat圖

具體步驟

1. 安裝Apache和Tomcat

我用的作業系統是Windows,選擇的都是綠色版本(無需安裝,解壓縮即可的那種)。 Apache HTTP Server的安裝有很多教程,這裡不再鋪開來說。注意兩點,一是設定ServerRoot,如果在Windows系統下,把Apache直接裝在所在盤的根目錄即可免去配置ServerRoot;而是配置埠,Apache的預設埠是80,有可能80埠已經被已有程式佔用,那麼得配置。啟動有問題的話,請到logs目錄下檢視日誌。

Tomcat安裝在多臺機器上直接啟用即可。如果你向我一樣一臺機器安裝兩個Tomcat,那麼必須解決埠衝突的問題。我的做法是把兩個Tomcat命名為A和B,A埠不變,B埠加1,Server, Connector for http以及Connector for AJP都要修改,涉及5個數字。Tomcat的數量當然不僅限於2個,可以自行發揮,類推即可。

安裝好之後需要驗證安裝。Apache是否成功,單個Tomcat是否成功,兩個Tomcat同時執行是否成功。

2. 下載mod_jk,並安裝mod_jk

注意下載與Apache版本對應的mod_jk,複製到Apache的modules目錄即可。

3. 配置mod_jk

涉及到兩個兩個檔案conf/httpd.conf和conf/workers.properties。具體的配置含義可以自行查詢。

conf/httpd.conf需要增加幾行配置項(如果是Apache2.4, 記得取消註釋LoadModule access_compat_module modules/mod_access_compat.so

)。程式碼如下:

# load mod_jk 
LoadModule jk_module modules/mod_jk.so

# Specify path to worker configuration file
JkWorkersFile conf/workers.properties

# Configure logging and memory
JkShmFile logs/mod_jk.shm
JkLogFile logs/mod_jk.log
JkLogLevel info

# Configure monitoring
JkMount /jkmanager/* jkstatus

<Location /jkmanager>
Order deny,allow
Deny from all
Allow from localhost
</Location>

# Configure applications
JkMount /* loadbalancer

新建conf/workers.properties檔案,專屬於於mod_jk。程式碼如下:

# Define worker names
worker.list=jkstatus, loadbalancer

# Create virtual workers
worker.jkstatus.type=status
worker.loadbalancer.type=lb

# Declare Tomcat server workers 1 through n
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

worker.worker2.type=ajp13
worker.worker2.port=8010
worker.worker2.host=localhost

# Associate real workers with virtual LoadBalancer worker
worker.loadbalancer.balance_workers=worker1,worker2

It’s Done,就是那麼簡單。趕快試試吧。

後記

我們的伺服器是無狀態的,無需Session同步。如果你的專案需要,那麼我的理解與Apache也沒有關係,直接使用Tomcat的Cluster功能即可。

我們專案用到了WebSocket,WebSocket的可以做Load balancing。WebSocket的Load balancing與普通http請求相同,這是因為WebSocket是由Http Upgrade而來,初始的URL負載均衡了,WebSocket自然均衡。不過由於WebSocket是長連線,如果Server斷掉了,WebSocket客戶端必須主動發起重連,也就是客戶端需要重連機制。

參考連結:

友情連結

相關推薦

使用mod_jk整合Apache HTTP ServerTomcat

前言 我們的一個新專案是一個RESTful架構風格的程式,伺服器端用Java編寫,對客戶端提供REST Web Service。使用Tomcat作為Servlet Container,Tomcat本身是無狀態的(stateless,REST的特點),無需做Se

《轉載》Apache HTTP ServerTomcat 的三種連接方式介紹

之前 img 6.2 自定義 con 訪問 ont 是什麽 bsp 本文轉載自IBM developer 首先我們先介紹一下為什麽要讓 Apache 與 Tomcat 之間進行連接。事實上 Tomcat 本身已經提供了 HTTP 服務,該服務默認的端口是 8080,裝好 t

Apache HTTP ServerTomcat 的三種連線方式介紹

首先我們先介紹一下為什麼要讓 Apache 與 Tomcat 之間進行連線。事實上 Tomcat 本身已經提供了 HTTP 服務,該服務預設的埠是 8080,裝好 tomcat 後通過 8080 埠可以直接使用 Tomcat 所執行的應用程式,你也可以將該埠改為 80。

Windows下 Apache Http Server+ Tomcat 整合配置

可能網上已經有很多教程,這裡只是記錄OneCoder自己的搭建過程。 解壓後放置到apache安裝目錄中的modules資料夾中。 然後修改httpd.conf中的配置。加入配置: LoadModule jk_module modul

Windows 下 Apache HTTP Server 安裝、配置以及與 Tomcat整合(附圖)

如果您能點開這篇文章,說明您已對熟悉Apache HTTP Server(下文用Apache簡稱)配置的重要性已很清楚了,本文不在贅述,直接介入正題,請往下閱讀: 為便於閱讀,列出文章目錄: 一、Apache 的安裝說明 二、Apache 的基本配置 三、Apache

web伺服器&應用伺服器(ApacheTomcat、nginx) Apache HTTP Server,我們常常稱之為httpd,即常說的Apache。它是目前最流行的web伺服器。

現在也沒有特別搞懂他們之間的區別,只是有個大概的理解,可能會有不對的地方,隨時更新吧。 前提得搞明白代理伺服器和反向代理伺服器的區別。 一、web伺服器 Apache HTTP Server,我們常常稱之為httpd,即常說的Apache。它是目前最流行的web伺服器。 Apache

Apache HTTP Server vs Apache TomcatApache vs Nginx;Tomcat vs Weblogic/Webspere

Apache HTTP Server vs Apache Tomcat 來源: 知乎:tomcat 與 nginx,apache的區別是什麼? 嚴格的來說,Apache/Nginx 應該叫做「HTTP Server」;而 Tomca

搭建Apache HTTP Server(編譯安裝)

bin con cnn 源碼 err 可能 方法 創建 部分 mkdir /apache #創建一個Apache目錄,位置隨你們習慣wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.25.tar.bz2 #下載a

Centos7 安裝Apache http server實戰筆記

安裝Apache http server下載所需源碼安裝包:[root@centos7 ~]# wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.33.tar.gz[root@centos7 ~]# wget http://mirrors.hust.

編譯安裝Apache HTTP Server 2.4.23 以及配置HTTP/HTTPS反向代理

chan .so har 替換 quest pre and for 大小 編譯安裝Apache HTTP Server 2.4.23以及配置HTTP/HTTPS反向代理一,依賴軟件: 1.1 GCC和C++編譯器 GCC C++ Compiler 1.1.1 如果沒有安

詳談Apache、Nginxtomcat的區別以及處理靜態頁面動態頁面的方式

請求 php腳本 特點 java類 是你 源碼 proc 總結 愛好者 就目前來說,網站主要分為靜態頁面和動態頁面,純靜態頁面的網站已經比較少見了,大型網站一般使用的是靜態頁面+動態頁面的建站技術,還有一部分網站是純動態頁面。負責處理這些頁面的軟件我們通常稱之為web容器,

CentOS 7.4下源碼安裝 Apache HTTP Server(httpd-2.4.35)

-- pre mir 成功 httpd 來安 ces mos .cn CentOS 7.4下源碼安裝 Apache HTTP Server(httpd-2.4.35) 前提:確保安裝了expat-devel, APR包 (apr-1.6.3.tar.gz 和 apr-ut

apache2啟動失敗(Failed to start The Apache HTTP Server.)解決方案

star 卸載 sta 啟動 art code led sudo pac 不知道如何啟動apache2就啟動不來了。 如下圖所示: 即使卸載了重新裝也是如此 經過測試卸載並清除軟件包的配置即可解決   sudo apt-get purge apache2   s

CentOS 7.4下原始碼安裝 Apache HTTP Server(httpd-2.4.35)

CentOS 7.4下原始碼安裝 Apache HTTP Server(httpd-2.4.35) 前提:確保安裝了expat-devel, APR包 (apr-1.6.3.tar.gz 和 apr-util-1.6.1.tar.gz); 用YUM方式安裝expat-devel 和 apr-ut

在CentOS 7 1804 中 配置 Apache HTTP Serverhttp 自動跳轉之 https

相關連結: 在CentOS 7 1804 中 安裝 Apache HTTP Server 並 配置 騰訊雲 SSL 在CentOS 7 1804 中 安裝 Apache HTTP Server 並 配置 阿里雲 SSL 在CentOS 1804 中的 Tomcat 9 設定 SSL( h

在CentOS 7 1804 中 安裝 Apache HTTP Server 並 配置 阿里雲 SSL

相關連結: 在CentOS 7 1804 中 安裝 Apache HTTP Server 並 配置 騰訊雲 SSL 在CentOS 1804 中的 Tomcat 9 設定 SSL( https ) 加密 (多域名加密,阿里雲 SSL+ 騰訊雲 SSL) 在CentOS 1804 中設定

在CentOS 7 1804 中 安裝 Apache HTTP Server 並 配置 騰訊雲 SSL

相關連結: 在CentOS 7 1804 中 安裝 Apache HTTP Server 並 配置 阿里雲 SSL 在CentOS 1804 中的 Tomcat 9 設定 SSL( https ) 加密 (多域名加密,阿里雲 SSL+ 騰訊雲 SSL) 在CentOS 1804 中設定

安裝Apache HTTP Server以及所出現的問題

安裝Apache HTTP Server以及所出現的問題 可以在http://httpd.apache.org/下載得到,安裝步驟如下: 1、進入網站之後,選擇“Dowload” 2、選擇“a number of third party vendors” 3、 The

Apache http server linux 安裝過程說明

release 出錯 -m 1024以下 瀏覽器 rfi sta ref linux 安裝 版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/sundenskyqq/article/det

Holer實現外網訪問本地Apache HTTP Server

外網訪問內網Apache HTTP Server 內網主機上安裝了Apache HTTP Server,只能在區域網內訪問,怎樣從公網也能訪問本地Apache HTTP Server? 本文將介紹使用holer實現的具體步驟。 1. 準備工作 1.1 安裝並啟動Apache HTTP Server