星期五, 5月 06, 2011

Tomcat 6 設定 Cluster, Apache Load Balance 重點速記

Tomcat 與 Apache 透過 mod_jk 連結部分為基本設定.
以下說明基於 Tomcat 與 Apache 已經設定好之情況.

  1. Tomcat 之 server.xml 將 Engine 下之 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 註解拿掉, 因沒設定參數, 都採 default 設定, 如 multicast ip/port 等. 若有需求可改設定. 請參考 tomcat 文件.

  2. 需 load-balance 之 webapp, 其 web.xml 需宣告 <distributable/>

  3. 需 load-balance 之 webapp, 放於 session 之物件都需實作 java.io.Serializable

  4. mod_jk.conf 將 Tomcat 與 Apache mapping 設定移除, 如下:
    #JkMount /test/* ap1 --> 需註解掉

  5. mod_jk.conf 增加 load balance mapping 設定檔, 如下:
    JkMountFile conf/uriworkermap.properties

  6. workers.properties 設定如下:
    worker.list=router,jkstatus
    worker.ap1.port=8009
    worker.ap1.host=192.168.1.10
    worker.ap1.type=ajp13
    worker.ap1.lbfactor=1
    
    worker.ap2.port=8009
    worker.ap2.host=192.168.1.11
    worker.ap2.type=ajp13
    worker.ap2.lbfactor=1
    
    worker.router.type=lb
    worker.router.balance_workers=ap1,ap2
    worker.jkstatus.type=status

    說明如下:

    • router 這組type設為lb, 其 load-balance 之機器為 ap1, ap2 這兩組設定.

    • jkstatus 這組type設為 status, 可以查看 mod_jk 運作狀況.

  7. uriworkermap.properties 檔案設定哪些 url 要交由哪組 worker 運作.
    如: /test/*=router

  8. httpd.conf 需設定查 mod_jk 運作狀況之程式 url mapping, 如 http://127.0.0.1/jkmanager 則設定如下
    <Location /jkmanager>
      JkMount jkstatus
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1
    </Location>

  9. 若需走 https, httpd-ssl.conf VirtualHost 下也需設定 uriworkermap.properties, 如下:
    JkMountFile conf/uriworkermap.properties