溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

apache+tomcat實(shí)現(xiàn)負(fù)載均衡的3種方式介紹

發(fā)布時(shí)間:2020-04-21 11:18:00 來(lái)源:億速云 閱讀:508 作者:三月 欄目:軟件技術(shù)

下文給大家?guī)?lái)apache+tomcat實(shí)現(xiàn)負(fù)載均衡的3種方式介紹,希望能夠給大家在實(shí)際運(yùn)用中帶來(lái)一定的幫助,負(fù)載均衡涉及的東西比較多,理論也不多,網(wǎng)上有很多書籍,今天我們就用億速云在行業(yè)內(nèi)累計(jì)的經(jīng)驗(yàn)來(lái)做一個(gè)解答。

結(jié)尾

1.首先安裝apache,編譯完成后,通過(guò)IP:端口就行訪問(wèn),如果返回“it workers”證明Apache啟動(dòng)成功(注意apache的工程路徑要正確)

2.下載JK,下載地址為http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/,果http云服務(wù)器是Apache2.0.X版本,則必須選擇mod_jk-1.2.31-httpd-2.0.52.so,頁(yè)面下方有英文的說(shuō)明,大家可以看下,我這里宣傳的mod_jk-1.2.23-apache-2.2.x-linux-x86_64.so,跟自己操作系統(tǒng)版本吻合,然后重命名為mod_jk.so,并且賦值777權(quán)限

apache+tomcat實(shí)現(xiàn)負(fù)載均衡的3種方式介紹

3.將mod_jk.so拷貝到apache/modules

4.在httpd.conf里增加如下內(nèi)容

   include "/usr/local/apache/conf/mod_jk.conf"

5.在conf路徑下新建mod_jk.conf文件,并添加如下內(nèi)容  

#加載mod_jk Module  

LoadModule jk_module modules/mod_jk.so

#指定 workers.properties文件路徑  

JkWorkersFile conf/workers.properties

#指定哪些請(qǐng)求交給tomcat處理,"loadbalancer"為在workers.propertise里指定的負(fù)載分配控制器名

JkLogFile logs/mod_jk.log

#JkLogLevel debug

