<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 59, comments - 244, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    apache與tomcat負載集群的3種方法

    Posted on 2011-04-15 00:51 penngo 閱讀(25573) 評論(9)  編輯  收藏 所屬分類: Java
    花了兩天時間學習apache與tomcat的集成方法,現在把學習成果記錄下來。
    apache與tomcat負載集群集成方法有3種jk、jk_proxy、http_proxy
    本次集成使用的軟件版本:
    apache:httpd-2.2.17-win32-x86-no_ssl.msi
    tomcat:apache
    -tomcat-6.0.20.zip
    jdk:jdk
    -6u14-windows-i586.exe

    本次測試是1個apache集成兩個tomcat。
    安裝apache http server省略,訪問地址為http://127.0.0.1:8081
    安裝tomcat,解壓apache-tomcat-6.0.20.zip,測試時我是把兩個tomcat分開放在不同的虛擬機,其中一個是和apache同一臺虛擬機。
    兩個tomcat分別命名為worker2和worker3
    先說tomcat.worker2的配置:
    server.xml
    (1)配置http監聽端口,這里端口設為8079,該步驟非必要,只要不沖突就行了。
    <Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    (2)配置AJP監聽端口,這里端口設為8077,該步驟非必要,只要不沖突就行了。
    <Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />

    (3)配置服務器標識,這里標識名配置為:worker2,添加jvmRoute="worker2",該步驟必須。
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
    在Engine節點啟用集群配置,只需去掉Cluster節點前的注釋就行了,該步驟必須,配置了集群才能實現Session復制,如果只有一個集群,只按我下邊的配置就行了,如果多個集群,則不能按此配置,tomcat服務器內的幫助文檔/docs/cluster-howto.html,/docs/config/cluster.html有介紹,需要的可以參考下。
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
       
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 

    要實現session復制,還需要在context.xml添加屬性distributable="true",如下:
    <Context distributable="true">
    如果不想在context.xml中添加distributable="true",還有另一方法是在應用程序的web.xml中添加<distributeable/>,不過這方法我沒有測試。
    配置完成,訪問地址為:http://127.0.0.1:8079

    另一個tomcat.worker3的配置
    server.xml
    <Connector port="8078" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker3">
       
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
    context.xml配置tomcat.worker2一樣。
    配置完成,訪問地址為:http://127.0.0.1:8078
    注意:如果兩個tomcat是放在同一臺機內,server.xml可能還需要修改其它端口,請確認兩個tomcat能正常啟動。

    在tomcat.worker2和tomcat.worker3的webapps文件夾添加同樣的測試文件test"test.jsp
    <html>
    <head>
      
    <title>helloapp</title>
    </head>
    <body>
    <%
    System.out.println(
    "call test.jsp");

    %>   
    SessionID: 
    <%=session.getId() %>  
    </body>
    </html>
    訪問http://127.0.0.1:8078/test/test.jsp和http://127.0.0.1:8079/test/test.jsp,確保能成功訪問。

    現在開始apache和tomcat的不同方式集成
    1、jk方式集成
    下載mod_jk-1.2.31-httpd-2.2.3.so,請下載合適的mod_jk版本,改名為mod_jk.so放進modules文件夾內
    修改conf/httpd.conf配置
    LoadModule jk_module modules/mod_jk.so
    JkWorkersFile conf/workers.properties
    JkLogFile logs/mod_jk.log
    JkLogLevel debug
    JkMount  /*.do loadbalancer
    JkMount  /*.jsp loadbalancer
    增加conf/workers.properties文件,添加內容
    worker.list=loadbalancer
    worker.worker2.port=8077   #ajp的監聽端口
    worker.worker2.host=108.88.3.105
    worker.worker2.type=ajp13
    worker.worker2.lbfactor=1
    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 #這里在的worker2、worker3為需要與上邊tomcat設置的別名一致
    worker.loadbalancer.sticky_session=1
    配置完成任務,訪問http://127.0.0.1:8081/test/test.jsp,檢查是否能正常訪問。

    2、ajp_proxy
    去掉httpd.conf文件中下面內容的注釋(刪掉#號),開啟下邊的配置
    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這個模塊;
    如果是采用http_proxy,需要加載mod_proxy_http.so這個模塊;

    httpd.conf,刪除剛才jk方式的配置內容,增加下邊的配置
    ProxyRequests Off
    <proxy balancer://loadbalancer> 
    BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=worker3
    BalancerMember ajp://108.88.3.105:8077 loadfactor=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
             ProxyPassReverse / balancer://loadbalancer/
             ErrorLog "logs/loadbalancer-error.log"
             CustomLog "logs/loadbalancer-access.log" common
    </VirtualHost>
    配置完成任務,訪問http://127.0.0.1:8081/test/test.jsp,檢查是否能正常訪問。

    3、http_proxy
    http_proxy的配置與ajp_proxy類似,修改方法2的httpd.conf配置如下,其它不變
    ProxyRequests Off
    <proxy balancer://loadbalancer> 
    BalancerMember http://127.0.0.1:8078 loadfactor=1 route=worker3
    BalancerMember http://108.88.3.105:8079 loadfactor=1 route=worker2
    </proxy>
    配置完成任務,訪問http://127.0.0.1:8081/test/test.jsp,檢查是否能正常訪問。

    apache_tomcat配置文件下載:apache_tomcat


    評論

    # re: apache與tomcat負載集群的3種方法  回復  更多評論   

    2011-04-15 15:37 by 寧波LED
    一個看不懂,無語了

    # re: apache與tomcat負載集群的3種方法  回復  更多評論   

    2011-07-29 17:56 by 白河
    請教一下啊。
    為啥按照你的配置 在同一臺機器上 都是只能請求一個tomcat?

    # re: apache與tomcat負載集群的3種方法  回復  更多評論   

    2011-07-29 23:24 by penngo
    @白河
    沒遇上這情況.

    # re: apache與tomcat負載集群的3種方法  回復  更多評論   

    2013-01-04 18:45 by bohaiwaiwai
    如果有httpd-vhost.conf中有
    RewriteCond %{HTTP_HOST} www.jkl.cn$ [NC]
    RewriteRule ^/(.*)$ http://192.168.0.168:8080/jkl_web/$1 [P,L]
    這樣的配置怎么辦啊。。

    # re: apache與tomcat負載集群的3種方法[未登錄]  回復  更多評論   

    2013-12-27 14:38 by 222
    這種方式采用了session粘滯的方式實現的

    # re: apache與tomcat負載集群的3種方法  回復  更多評論   

    2015-04-09 13:25 by 定格
    LZ學習是通過視頻還是書籍,求資料

    # re: apache與tomcat負載集群的3種方法  回復  更多評論   

    2015-07-30 14:37 by 放放風
    多認證負載均衡跳轉,3種方法都試過了,跳轉慢,10-15秒才反應過來,直連apache+tomcat到是很快,郁悶啊

    # re: apache與tomcat負載集群的3種方法  回復  更多評論   

    2015-09-09 11:32 by Aceslup
    <Context distributable="true"> 這個沒有測試成功

    # re: apache與tomcat負載集群的3種方法[未登錄]  回復  更多評論   

    2016-04-29 16:58 by Leon
    能發表不是JK 方式的另外兩種配置嗎/
    主站蜘蛛池模板: 亚洲人成网站在线在线观看| 亚洲视频精品在线观看| 亚洲AV无码之国产精品| 无码国产精品一区二区免费I6| 亚洲综合激情另类小说区| 免费视频成人片在线观看| 亚洲人成网站在线播放影院在线| 免费网站观看WWW在线观看| 久久亚洲国产午夜精品理论片 | 亚洲综合成人网在线观看| 亚洲电影免费在线观看| 亚洲五月六月丁香激情| 久久久久久精品免费看SSS| 亚洲美女视频网站| 无码国产精品一区二区免费式直播| 亚洲人成电影网站| 日本高清免费中文字幕不卡| 18未年禁止免费观看| 久久久久久亚洲AV无码专区| 国产91色综合久久免费| 亚洲日韩精品国产3区| 国产jizzjizz免费视频| 羞羞视频免费网站在线看| 久久久亚洲精品国产| 一二三四在线播放免费观看中文版视频| 91丁香亚洲综合社区| 无码不卡亚洲成?人片| 成人网站免费看黄A站视频| 亚洲欧洲日产韩国在线| 日本免费人成黄页网观看视频| 无套内谢孕妇毛片免费看看| 亚洲成A人片777777| 成人免费AA片在线观看| 黄色一级视频免费| 久久亚洲美女精品国产精品 | 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 精品国产麻豆免费网站| 高清永久免费观看| 亚洲av无码一区二区三区观看| 亚洲高清国产拍精品青青草原| 无码国产精品一区二区免费16|