Apache與Tomcat負載均衡配置

Apache HTTP Server 與 Tomcat  負載均衡css

參考資料 https://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/html

 

環境以及所需軟件node

window7(64),JDK1.7(64) apache

apache-tomcat-7.0.35-windows-x64.zipwindows

Apache 服務器 (httpd-2.2.25-win32-x86-no_ssl.msi )tomcat

JK插件 (tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip)服務器

其中須要注意的是JK插件的版本與Apache服務器的版本須要一致 其中紅色標記session

 

1、配置apache的httpd.conf文件加載JK插件,該文件在軟件安裝目錄的conf目錄下面。負載均衡

配置以下:jvm

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

 

2、在httpd.conf文件的同級目錄新建倆個文件。workers.properties 和 uriworkermap.properties,這倆個文件的名字須要和上面配置裏的名字一致。

配置以下: 官方文檔 http://tomcat.apache.org/connectors-doc/reference/workers.html 

須要注意的是下面括號裏的爲說明 使用的時候須要拿掉。

workers.properties

 

worker.list=DLOG4J, status # localhost server 1 # ------------------------ worker.s1.port=8009 worker.s1.host=localhost worker.s1.type=ajp13 worker.s1.lbfactor = 1 # localhost server 2 # ------------------------ worker.s2.port=8009 (Tomcat的AJP/1.3端口 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/> 須要和tomcat的service.xml裏配置的端口一致) worker.s2.host=192.168.1.213 (Tomcat所在機器的IP地址) worker.s2.type=ajp13 (worker的類型) worker.s2.lbfactor = 1 (負載均衡的權重,值越大被訪問的次數越高) worker.DLOG4J.type=lb worker.retries=3 worker.DLOG4J.balanced_workers=s1,s2 worker.DLOG4J.sticky_session=True (粘結SESSION策略,即將同一個客戶端的請求都轉發到相同的Tomcat上面) worker.status.type=status (監控用的)

 

 

 

首先咱們配置了兩個類型爲 ajp13 的 worker 分別是 s1 和 s2,它們指向同在不一樣服務器上運行在兩個Tomcat 。接下來咱們配置了一個類型爲 lb(也就是負載均衡的意思)的 worker,它的名字是 DLOG4J,這是一個邏輯的 worker,它用來管理前面配置的兩個物理鏈接 s1 和 s2。最後還配置了一個類型爲 status 的 worker,這是用來監控 JK 自己的模塊。有了這三個 worker 還不夠,咱們還須要告訴 JK,哪些 worker 是可用的,因此就有 worker.list = DLOG4J, status 這行配置。

 

uriworkermap.properties

接下來即是 URI 的映射配置了,咱們須要指定哪些連接是由 Tomcat 處理的,哪些是由 Apache 直接處理的,看看下面這個文件你就能明白其中配置的意義。

/*=DLOG4J
/jkstatus=status

!/*.gif=DLOG4J
!/*.jpg=DLOG4J
!/*.png=DLOG4J
!/*.css=DLOG4J
!/*.js=DLOG4J
!/*.htm=DLOG4J
!/*.html=DLOG4J

全部的請求都由 DLOG4J 這個 worker 進行處理,可是有幾個例外,/jkstatus 請求由 status 這個 worker 處理(監控管理界面),另外這個配置中每一行數據前面的感嘆號是什麼意思呢?感嘆號表示接下來的 URI 不要由 JK 進行處理,也就是 Apache 直接處理全部的圖片、css 文件、js 文件以及靜態 html 文本文件,其餘的請求由JK處理,也就是咱們所說的動態資源,JK會把請求負載到配置好的tomcat,這樣就完成了讓Apache來處理靜態資源,讓JK負載tomcat來處理動態請求。

 

3、配置TOMCAT

<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">

分別配置每臺Tomcat服務器的service.xml  jvmRoute="s1" 這裏的"s1" 須要與 workers.properties 裏面定義的名字一致。

 

上面的配置就完成了Apache與tomcat的負載均衡的配置,下面在介紹一些額外的配置。

 

Tomcat熱備,顧名思義就是配置倆個tomcat,平時使用其中一個,另一個作備用,若是平時使用的這個tomcat掛了,那麼會自動切換到另一個。

 

 # The advanced router LB worker worker.list=router worker.router.type=lb worker.router.balance_workers=worker1,worker2 # Define the first member worker worker.worker1.type=ajp13 worker.worker1.host=myhost1 worker.worker1.port=8009 # Define preferred failover node for worker1 worker.worker1.redirect=worker2 (配置當worker1掛機的時候 會使用worker2) # Define the second member worker worker.worker2.type=ajp13 worker.worker2.host=myhost2 worker.worker2.port=8009 # Disable worker2 for all requests except failover (worker2只接受worker1失敗時轉發過來的請求) worker.worker2.activation=disabled

 

 

 

 

worker.worker1.redirect=worker2的意思是告訴負載均衡器(load balancer)當worker1出現問題時把請求轉發給worker2。

 

worker.worker2.activation=disabled的意思是在全部狀況下worker2不接受任何請求,除了worker1出現問題時轉發過來的請求。

 

 

以上的配置都是基於Session粘連的配置方式worker.DLOG4J.sticky_session=True 會將贊成客戶端的請求始終綁定到同一個Tomcat上。

接下來咱們來配置第二種方式Session共享(參考 http://blog.csdn.net/extreme421/article/details/16113417)

1、tomcat的server.xml

 

啓用<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>標籤,注:tomcat01和tomcat02都要啓用。

 

 

 

2、httpd.conf

 

修改Apache的httpd.conf配置 在最後面加上以下配置 注意要加到</IfModule>前面 ProxyRequests Off ProxyPass / balancer://abc/ stickysession=jsessionid nofailover=On <Proxy balancer://abc/> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=s1 BalancerMember ajp://192.168.1.213:8009 loadfactor=1 route=s2 </Proxy> 

 

 

 

 3、workers.properties

 

worker.DLOG4J.sticky_session=False 修改 workers.properties 關閉粘連
相關文章
相關標籤/搜索