翻譯:瘋狂的技術宅
原文標題:Load balancing tomcat with Apache
原文連接:http://programmergate.com/loa...
本文首發微信公衆號:充實的腦洞apache
有時候咱們須要把本身的應用部署在多個Tomcat實例上,這種場景一般是在使用大量內存進行存儲,而且擁有大量的活躍用戶時。使用多個實例的主要優勢是能夠把請求和負載分擔到多個節點上,以提供高可用性並加快服務請求。segmentfault
負載均衡是將客戶端請求分發到多個可用節點的過程,一般是經過接收請求的Web服務器將應用程序暴露給客戶端,並根據每一個節點的可用性和壓力將它們分發到配置好的應用程序服務器。 在本文中,咱們將介紹如何經過Apache Web服務器配置簡單的Tomcat負載均衡器。windows
本教程在2臺不一樣的Windows機器上安裝2個Tomcat實例。一般能夠在同一臺機器上配置多個Tomcat實例,可是建議將其分別安裝在不一樣的機器上,以便將負載分配到2個物理內存而不是1個。瀏覽器
從這裏下載最新穩定的Apache版本,你能夠在其中一臺Tomcat機器上設置Apache,或者爲其單獨分配一臺機器。tomcat
將下載的文件解壓縮到D:盤,並設置conf文件夾下httpd.conf文件中的SRVROOT變量:服務器
Define SRVROOT "D:\Apache24"
要安裝Apache,請以管理員身份運行cmd,把路徑切換到爲D:Apache24bin,執行如下命令:微信
httpd -k install
如今,Apache Web服務器已成功安裝在你的計算機上。負載均衡
要啓動Apache,請以管理員身份在D:Apache24bin路徑下運行如下命令:jvm
sc start Apache2.4
默認狀況下,Apache將在端口80上運行,若是要檢查它是否意境成功的啓動,能夠在你的瀏覽器上訪問localhost,將看到如下頁面:this
從這裏下載mod_jk模塊,這個插件負責Apache和tomcat之間的通訊。
解壓縮mod_jk.zip文件並將 mod_jk.so 複製到 D:Apache24modules 中。
編輯D:\Apahe24\conf\http.conf 文件
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel info JkMount /* loadbalancer JkMount / loadbalancer
workers.properties
在conf目錄下建立workers.properties文件,此文件定義了要負載均衡的多個Tomcat實例以及負載均衡器。如下是worker.properties的內容:
# 定義負載均衡器,這裏的名稱是loadbalancer worker.list=loadbalancer # Define the properties of first tomcat worker named tomcat1 worker.tomcat1.port=8008 worker.tomcat1.host=<ip> worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor=1 # 定義名爲tomcat1的第一個tomcat worker的屬性 worker.tomcat2.port=8009 worker.tomcat2.host=<ip> worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=1 # 定義負載均衡器及其管理的worker的屬性 workers which manage. worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=tomcat1, tomcat2
worker.<workerName>.type: worker的類型,在這個例子中咱們使用2種類型的worker
修改每一個Tomcat實例的啓動配置,以匹配Apache中相應的工做屬性。
將tomcat1的TOMCAT_HOME/conf/server.xml文件編輯爲下面的內容:
<!-- Define the http port of tomcat --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding = "utf-8"/> <!-- Define the ajp port of tomcat, this port should match the one in workers.properties --> <Connector port="8008" protocol="AJP/1.3" redirectPort="8443" URIEncoding = "utf-8"/> <!-- Define the jvm routing of tomcat, this routes to tomcat1 --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
將tomcat2的TOMCAT_HOME/conf/server.xml文件編輯爲下面的內容:
<!-- Define the http port of tomcat --> <Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8143" URIEncoding = "utf-8"/> <!-- Define the ajp port of tomcat, this port should match the one in workers.properties --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8143" URIEncoding = "utf-8"/> <!-- Define the jvm routing of tomcat, this routes to tomcat2 --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
重啓tomcat節點和Apache服務器後,會成功創建負載均衡,Apache能夠把請求轉發到在Tomcat1和Tomcat2上
PS: 該應用程序經過Apache主機名和端口訪問。
關注微信公衆號:充實的腦洞, 一個技術宅的保留地 | |
---|---|
![]() |