用jk整合Apache和tomcat實現負載均衡
最近剛看完一些關於如何用jk整合Apache和tomcat的資料,為了防止自己忘記,把它們在這裡都寫下來。部分內容摘抄於網路。
首先下載tomcat, apache和jk。
1. 下載, 安裝於“C:/Program Files/Apache Software Foundation/Apache2.2”
2. 下載,放在“Apache Software Foundation/Apache2.2/modules and rename it to mod_jk.so”
JK 是通過 AJP 協議與 Tomcat 服務器進行通訊的,Tomcat 預設的 AJP Connector 的埠是 8009。
<tomcat>/conf/server.xml:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
JK 本身提供了一個監控以及管理的頁面 jkstatus,通過 jkstatus 可以監控 JK 目前的工作狀態以及對到 tomcat 的連線進行設定,如下圖所示:
在這個圖中我們可以看到當前JK配了兩個連線分別到 8109 和 8209 埠上,目前 s2 這個連線是停止狀態,而 s1 這個連線自上次重啟後已經處理了 47 萬多個請求,流量達到 6.2
JK 的配置最關鍵的有三個檔案,分別是
httpd.conf
Apache 伺服器的配置檔案,用來載入 JK 模組以及指定 JK 配置檔案資訊
workers.properties到 Tomcat
uriworkermap.properties
URI 對映檔案,用來指定哪些 URL 由 Tomcat 處理,你也可以直接在 httpd.conf 中配置這些 URI,通過JkMount,比如:
JkMount /*.do route1
JkUnMount /output/*loadbalancer (如果有不想轉發目錄,則用JkUnMount)
#關掉主機Lookup,如果為on,很影響效能,可以有10多秒鐘的延遲。
HostnameLookups Off
但是獨立這些配置的好處是 JK 模組會定期更新該檔案的內容,使得我們修改配置的時候無需重新啟動 Apache 伺服器。
其中第二、三個配置檔名都可以自定義。下面是一個典型的 httpd.conf 對 JK 的配置
Apache Software Foundation/Apache2.2/conf/httpd.conf
# (httpd.conf) # 載入 mod_jk 模組 LoadModule jk_module modules/mod_jk.so # # Configure mod_jk # JkWorkersFile conf/workers.properties JkMountFile conf/uriworkermap.properties JkLogFile logs/mod_jk.log JkLogLevel warn |
接下來我們在 Apache 的 conf 目錄下新建兩個檔案分別是 workers.properties、uriworkermap.properties。這兩個檔案的內容大概如下
# # workers.properties # # list the workers by name worker.list=route1, status # localhost server 1 # ------------------------ worker.s1.port=8009#ajp13 埠號,在tomcat下server.xml配置,預設8009 worker.s1.host=localhost#tomcat的主機地址,如不為本機,請填寫ip地址 worker.s1.type=ajp13 worker.s1.lbfactor=1#server的加權比重,值越高,分得的請求越多 # localhost server 2 # ------------------------ worker.s2.port=8109 worker.s2.host=localhost worker.s2.type=ajp13 worker.s2.lbfactor=1 worker.s2.stopped=1 worker.route1.type=lb worker.retries=3 worker.route1.balanced_workers=s1, s2 worker.route1.sticky_session=1 worker.status.type=status |
具體的引數含義如下: A、worker.list=route1, status C、worker.route1.balanced_workers=s1, s2 |
接下來便是 URI 的對映配置了,我們需要指定哪些連結是由 Tomcat 處理的,哪些是由 Apache 直接處理的,看看下面這個檔案你就能明白其中配置的意義
/*=route1 /jkstatus=status !/*.gif=route1 !/*.jpg=route1 !/*.png=route1 !/*.css=route1 !/*.js=route1 !/*.htm=route1 !/*.html=route1 |
相信你已經明白了一大半了:所有的請求都由route1這個 worker 進行處理,但是有幾個例外,/jkstatus 請求由 status 這個 worker 處理。另外這個配置中每一行資料前面的感嘆號是什麼意思呢?感嘆號表示接下來的 URI 不要由 JK 進行處理,也就是 Apache 直接處理所有的圖片、css 檔案、js 檔案以及靜態 html 文字檔案。
以上的 workers.properties 配置就是我們前面那個螢幕抓圖的頁面所用的配置。首先我們配置了兩個型別為 ajp13 的 worker 分別是 s1 和s2,它們指向同一臺伺服器上執行在兩個不同埠 8009 和 8109 的 Tomcat 。不需要設定Tomcat中的jvmRoute,只要正確設定了port和host,apache便能正確連線tomcat。接下來我們配置了一個型別為 lb(也就是負載均衡的意思)的 worker,它的名字是route1,這是一個邏輯的 worker,它用來管理前面配置的兩個物理連線s1 和s2。最後還配置了一個型別為 status 的 worker,這是用來監控 JK 本身的模組。有了這三個 worker 還不夠,我們還需要告訴 JK,哪些 worker 是可用的,所以就有 worker.list = route1, status這行配置。
Apache的模組提供了DEFLATE
輸出過濾器,允許伺服器在將輸出內容傳送到客戶端以前進行壓縮,以節約頻寬。
LoadModule deflate_module modules/mod_deflate.so
<Location />
SetOutputFilter DEFLATE
</Location>
壓縮是由DEFLATE
過濾器實現的。下面的指令會對其所在容器中的文件啟用壓縮:
SetOutputFilter DEFLATE
一些流行的瀏覽器不能正確處理所有壓縮內容,因此你可能需要將gzip-only-text/html
標記設為"1
"來僅僅允許壓縮html檔案(見下面)。如果你設定了"1
"以外的任何值,都將被忽略。
如果你想將壓縮限制在幾種特定的MIME型別上,可以使用指令。下面的例子僅僅允許對html文件進行壓縮:
<Directory "/your-server-root/manual">
AddOutputFilterByType DEFLATE text/html</Directory>
對於那些不能正確處理所有壓縮內容的瀏覽器,可以使用指令針對特定的瀏覽器設定no-gzip
標記以取消壓縮。為了取得更好的效果,你可以將no-gzip
和gzip-only-text/html
配合使用。在這種情況下,下面的設定將會覆蓋上面的設定。看看從配置示例中摘錄的片斷:
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4/.0[678] no-gzip
BrowserMatch /bMSIE !no-gzip !gzip-only-text/html
第一條指令表示如果User-Agent
字串表示它是一個Navigator 4.x的瀏覽器,這種瀏覽器不能正確處理除text/html
之外的所有型別。而4.06, 4.07, 4.08版的Navigator完全不能處理任何壓縮內容,因此第二條指令對這些瀏覽器完全禁用壓縮。
第三個指令修正了上面兩條對瀏覽器的推測,因為微軟的IE也將它自己標識成"Mozilla/4"但是它實際上能夠處理所有的壓縮內容。因此又在User-Agent
頭中額外匹配了字串"MSIE"("/b
"表示"單詞邊界"),並且取消了前面的限制。
注意
force-gzip
環境變數將會忽略瀏覽器的"accept-encoding",始終傳送經過壓縮的內容。
相關推薦
用jk整合Apache和tomcat實現負載均衡
最近剛看完一些關於如何用jk整合Apache和tomcat的資料,為了防止自己忘記,把它們在這裡都寫下來。部分內容摘抄於網路。 首先下載tomcat, apache和jk。 1. 下載, 安裝於“C:/Program Files/Apache Software Foundat
Apache和Tomcat 配置負載均衡(mod-proxy方式)-無session共享、無粘性session
轉:https://blog.csdn.net/wangjunjun2008/article/details/38268483 mod-proxy方式實現負載均衡是利用了Apache 2.x版本自帶的mod_proxy模組使用代理技術來連線Tomcat; http_proxy模式基於HTTP協議
Apache和Tomcat 配置負載均衡(mod-proxy方式)
mod-proxy方式實現負載均衡是利用了Apache 2.x版本自帶的mod_proxy模組使用代理技術來連線Tomcat; http_proxy模式基於HTTP協議,要求Tomcat提供HTTP服務,也就是必須啟用Tomcat的HTTP Connector; ajp_p
結合apache和tomcat實現多域名、多埠繫結
1、本機測試的話,要先配置主機頭系統:windowsxp C:\WINDOWS\system32\drivers\etc\hosts檔案 新增 127.0.0.1 www.abc.com 127.0.0.1 www.efg.c
Ubuntu整合Apache和Tomcat
前兩篇已經寫了Apache和Tomcat的安裝,本文主要探討Apache和Tomcat的整合。 〇、為什麼要整合 Tomcat也有webserver的功能,但一般只用作除錯,其強項還是在於處理動態網頁,靜態網頁不如Apache這種專業的webserver。 一、整合是什
apache和tomcat有什麼不同,為什麼要整合apache 和tomcat
轉自:[url]http://zhidao.baidu.com/question/94817329.html[/url]1. Apache是web伺服器,Tomcat是應用(java)伺服器,它只是一個servlet容器,是Apache的擴充套件。2. Apache和Tomc
整合整合Apache和Tomcat
Apache是web伺服器,Tomcat是應用(java)伺服器,它只是一個servlet容器,是Apache的擴充套件。 Apache和Tomcat都可以做為獨立的web伺服器來執行,但是Apache不能解釋java程式(jsp,serverlet)。 Apache和T
nginx+tomcat實現負載均衡以及session共享(linux centos7環境)
processes 解壓 smo eve cti 下載 gen cli -c 一、nginx的安裝 1.準備三份tomcat tomcat1 設置端口 8080 tomcat2 設置端口 8081 tomcat3 設置端口 8082 2. 下載nginx 3. 解壓到/ho
Nginx 服務器 之Nginx與tomcat實現負載均衡
nobody 服務器 listen server events 本文講解我們如何使用Nginx做反向帶服務器,實現nginx與tomcat服務器集群做負載均衡。一、nginx與tomcat實現負載均衡1、在/usr/local/ngnix/conf 創建文件 nginx-tomcat.
nginx 配置tomcat 實現負載均衡
events key 配置tomcat type files 準備 mys all quest 環境:準備三臺機械: 兩臺安裝tomcat 一臺安裝nginx;安裝步驟省略;tomcat一臺的IP:http://192.168.195.132:8080另一臺tomcat一臺
Nginx+Tomcat實現負載均衡及動靜分離
動靜 webapps ado art index.jsp mod connector mct 圖片 內部模擬兩臺服務器taoba1和taobao2 當訪問 www.taobao.com 時候會依據負載均衡策略來進行訪問 拷貝兩份tomcat文件,分別命名為taobao
專案部署、收集靜態檔案、nginx和uwsgi實現負載均衡。
專案部署 1)靜態檔案伺服器 開發階段: live-server 部署階段: nginx 域名: www.meiduo.site Django專案靜態檔案收集: # 設定setting配置檔案 STATIC_ROOT = '指定收集靜態檔案的儲存目錄'
springboot專案Nginx+Tomcat實現負載均衡結合Redis實現session共享問題
對於分散式使用Nginx+Tomcat實現負載均衡,當同一個使用者登入後,再次訪問可能分發到不同的服務,這樣我們就取不到之前登入session,出現未登入現象。所以我們必須解決共享session問題。 方式一:儲存在資料庫中 , 使用者登入時,把session資訊儲存在資
Nginx+Redis+Tomcat實現負載均衡專案session共享
<div class="article-copyright"> 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 h
Nginx +tomcat 實現負載均衡叢集
一、 工具 nginx-1.8.0 apache-tomcat-6.0.33 二、 目標 實現高效能負載均衡的Tomcat叢集: 三、 步驟 1、首先下載Nginx,要下載穩定版: 2、然後解壓兩個Tomcat,分別命名為apache-tomcat-6.0.33-1和
Ribbon、Feign和Eureka實現負載均衡
現有兩個SpringBoot應用,應用 A和應用B:應用A通過Feign遠端呼叫應用B,但如果應用B單個應用無法支撐應用A的大量請求,則可如下實現應用B的多例項。1.應用B多個例項都註冊到同一個Eureka,且所有例項的配置檔案中的:spring.application.na
nginx+tomcat實現負載均衡以及雙機熱備(tomcat宕機導致客戶端無法訪問)
首先,在這裡分享一個java技術交流群,純粹技術交流,拒絕廣告,歡迎各位進群交流。QQ群:817997079 大家都知道nginx可以代理多臺伺服器(以tomcat為例),那麼當被nginx代理的tomcat伺服器宕機時,我們怎麼保證客戶端能繼續訪問系統?接下來就說一下ng
Nginx+Tomcat實現負載均衡小demo
一、搭建Tomcat服務 下載安裝JDK和Tomcat就不說了,太簡單了。由於是win7單機環境測試,啟動多個Tomcat服務可以通過在server.xml配置檔案中修改埠實現。準備兩個Tomcat,比如使用兩個不同版本的Tomcat(相同版本可以更改下檔名
Linux中Apache+Tomcat+JK實現負載均衡和群集的完整過程
個人原創,一個字一個字地碼的,尊重版權,轉載請註明出處! 最近在開發的專案需要承受很高的併發量。綜合各種情況,決定使用Apache+Tomcat+JK的方式實現負載均衡,並且作為一個統一的服務還要實現群集(同步Session)。 在網上找了很多資料,都是零零散散的,沒有一個完整的過程。通過幾天的努力,完
配置了APACHE和TOMCAT整合後,firefox中的window.parent.document不能用(http_proxy的埠問題)
我在linux上使用http_proxy的方式配置了apache跟tomcat的負載均衡,後來發現在firefox中window.parent.document.getElementById("menu").src="content/contentNav.jsp";沒