自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在Ubuntu上配置Tomcat集群?

譯文
系統(tǒng) Linux
在本文中將向大家介紹如何配置具有負(fù)載均衡和會(huì)話復(fù)制機(jī)制的Tomcat集群。在我們深入探討配置方面的細(xì)節(jié)之前,有必要闡明本教程中將出現(xiàn)的幾個(gè)術(shù)語(yǔ)。

【51CTO精選譯文】Apache Tomcat可以說(shuō)是當(dāng)下最受歡迎的開(kāi)源Java Web服務(wù)器。如果貴公司的網(wǎng)站預(yù)計(jì)會(huì)隨著業(yè)務(wù)不斷發(fā)展而迎來(lái)更大的訪問(wèn)量,Tomcat的單個(gè)實(shí)例恐怕無(wú)法滿足訪問(wèn)量日增的需要。這種情況下,你可能會(huì)考慮在“集群”環(huán)境下運(yùn)行Tomcat;在這種環(huán)境下,Web服務(wù)器的工作負(fù)載分配到多個(gè)Tomcat實(shí)例。

我在本文中將向大家介紹如何配置具有負(fù)載均衡和會(huì)話復(fù)制機(jī)制的Tomcat集群。在我們深入探討配置方面的細(xì)節(jié)之前,有必要闡明本教程中將出現(xiàn)的幾個(gè)術(shù)語(yǔ)。

術(shù)語(yǔ)介紹

負(fù)載均衡:前端服務(wù)器(常常名為“負(fù)載均衡器”、“代理均衡器”或“反向代理”)收到HTTP請(qǐng)求后,前端服務(wù)器將請(qǐng)求分發(fā)到后端的不止一個(gè)“worker”Web服務(wù)器,由它們實(shí)際處理請(qǐng)求。負(fù)載均衡可以消除后端的單一故障點(diǎn),并且可以為任何Web服務(wù)實(shí)現(xiàn)高可用性、高擴(kuò)展性以及更合理的資源優(yōu)化。

會(huì)話復(fù)制:會(huì)話復(fù)制是一種機(jī)制,將客戶端會(huì)話的整個(gè)狀態(tài)原原本本復(fù)制到集群中的兩個(gè)或多個(gè)服務(wù)器實(shí)例,以實(shí)現(xiàn)容錯(cuò)和故障切換功能。通常情況下,分發(fā)的狀態(tài)服務(wù)能夠跨集群中的多個(gè)不同服務(wù)器實(shí)例,復(fù)制客戶端會(huì)話的狀態(tài)。

集群:集群由兩個(gè)或多個(gè)Web服務(wù)器實(shí)例組成,這些服務(wù)器實(shí)例步調(diào)一致地工作,透明地處理客戶端請(qǐng)求??蛻舳藢⒁唤M服務(wù)器實(shí)例認(rèn)為是單一實(shí)體服務(wù)。集群的目的是,為客戶端提供高可用性服務(wù),同時(shí)盡量高效地利用所有的可用計(jì)算資源。

具體要求

下面是搭建Tomcat集群的具體要求。我在本教程中假設(shè)有三臺(tái)Ubuntu服務(wù)器。

  • 服務(wù)器#1:帶mod_jk的Apache HTTP Web服務(wù)器(充當(dāng)代理均衡器)
  • 服務(wù)器#2和服務(wù)器#3:Java運(yùn)行時(shí)6.x或更高版本,以及Apache Tomcat 7.x(充當(dāng)worker Web服務(wù)器)。

Apache Web服務(wù)器充當(dāng)代理均衡器。Apache Web服務(wù)器是客戶端唯一看得見(jiàn)的那臺(tái)服務(wù)器,所有的Tomcat實(shí)例都被隱藏起來(lái),客戶端看不見(jiàn)它們。mod_jk插件被激活后,Apache Web服務(wù)器將任何入站的HTTP請(qǐng)求轉(zhuǎn)發(fā)到集群中的Tomcat worker實(shí)例。

在本教程的其余部分,我將描述配置Tomcat集群的逐步過(guò)程。

第一步:安裝帶mod_jk插件的Apache Web服務(wù)器

Tomcat Connectors讓你可以將Tomcat連接到其他開(kāi)源Web服務(wù)器。對(duì)Apache Web服務(wù)器而言,Tomcat Connectors以一種名為mod_jk的Apache模塊而出現(xiàn)。裝有mod_jk的Apache Web服務(wù)器可以將Ubuntu服務(wù)器變成代理均衡器。想安裝Apache Web服務(wù)器和mod_jk模塊,只要使用下面這個(gè)命令。

