Apache + MOD_JK + TOMCAT實現叢集和負載平衡配置指南

來源:互聯網
上載者:User

對於Web應用的叢集學習我是從Tomcat5.5開始的,下面是我的實際操作過程和一些體會。

第一部分 環境介紹

負載平衡

×××××××××××××××××

   作業系統:windows xp

   IP地址   :192.168.1.200

   Apache:apache_2.2.13-win32-x86-openssl-0.9.8k.msi

 mod_jk:mod_jk-1.2.28-httpd-2.2.3.so(for windows)

叢集環境Tomcat1

×××××××××××××××××

   作業系統:SUSE Linuxe server 10

   IP地址   :192.168.1.114

   Tomcat :apache-tomcat-5.5.28

叢集環境Tomcat2

×××××××××××××××××

   作業系統:SUSE Linuxe server 10

   IP地址   :192.168.1.113

   Tomcat :apache-tomcat-5.5.28

第二部分 負載平衡配置

  第一步:安裝apache,安裝目錄為C:/Apache2.2。

  第二步:將mod_jk-1.2.28-httpd-2.2.3.so檔案複製到目錄%apache_home%/modules目錄下

  第三步:修改設定檔%apache_home%/conf/httpd.conf

              在檔案%apache_home%/conf/httpd.conf的最末尾增加如下行:include conf/mod_jk.conf

              #zhangzk<br />include conf/mod_jk.conf

 第四步:在目錄%apache_home%/conf下面建立檔案mod_jk.conf

             #載入mod_jk Module<br />LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so<br />#<br />#指定 workers.properties檔案路徑<br />JkWorkersFile conf/workers.properties<br />#<br />#指定哪些請求交給tomcat處理<br />#"controller"為在workers.propertise裡指定的負載分配控制器名<br />JkMount /*.jsp controller

第五步:在目錄%apache_home%/conf下建立檔案workers.properties

            #server<br />worker.list = controller </p><p>#========tomcat1========<br />worker.tomcat1.port=8009<br />worker.tomcat1.host=192.168.1.114<br />worker.tomcat1.type=ajp13<br />worker.tomcat1.lbfactor = 1 </p><p>#========tomcat2========<br />worker.tomcat2.port=8009<br />worker.tomcat2.host=192.168.1.113<br />worker.tomcat2.type=ajp13<br />worker.tomcat2.lbfactor = 1 </p><p>#========controller,負載平衡控制器========<br />worker.controller.type=lb<br />worker.controller.balanced_workers=tomcat1,tomcat2<br />worker.controller.sticky_session=1

           至此負載平衡伺服器已經配置完畢啦。

           分別啟動tomcat1和tomcat2已經apache就可以實現對於*.jsp的請求進行1:1分發到tomcat1和tomcat2上。

第三部分 tomcat叢集配置

            第一步:將%tomcat_home%/conf/server.xml檔案中的叢集配置節點的注釋去掉

                        即將該檔案中如下部分

            <!--<br /> <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"<br /> managerClassName="org.apache.catalina.cluster.session.DeltaManager"<br /> expireSessionsOnShutdown="false"<br /> useDirtyFlag="true"<br /> notifyListenersOnReplication="true"><br /> ......<br /> </Cluster><br /> -->

 

                     修改為如下形式(......表示中間有程式碼片段沒有展示出來)

<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"<br /> managerClassName="org.apache.catalina.cluster.session.DeltaManager"<br /> expireSessionsOnShutdown="false"<br /> useDirtyFlag="true"<br /> notifyListenersOnReplication="true"><br /> ......<br /> </Cluster>

               上述變更在叢集環境tomcat1和tomcat2上都需要同樣的處理。

          

            第二步:將%tomcat_home%/conf/server.xml檔案中的如下代碼作出變更            

            >>>叢集環境Tomcat1

            <Engine name="Catalina" defaultHost="localhost">

            修改為

            <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">

 

            >>> 叢集環境Tomcat2

            <Engine name="Catalina" defaultHost="localhost">

            修改為

            <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">

           第三步:

           在需要部署到Tomcat中的web應用程式的WEB-INFO/web.xml中增加如下代碼

           <distributable/>

          經過上述3大步驟Tomcat的叢集配置就完成啦。

          在WEB應用程式中當對session.setAttribute(arg1,arg2)方法進行操作的時候,就可以完成Session的複製了。

        

  第4部分 注意事項 

         在普通的Web應用程式中如下程式碼片段即可完成Session中屬性的變更

         Object o = request.getSession(true).getAttribute(LOGIN_USER_INFO_KEY);<br />UserInfo ui = (UserInfo) o;<br />ui.setAccessPageCount(ui.getAccessPageCount() + 1);<br />

         但是在叢集部署環境下該處理是不能完成Session複製的,必須用如下程式碼片段才可以

        Object o = request.getSession(true).getAttribute(LOGIN_USER_INFO_KEY);<br />UserInfo ui = (UserInfo) o;<br />ui.setAccessPageCount(ui.getAccessPageCount() + 1);<br />request.getSession().setAttribute(LOGIN_USER_INFO_KEY, ui);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.