Apache整合tomcat實(shí)現(xiàn)負(fù)載均衡

兩者整合其中之一的方法是使用tomcat的插件mod_jk來(lái)實(shí)現(xiàn)
但是Apache現(xiàn)在自帶的功能模塊也能實(shí)現(xiàn)戈次,這就是本文所要講述的內(nèi)容。

一. 說(shuō)明

Apache能處理大量網(wǎng)絡(luò)客戶請(qǐng)求、靜態(tài)資源,但是不能處理動(dòng)態(tài)的資源,如Servlet英融。這就需要安裝tomcat來(lái)實(shí)現(xiàn)。通過(guò)兩者的整合呀打,當(dāng)用戶請(qǐng)求時(shí)矢赁,Apache先判斷是否是靜態(tài)資源,是則直接返回靜態(tài)資源給客戶端贬丛;否則調(diào)用tomcat服務(wù)進(jìn)行解析撩银,tomcat將解析的結(jié)果返回給Apache,再經(jīng)由Apache返回到客戶端豺憔。

二. 開啟Apache的反向代理

本文Apache安裝路徑: /usr/local/apache

  1. 編輯apache/conf/httpd.conf文件
    找到下面這寫指令额获,將前面的“#”去掉
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
    LoadModule vhost_alias_module modules/mod_vhost_alias.so
    這幾個(gè)都是Apache需要啟用的模塊,后面可以根據(jù)錯(cuò)誤日志來(lái)判斷是否還要啟用其它的模塊.
    找到Virtual hosts這一行恭应,將下一行前面的“#”去掉抄邀,導(dǎo)入http-vhosts.conf文件:
    Include conf/extra/httpd-vhosts.conf
    在文件末尾添加命令:
    #開啟反向代理
    ProxyRequests Off
    <proxy balancer://cluster>
    BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1
    BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2
    </proxy>
    配置tomcat的集群,要是tomcat在不同的機(jī)器上ajp端口可以不改
    loadfactor:負(fù)載因子
    route:對(duì)應(yīng)tomcat配置中的引擎路徑(jvmRoute)
  2. 編輯apache/conf/extra/httpd-vhosts.conf文件
    建議將原有的<VirtualHost>節(jié)點(diǎn)刪除昼榛,添加新的<VirtualHost>節(jié)點(diǎn):
    <VirtualHost *:9080>
    DocumentRoot "/var/www"
    <Directory "/var/www">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>
    ServerName localhost
    ServerAlias localhost
    ProxyPass /staticSource !
    ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
    ProxyPassReverse / balancer://cluster/
    ErrorLog "logs/cluster-error.log"
    CustomLog "logs/cluster-access.log" common
    </VirtualHost>
  • <VirtualHost *:9080>:與httpd.conf中的Listen 9080對(duì)應(yīng)境肾,客戶端訪問(wèn)服務(wù)端的9080端口會(huì)遵循<VirtualHost >節(jié)點(diǎn)中的規(guī)則
  • DocumentRoot "/var/www":設(shè)置服務(wù)器部署項(xiàng)目的根目錄
  • <Directory>:設(shè)置/var/www目錄下的訪問(wèn)權(quán)限
  • ProxyPass /staticSource !:設(shè)置訪問(wèn)此目錄下的資源不需要使用反向代理。"!"是否的意思胆屿,不需要反向代理的命令一定要放在使用反向代命令的前面
    栗子:客戶端訪問(wèn)以 ip:9080/staticSource/ 開頭的資源時(shí)Apache會(huì)直接返回靜態(tài)資源奥喻,不需要分配給tomcat去處理
  • ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On :以 ip:9080/開頭的資源會(huì)分配給tomcat去處理。"balancer://cluster/"對(duì)應(yīng)httpd.conf中<proxy balancer://cluster> 節(jié)點(diǎn)下的配置
  • ErrorLog CustomLog :配置日志路徑

三 配置tomcat