$ sudo apt-get install apache2 libapache2-mod-jk

第二步:安裝JDK和Apache Tomcat

下一步就是將Apache Tomcat安裝到另外兩臺(tái)Ubuntu服務(wù)器,這兩臺(tái)服務(wù)器將作為worker,實(shí)際處理HTTP請(qǐng)求。由于Apache Tomcat需要Java開(kāi)發(fā)工具包(JDK),你同樣需要安裝它。請(qǐng)參閱這篇指南:http://ask.xmodulo.com/install-apache-tomcat-ubuntu-debian.html,即可了解如何將JDK和Apache Tomcat安裝到Ubuntu服務(wù)器上。

第三步:在代理均衡器上配置Apache mod_jk

在Ubuntu上,mod_jk配置文件位于/etc/apache2/mods-enabled/jk.conf。用下列內(nèi)容更新該文件:

  1. <IfModule jk_module>   
  2.    
  3.     # We need a workers file exactly once   
  4.     # and in the global server   
  5.     JkWorkersFile /etc/libapache2-mod-jk/workers.properties   
  6.    
  7.     # JK error log   
  8.     # You can (and should) use rotatelogs here   
  9.     JkLogFile /var/log/apache2/mod_jk.log   
  10.    
  11.     # JK log level (trace,debug,info,warn,error)   
  12.     JkLogLevel info   
  13.    
  14.     JkShmFile /var/log/apache2/jk-runtime-status  
  15.    
  16.     JkWatchdogInterval 60   
  17.    
  18.     JkMount /*  loadbalancer  
  19.     JkMount /jk-status jkstatus  
  20.    
  21.     # Configure access to jk-status and jk-manager   
  22.     # If you want to make this available in a virtual host,   
  23.     # either move this block into the virtual host   
  24.     # or copy it logically there by including "JkMountCopy On"   
  25.     # in the virtual host.   
  26.     # Add an appropriate authentication method here!   
  27.     <Location /jk-status>   
  28.             # Inside Location we can omit the URL in JkMount   
  29.             JkMount jk-status   
  30.             Order deny,allow   
  31.             Deny from all   
  32.             Allow from 127.0.0.1   
  33.     </Location>   
  34.     <Location /jk-manager>   
  35.             # Inside Location we can omit the URL in JkMount   
  36.             JkMount jk-manager   
  37.             Order deny,allow   
  38.             Deny from all   
  39.             Allow from 127.0.0.1   
  40.     </Location>   
  41. </IfModule>  

為了讓上述配置適用于多個(gè)Tomcat實(shí)例,我們不得不在/etc/libapache2-mod-jk/workers.properties中配置每一個(gè)Tomcat worker實(shí)例。我們假設(shè),兩個(gè)worker Ubuntu機(jī)器的IP地址分別是192.168.1.100和192.168.1.200。

使用下列內(nèi)容,創(chuàng)建或編輯etc/libapache2-mod-jk/workers.properties:

  1. worker.list=loadbalancer,jkstatus # 為192.168.1.100配置Tomcat實(shí)例  
  2.     worker.tomcat1.type=ajp13   
  3.     worker.tomcat1.host=192.168.1.100   
  4.     worker.tomcat1.port=8081 
  5.     # worker“tomcat1”使用多達(dá)20個(gè)套接字,套接字在連接池中駐留的時(shí)間只有短短10分鐘。   
  6.     worker.tomcat1.connection_pool_size=200 
  7.     worker.tomcat1.connection_pool_timeout=600   
  8.     # worker“tomcat1”將要求操作系統(tǒng)發(fā)送關(guān)于連接的KEEP-ALIVE信號(hào)。  
  9.     worker.tomcat1.socket_keepalive=1   
  10.     # 為192.168.1.200配置Tomcat實(shí)例  
  11.     worker.tomcat2.type=ajp13   
  12.     worker.tomcat2.host=192.168.1.200   
  13.     worker.tomcat2.port=8082 
  14.     # worker“tomcat2”使用多達(dá)20個(gè)套接字,套接字在連接池中駐留的時(shí)間只有短短10分鐘。   
  15.     worker.tomcat2.connection_pool_size=200 
  16.     worker.tomcat2.connection_pool_timeout=600   
  17.     # worker“tomcat2”將要求操作系統(tǒng)發(fā)送關(guān)于連接的KEEP-ALIVE信號(hào)。   
  18.     worker.tomcat2.socket_keepalive=1   
  19.     worker.jkstatus.type=status  
  20.     worker.loadbalancer.type=lb   
  21.     worker.loadbalancer.balance_workers=tomcat1,tomcat2 

第四步:配置Tomcat實(shí)例

使用下列內(nèi)容,為地址是192.168.1.100的Tomcat實(shí)例編輯/opt/apache-tomcat-7.0.30/conf/server.xml:

 

  1. <Engine name="Catalina" defaultHost="192.168.1.100” jvmRoute="tomcat1"> 
  2.     <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> 
  3.     <Manager className="org.apache.catalina.ha.session.DeltaManager" 
  4.         expireSessionsOnShutdown="false" 
  5.         notifyListenersOnReplication="true"/> 
  6.     <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
  7.         <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
  8.             <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> 
  9.         </Sender> 
  10.         <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto"       port="4000" autoBind="100" selectorTimeout="5000" maxThreads="50"/> 
  11.     <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
  12.     <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
  13.     </Channel> 
  14.     <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> 
  15.     <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> 
  16.     <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 
  17.     <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
  18. </Cluster> 
  19. 使用下列內(nèi)容,為地址是192.168.1.200的Tomcat實(shí)例編輯/opt/apache-tomcat-7.0.30/conf/server.xml:  
  20.     <Engine name="Catalina" defaultHost="192.168.1.200” jvmRoute="tomcat2"> 
  21.     <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> 
  22.     <Manager className="org.apache.catalina.ha.session.DeltaManager" 
  23.         expireSessionsOnShutdown="false" 
  24.         notifyListenersOnReplication="true"/> 
  25.     <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
  26.         <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
  27.             <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> 
  28.         </Sender> 
  29.       
  30.         <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto"       port="4000" autoBind="100" selectorTimeout="5000" maxThreads="30"/> 
  31.     <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
  32.     <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
  33.     </Channel> 
  34.     <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> 
  35.     <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> 
  36.     <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 
  37.     <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
  38. </Cluster> 

 

第五步:測(cè)試Tomcat集群

Tomcat Connectors有一種特殊類(lèi)型的worker,那就是所謂的狀態(tài)worker。狀態(tài)worker并不將請(qǐng)求轉(zhuǎn)發(fā)到Tomcat實(shí)例。相反,它允許在運(yùn)行時(shí)獲取狀態(tài)和配置信息,甚至允許動(dòng)態(tài)更改許多配置選項(xiàng)。你可以通過(guò)訪問(wèn)該狀態(tài)worker來(lái)監(jiān)測(cè)Tomcat集群:只要使用Web瀏覽器,進(jìn)入到http://<proxy-balancer-ip-address>/jk-status,就很容易進(jìn)行監(jiān)測(cè)了。

 

 

英文:http://xmodulo.com/2014/06/configure-tomcat-cluster-ubuntu.html

責(zé)任編輯:林師授 來(lái)源: 51CTO
相關(guān)推薦

2009-07-17 16:17:04

在tomcat上配置j

2019-10-21 13:28:38

UbuntuPostgreSQL命令

2019-08-02 15:30:42

UbuntuMongoDB命令

2016-01-06 14:00:20

Ubuntu 14Ubuntu 15Apache Solr

2020-03-18 14:40:14

Ubuntu 18.0RedisLinux

2015-08-12 13:44:29

UbuntuChef

2023-05-27 16:27:25

2015-10-16 10:07:22

Justniffer安裝Ubuntu

2019-08-30 11:20:28

UbuntuVirtualBoxLinux

2018-10-15 15:23:50

UbuntupipPython

2023-08-08 12:38:52

2024-01-04 11:50:00

UbuntuDocker

2019-07-12 16:28:32

MacKubernetes

2015-07-08 09:21:29

SNMP網(wǎng)絡(luò)管理簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議

2017-08-02 15:15:55

UbuntuNoSQLOrientDB

2016-11-03 20:06:53

UbuntuGrafanaDocker

2010-07-13 09:46:09

TomcatUbuntu 10.0

2016-07-26 13:58:52

Ubuntulinux網(wǎng)橋

2021-09-11 15:41:55

UbuntuDropbox云服務(wù)

2017-03-29 16:18:11

LinuxUbuntuRedmine
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)