JkMount  /*.do loadbalancer

JkMount  /*.jsp loadbalancer

6.在conf下新建workers.properties文件,并添加如下內(nèi)容

worker.list=loadbalancer  

#此處與mod_jk.conf中保持一致

worker.worker2.port=8009  

#tomcat2中 ajp13 端口號(hào),對(duì)應(yīng)tomcat配置文件server.xml中Connector port="8009",默認(rèn)8009

worker.worker2.host=127.0.0.1

#worker2的地址,本機(jī)loaclhost或者127.0.0.1,遠(yuǎn)程直接寫IP

worker.worker2.type=ajp13

#與worker2中的server.xml的protocol保持一致

worker.worker2.lbfactor=1

#負(fù)載的權(quán)重值,越高表示負(fù)載越大

worker.worker3.port=9009

worker.worker3.host=127.0.0.1

worker.worker3.type=ajp13

worker.worker3.lbfactor=1

worker.loadbalancer.type=lb

worker.loadbalancer.balance_workers=worker2,worker3

#指定負(fù)載的worker列表,用逗號(hào)分隔

worker.loadbalancer..sticky_session=false

#配置session會(huì)話是否為粘性    

#這樣負(fù)載均衡器lb就會(huì)盡量保持一個(gè)session,也就是使用戶在一次會(huì)話中跟同一個(gè)Tomcat進(jìn)行交互

worker.loadbalancer..sticky_session_force=false

worker.loadbalancer.sticky_session=1

#是否啟用session共享

7.下載tomcat并解壓,復(fù)制2份tomcat,保持成為worker2,worker3

 修改2個(gè)tomcat的server.xml,保證2個(gè)tomcat的端口號(hào)不一致,具體配置如下,需要修改黑體加粗標(biāo)示

worker2如下:

[html]view plaincopy
  1. <?xmlversion='1.0'encoding='utf-8'?>

  2. <Serverport="8005"shutdown="SHUTDOWN">

  3. <ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on"/>

  4. <ListenerclassName="org.apache.catalina.core.JasperListener"/>

  5. <ListenerclassName="org.apache.catalina.mbeans.ServerLifecycleListener"/>

  6. <ListenerclassName="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

  7. <GlobalNamingResources>

  8. <Resourcename="UserDatabase"auth="Container"

  9. type="org.apache.catalina.UserDatabase"

  10. description="User database that can be updated and saved"

  11. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

  12. pathname="conf/tomcat-users.xml"/>

  13. </GlobalNamingResources>

  14. <Servicename="Catalina">

  15. <Connectorport="8080"protocol="HTTP/1.1"

  16. connectionTimeout="20000"

  17. redirectPort="8443"/>

  18. <Connectorport="8009"protocol="AJP/1.3"redirectPort="8443"/>

  19. <!--<Engine name="Catalina" defaultHost="localhost">-->

  20. <Enginename="Catalina"defaultHost="localhost"jvmRoute="worker2">

  21. <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

  22. resourceName="UserDatabase"/>

  23. <Hostname="localhost"appBase="webapps"

  24. unpackWARs="true"autoDeploy="true"

  25. xmlValidation="false"xmlNamespaceAware="false">

  26. </Host>

  27. </Engine>

  28. </Service>

  29. </Server>


worker3如下:

[html]view plaincopy
  1. <?xmlversion='1.0'encoding='utf-8'?>

  2. <Serverport="8006"shutdown="SHUTDOWN">

  3. <ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on"/>

  4. <ListenerclassName="org.apache.catalina.core.JasperListener"/>

  5. <ListenerclassName="org.apache.catalina.mbeans.ServerLifecycleListener"/>

  6. <ListenerclassName="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

  7. <GlobalNamingResources>

  8. <Resourcename="UserDatabase"auth="Container"

  9. type="org.apache.catalina.UserDatabase"

  10. description="User database that can be updated and saved"

  11. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

  12. pathname="conf/tomcat-users.xml"/>

  13. </GlobalNamingResources>

  14. <Servicename="Catalina">

  15. <Connectorport="8081"protocol="HTTP/1.1"

  16. connectionTimeout="20000"

  17. redirectPort="8443"/>

  18. <Connectorport="9009"protocol="AJP/1.3"redirectPort="8443"/>

  19. <!--<Engine name="Catalina" defaultHost="localhost">-->

  20. <Enginename="Catalina"defaultHost="localhost"jvmRoute="worker3">

  21. <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

  22. resourceName="UserDatabase"/>

  23. <Hostname="localhost"appBase="webapps"

  24. unpackWARs="true"autoDeploy="true"

  25. xmlValidation="false"xmlNamespaceAware="false">

  26. </Host>

  27. </Engine>

  28. </Service>

  29. </Server>


8.分別在2個(gè)tomcat下建立項(xiàng)目test1,并新增andashu.jsp,內(nèi)容如下:

<%


System.out.println("===========");


%>


9.分別訪問(wèn)2個(gè)tomcat,http://IP:8081/test1/andashu.jsp 以及http://10.14.133.204:8080/test1/andashu.jsp,如果2個(gè)tomcat的日志catalina.out里 都打印出===========,證明2個(gè)tomcat訪問(wèn)都o(jì)k


10.分別啟動(dòng)apache worker2,worker3,用不同的瀏覽器或者不同的機(jī)器分別訪問(wèn)http://IP/test1/andashu.jsp,如果如果2個(gè)tomcat的日志catalina.out里 都打印出===========,證明負(fù)載均衡搭建成功(這里要用不同瀏覽器或者不同機(jī)器訪問(wèn))


11.試節(jié)點(diǎn)故障,隨便停掉其中的一臺(tái)tomcat,繼續(xù)訪問(wèn)http://IP/test1/andashu.jsp,能正常訪問(wèn)

其他2種方式也可以實(shí)現(xiàn)負(fù)載均衡

2、ajp_proxy
去掉httpd.conf文件中下面內(nèi)容的注釋(刪掉#號(hào)),開啟下邊的配置

Include conf/extra/httpd-vhosts.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

注意:
除了mod_proxy.so,mod_proxy_balancer.so,mod_proxy_connect.so
如果是采用ajp_proxy,需要加載mod_proxy_ajp.so這個(gè)模塊;
如果是采用http_proxy,需要加載mod_proxy_http.so這個(gè)模塊;

httpd.conf,刪除剛才jk方式的配置內(nèi)容,增加下邊的配置

ProxyRequests Off
<proxy balancer://loadbalancer>
BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=worker3
BalancerMember ajp://127.0.0.1:8009loadfactor=1 route=worker2
</proxy>

conf/extra/httpd-vhosts.conf增加配置

<VirtualHost *:8081>
        ServerAdmin xxxx@xxx.com
        ServerName localhost
        ServerAlias localhost
        ProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=On
        ProxyPa***everse / balancer://loadbalancer/
        ErrorLog "logs/loadbalancer-error.log"
        CustomLog "logs/loadbalancer-access.log" common
</VirtualHost>

配置完成任務(wù),訪問(wèn)http://IP:8081/test1/andashu.jsp,檢查是否能正常訪問(wèn)。

3、http_proxy
http_proxy的配置與ajp_proxy類似,修改方法2的httpd.conf配置如下,其它不變

ProxyRequests Off
<proxy balancer://loadbalancer>
BalancerMember http://127.0.0.1:9009 loadfactor=1 route=worker3
BalancerMember http://127.0.0.1:8009 loadfactor=1 route=worker2
</proxy>

配置完成任務(wù),訪問(wèn)http://IP:8081/test/test.jsp,檢查是否能正常訪問(wèn)

看了以上關(guān)于apache+tomcat實(shí)現(xiàn)負(fù)載均衡的3種方式介紹,如果大家還有什么地方需要了解的可以在億速云行業(yè)資訊里查找自己感興趣的或者找我們的專業(yè)技術(shù)工程師解答的,億速云技術(shù)工程師在行業(yè)內(nèi)擁有十幾年的經(jīng)驗(yàn)了。

 

 



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI