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

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

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

    HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

    知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

      BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

    使用Apache做集群及負載均衡的方式一般有兩種:mod_jk和mod_proxy兩種。

        本人嘗試過用mod_jk的方式配置過,但都不是很成功,apache2.2.x后已經將mod_proxy集成進來,無需使用其他軟件、插件,通過配置就可以完成與tomcat的集成。下面講述以mod_proxy方式配置情況: 

        環境:windowsxp,apache2.2.x,tomcat5.5,jdk1.5.0,tomcat放在同一臺機器上,3份。

        安裝過程略。。。,以下講述配置過程 

        1、Apache配置

        1.1 httpd.conf配置

         修改APACHE的配置文件D:\Apache \conf\httpd.conf
    將以下Module的注釋去掉,這里并沒有使用mod_jk.so進行apache和tomcat的鏈接,從2.X以后apache自身已集成了mod_jk.so的功能。只需簡單的把下面幾行去掉注釋,就相當于以前用mod_jk.so比較繁瑣的配置了。這里主要采用了代理的方法,就這么簡單。 
       

    Xml代碼 復制代碼 收藏代碼
    1. LoadModule proxy_module modules/mod_proxy.so    
    2. LoadModule proxy_connect_module modules/mod_proxy_connect.so    
    3. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so    
    4. LoadModule proxy_http_module modules/mod_proxy_http.so    
    5. LoadModule proxy_ajp_module modules/mod_proxy_ajp.so    
    6. LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   

     

        再找到加上index.jsp修改成,我項目的默認歡迎頁面是index.jsp,記得與前一個之前用空隔分隔。 
       

    Xml代碼 復制代碼 收藏代碼
    1. <IfModule dir_module>  
    2.     DirectoryIndex index.html index.jsp main.html   
    3. </IfModule>  

     
       接著找到以下這兩行,把下面一行的#號去掉,表示將 conf/extra/httpd-vhosts.conf配置文件加進來 

      

    Xml代碼 復制代碼 收藏代碼
    1. # Virtual hosts    
    2.    Include conf/extra/httpd-vhosts.conf   

     
       最后,在文件最后加上以下內容,表示打開反向代理。 這個很重要,我的項目之前就是沒有加上這幾行,只能顯示index.jsp頁面的內容,登錄成功后去不能正確跳轉到相關頁面,還是返回到index.jsp頁面。反向代理可以基于一整個站點,也可以基于一個目錄。 

     

    Xml代碼 復制代碼 收藏代碼
    1. ProxyRequests Off   
    2. <Proxy *:80>    
    3.     Order deny,allow    
    4.     Allow from all    
    5. </Proxy>   

     
        2.2 http-vhost.conf配置

       修改conf/extra/httpd-vhosts.conf

       在文件最后加上以下代碼
      

    Xml代碼 復制代碼 收藏代碼
    1. <VirtualHost *:80>  
    2.     ServerAdmin habibliu@gmail.com   
    3.     ServerName localhost   
    4.     ServerAlias localhost   
    5.     ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On  
    6.     ProxyPassReverse / balancer://cluster/   
    7.     <proxy balancer://cluster>  
    8.         BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=s1  
    9.         BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=s2  
    10.         BalancerMember ajp://127.0.0.1:8209 loadfactor=1 route=s3  
    11.     </proxy>  
    12. </VirtualHost>  

         

       說明:
       均衡器粘連會話名稱。該值常常會被設置為類似JSESSIONID或者PHPSESSIONID之類的值,他依賴于支持會話的后端應用服務器。如果后端服務器使用不同的cookie名稱或者URL編碼的ID(像servlet容器),使用|來分開他們。第一個部分針對cookie,第二個針對路徑。
            每次請求都按照負載均衡配置的節點次序依次請求到不同的Tomcat上。尤其是當我們通過jvmRoute 和route 做了綁定之后,信息更加準確。但是,仔細觀察,每次請求的SessionID都是不一樣! 對于純Web應用,尤其是依靠SessionID區分唯一用戶的應用,這將是一場噩夢——解決了服務器壓力均衡問題,卻帶來了SessionID不唯一問題!這就需要SessionID綁定,或者說叫做“會話復制”。 stickySession 粘性會話,根據這一屬性,瀏覽器將通過cookie綁定SeesionID。如果這個時候再次訪問http://localhost/zlex ,你會發現,頁面不會來回跳轉了!

         引用:     

    sticky模式
    利用負載均衡器的sticky模式的方式把所有同一session的請求都發送到相同的Tomcat節點。這樣不同用戶的請求就被平均分配到集群 中各個tomcat節點上,實現負載均衡的能力。這樣做的缺點是沒有災難恢復的能力。一旦一個節點發生故障,這個節點上所有的session信息全部丟 失;
    同一用戶同一session只和一個webServer交互,一旦這個webserver發生故障,本次session將丟失,用戶不能繼續使用 !
       BalancerMember 是負載均衡參與的成員定義,與tomcat的ajp協議通訊。上面紅色的端口號分別是三個tomcat的conf/server.xml中的配置的AJP/1.3協議連接器,由于在同一臺機器上部署,所以三個tomcat中的這個端口都要改成不一樣的,我這里分別改成8009,8109,8209。緊接著是route設置,值與每個tomcat的配置對應上,下面會說明。
       2、Tomcat的配置說明
       1、server.xml配置
            修改%TOMCAT_HOME%\conf\server.xml
           由于三個tomcat都部署在一臺機器上,所以相關會引起沖突的端口都要改,分別是:
           shutdow,http connector,ajp connector,以下是三個tomcat server.xml文件中三個端口的配置清單:
           tomcat s1:

          

    Java代碼 復制代碼 收藏代碼
    1. <Server port="8905" shutdown="SHUTDOWN" debug="0">   
    2. ....   
    3.  <Connector port="9000"  
    4.                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
    5.                enableLookups="false" redirectPort="8443" acceptCount="100"  
    6.                debug="0" connectionTimeout="20000"    
    7.                disableUploadTimeout="true" />   
    8. ....   
    9.  <Connector port="8009"    
    10.                enableLookups="false" redirectPort="8443" debug="0"  
    11.                protocol="AJP/1.3" />  

     
       Tomcat s2 
      

    Xml代碼 復制代碼 收藏代碼
    1. <Server port="8915" shutdown="SHUTDOWN" debug="0">  
    2. ....   
    3.  <Connector port="9100"  
    4.                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
    5.                enableLookups="false" redirectPort="8443" acceptCount="100"  
    6.                debug="0" connectionTimeout="20000"    
    7.                disableUploadTimeout="true" />  
    8. ....   
    9.  <Connector port="8109"    
    10.                enableLookups="false" redirectPort="8443" debug="0"  
    11.                protocol="AJP/1.3" />  

     
        Tomcat s3

       

    Xml代碼 復制代碼 收藏代碼
    1. <Server port="8925" shutdown="SHUTDOWN" debug="0">  
    2. ....   
    3.  <Connector port="9200"  
    4.                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
    5.                enableLookups="false" redirectPort="8443" acceptCount="100"  
    6.                debug="0" connectionTimeout="20000"    
    7.                disableUploadTimeout="true" />  
    8. ....   
    9.  <Connector port="8209"    
    10.                enableLookups="false" redirectPort="8443" debug="0"  
    11.                protocol="AJP/1.3" />  

     


       以上的AJP端口與apache http-vhost.conf中的BalancerMember 的ajp端口對應。
        接著找到的,加上jvmRoute="xx"屬性,xx要與apache http-vhost.conf中的BalancerMember 的ajp route定義一致。以下是三個tomcat的engine設置 

        Tomcat s1 
       

    Xml代碼 復制代碼 收藏代碼
    1. <Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="s1">  

     
       Tomcat s2

       

    Xml代碼 復制代碼 收藏代碼
    1. <Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="s2">  

     
         Tomcat s3    
       

    Xml代碼 復制代碼 收藏代碼
    1. <Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="s3">  

     
        接著到到Cluster配置段,將這一段的注釋符號去掉,如下: 
     

    Xml代碼 復制代碼 收藏代碼
    1. <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"  
    2.                  managerClassName="org.apache.catalina.cluster.session.DeltaManager"  
    3.                  expireSessionsOnShutdown="false"  
    4.                  useDirtyFlag="true">  
    5.   
    6.             <Membership    
    7.                 className="org.apache.catalina.cluster.mcast.McastService"  
    8.                 mcastAddr="228.0.0.4"  
    9.                 mcastPort="45564"  
    10.                 mcastFrequency="500"  
    11.                 mcastDropTime="3000"/>  
    12.   
    13.             <Receiver    
    14.                 className="org.apache.catalina.cluster.tcp.ReplicationListener"  
    15.                 tcpListenAddress="auto"  
    16.                 tcpListenPort="4001"  
    17.                 tcpSelectorTimeout="100"  
    18.                 tcpThreadCount="6"/>  
    19.   
    20.             <Sender  
    21.                 className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"  
    22.                 replicationMode="pooled"/>  
    23.   
    24.             <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"  
    25.                    filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>  
    26.                       
    27.             <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"  
    28.                       tempDir="/tmp/war-temp/"  
    29.                       deployDir="/tmp/war-deploy/"  
    30.                       watchDir="/tmp/war-listen/"  
    31.                       watchEnabled="false"/>  
    32.         </Cluster>  

                 

         注意:如果同一臺設備上有多個tomcat,這個tcpListenPort就中設置不同的端口號,以免沖突。
        所以三個tomcat的這個端口分別是4001、4002、4003。
       
    3、其它配置
        執行以上步驟基本已經可以成功了,當然還要設置你的webapp,這個不在此累贅了。當然最好還要設置JAVA_HOME,PATH,CLASSPATH這些環境變量,比如將%JAVA_HOME%\lib\tools.jar和%JAVA_HOME%\lib\rt.jar兩個包加到類路徑內。
       還有<distributable/>元素,有些文章說還要將元素加到項目的web.xml文件中,我也加了,但沒有驗證它的存在對運行有沒有影響,大家如果碰到問題,也不防加上。



    </script>

    posted on 2012-06-27 14:38 helloworld2008 閱讀(599) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲爆乳成av人在线视菜奈实| 免费无码成人AV片在线在线播放| 美女被免费网站视频在线| 亚洲熟妇色自偷自拍另类| 国产精品亚洲精品日韩已方| 国产精品高清全国免费观看| 99久久久精品免费观看国产| 免费无码又爽又刺激网站| 日本一区二区三区在线视频观看免费 | av大片在线无码免费| 免费看黄的成人APP| 免费精品国产自产拍在线观看| 亚洲国产日韩精品| 亚洲成人黄色网址| 亚洲一区二区三区电影| 亚洲色大成网站WWW久久九九| 免费一级黄色毛片| 国产精品99久久免费| 成人性生交视频免费观看| 黄页免费的网站勿入免费直接进入| 国产成人免费视频| 在线免费观看h片| 一级做性色a爰片久久毛片免费| 男男gvh肉在线观看免费| 亚洲欧美成人av在线观看| 日韩亚洲产在线观看| 亚洲午夜电影在线观看高清| 亚洲黄色免费网站| 好看的电影网站亚洲一区| 亚洲日本一区二区三区在线| 国产成人综合亚洲AV第一页 | 亚洲精品又粗又大又爽A片| 国产精品亚洲片夜色在线| 亚洲午夜电影一区二区三区| 亚洲性色高清完整版在线观看| 在线电影你懂的亚洲| 亚洲人成电影青青在线播放| 亚洲AV成人噜噜无码网站| 亚洲综合成人婷婷五月网址| 亚洲综合小说另类图片动图 | 99re在线视频免费观看|