本文tomcat安裝路徑: /usr/local/tomcat-8.0.24
要是一臺(tái)機(jī)器上部署好幾個(gè)tomcat非迹,要保證端口之間不要沖突环鲤。以下配置的是第一個(gè)tomcat。

  1. 配置conf/server.xml
  • tomcat接收從Apache過(guò)來(lái)的ajp連接請(qǐng)求時(shí)使用的端口設(shè)置為8009
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  • 設(shè)置<Engine/>節(jié)點(diǎn)
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
    channelSendOptions="6">
    <Manager className="org.apache.catalina.ha.session.BackupManager"
    expireSessionsOnShutdown="false"
    notifyListenersOnReplication="true"
    mapSendOptions="6"/>
    <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership className="org.apache.catalina.tribes.membership.McastService"
    address="228.0.0.4"
    port="45564"
    frequency="500"
    dropTime="3000"/>
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
    address="localhost"
    port="5000"
    selectorTimeout="100"
    maxThreads="6"/>
    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
    <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
    </Sender>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
    </Channel>
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
    filter="..gif|..js|..jpeg|..jpg|..png|..htm|..html|..css|.*.txt"/>
    <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
    tempDir="/tmp/war-temp/"
    deployDir="/tmp/war-deploy/"
    watchDir="/tmp/war-listen/"
    watchEnabled="false"/>
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
    </Cluster>
    <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="UserDatabase"/>
    </Realm>
    <Host name="localhost" appBase="/var/www"
    unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="localhost_access_log" suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />
    </Host>
    </Engine>
    jvmRoute名稱設(shè)置為:jvm1
    Receiver下面的address注意下憎兽,設(shè)置成auto可能出問(wèn)題冷离,這里設(shè)置成固定的
    <<Host>節(jié)點(diǎn)中appBase設(shè)置成跟Apache一樣的目錄

參考tomcat的官方文檔:http://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html

四. 部署運(yùn)行

將項(xiàng)目部署到/var/www目錄下
先啟動(dòng)apache吵冒,訪問(wèn)ip:9080/staticSource/***,瀏覽器會(huì)加載出相應(yīng)的靜態(tài)頁(yè)面西剥。要是訪問(wèn)其它路徑則會(huì)報(bào)錯(cuò)痹栖。
這時(shí)候啟動(dòng)tomcat,再去訪問(wèn)其它路徑的頁(yè)面蔫耽〗嵋可以看到結(jié)果了留夜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匙铡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碍粥,更是在濱河造成了極大的恐慌鳖眼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嚼摩,死亡現(xiàn)場(chǎng)離奇詭異钦讳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)枕面,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門愿卒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人潮秘,你說(shuō)我怎么就攤上這事琼开。” “怎么了枕荞?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵柜候,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我躏精,道長(zhǎng)渣刷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任矗烛,我火速辦了婚禮辅柴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞭吃。我一直安慰自己碌嘀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布虱而。 她就那樣靜靜地躺著筏餐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪牡拇。 梳的紋絲不亂的頭發(fā)上魁瞪,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天穆律,我揣著相機(jī)與錄音,去河邊找鬼导俘。 笑死峦耘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旅薄。 我是一名探鬼主播辅髓,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼少梁!你這毒婦竟也來(lái)了洛口?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凯沪,失蹤者是張志新(化名)和其女友劉穎第焰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妨马,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挺举,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烘跺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湘纵。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖滤淳,靈堂內(nèi)的尸體忽然破棺而出梧喷,到底是詐尸還是另有隱情,我是刑警寧澤娇钱,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布伤柄,位于F島的核電站,受9級(jí)特大地震影響文搂,放射性物質(zhì)發(fā)生泄漏适刀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一煤蹭、第九天 我趴在偏房一處隱蔽的房頂上張望笔喉。 院中可真熱鬧,春花似錦硝皂、人聲如沸常挚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奄毡。三九已至,卻和暖如春贝或,著一層夾襖步出監(jiān)牢的瞬間吼过,已是汗流浹背锐秦。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盗忱,地道東北人酱床。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像趟佃,于是被迫代替她去往敵國(guó)和親扇谣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容