Tomcat 負載平衡

Tomcat 負載平衡(CentOS 6.5 64bit + Apache2.2 + mod_jk + tomcat6)

一. 負載平衡:根據uri運算式把請求分發給各個伺服器處理。如:/*.jsp = lb_s 就是說把所有jsp請求交給lb_s , 當然它是個Tomcat。
二. 安裝配置mod_jk

到http://tomcat.apache.org/download-connectors.cgi下載Tomcat Connectors JK 1.2原始碼編譯。

# Prepare compilation by installing compilers and extracting files

tar -zxvf tomcat-connectors-1.2.39-src.tar.gz
yum install -y httpd-devel gcc gcc-c++ make libtool

# Compile
cd tomcat-connectors-1.2.39-src/native
./configure –with-apxs=/usr/sbin/apxs
make
libtool –finish /usr/lib64/httpd/modules

#安裝module到Apache modules目錄
make install

到目前為止,你已經將mod_jk.so複製到/usr/lib64/httpd/modules目錄下了。
沒錯Apache的庫改了;64位元軟體到庫都是放在/usr/Lib64的;如果是6.3版本,或者不是用yum安裝的apache,則是/usr/local/apache2/modules。

在apache conf.d目錄下新建mod_jk.conf文件,因為httpd.conf設定檔裡面已經有 “Include conf.d/*.conf" 設定。
touch /etc/httpd/conf.d/mod_jk.conf

mod_jk.conf內容:

#載入moldules下mod_jk.so文件  
loadModule jk_module modules/mod_jk.so  
#載入集群中的工作的tomcat設定檔  
JkWorkersFile conf/workers.properties  
#共用記憶體的配置和運行時資訊檔案名  
JkShmFile logs/mod_jk.shm  
#載入請求處理分配檔  
JkMountFile conf/uriworkermap.properties  
#指定jk的日誌輸出檔  
JkLogFile     logs/mod_jk.log  
#日誌輸出檔的級別  
JkLogLevel    error  

然後接著在創建tomcat負載配置屬性檔
touch /etc/httpd/conf/workers.properties
內容如下:

#workers.properties  
#配置格式為worker.<worker name>.<directive>=<value>  
#  
# worker列表  
worker.list=lb_s,status  

# 第一個tomcat  
# ------------------------  
#port 為配置tomcat ajp監控埠,不是http的埠  
worker.s1.port=8009  
#tomcat的主機位址,如不為本機,請填寫ip地址  
worker.s1.host=localhost  
worker.s1.type=ajp13  
#負載的權重值,越高表示負載越大  
worker.s1.lbfactor=1  
  
# 第二個tomcat  
# ------------------------  
worker.s2.port=9009  
worker.s2.host=localhost  
worker.s2.type=ajp13  
worker.s2.lbfactor=1  
  
# 第N個tomcat  
# ------------------------  
#worker.sN.port=10009  
#worker.sN.host=localhost  
#worker.sN.type=ajp13  
#worker.sN.lbfactor=1  
  
#用於負載均衡分發的控制器,名稱為lb_s  
worker.lb_s.type=lb  
#失敗時重試轉發次數  
worker.lb_s.retries=3  
#加入負載均衡的tomcat worker,上面定義如要載入在這裡  
worker.lb_s.balanced_workers=s1,s2  
#配置session會話是否為粘性  
#這樣負載等化器lb就會儘量保持一個session,也就是使用戶在一次會話中跟同一個Tomcat進行交互  
#不建議配置為1(or true)  
#worker.lb_s.sticky_session=false   
#worker.lb_s.sticky_session_force=true  
#設置運行狀態的控制器  
worker.status.type=status  

配置請求映射檔
touch /etc/httpd/conf/uriworkermap.properties
內容如下:

#這個後面配置的value要在worker.properties文件裡面存在對應的worker  
#所有請求都交給lb_s這個worker處理  
/*=lb_s  
#所有包含status請求的都由名稱叫status的這個worker處理  
/status=status  
#感嘆號表示接下來的 URI 不要由 JK 進行處理  
#靜態檔都不通過jk處理,直接由apache處理  
#!/*.gif=lb_s  
#!/*.jpg=lb_s  
#!/*.png=lb_s  
#!/*.css=lb_s  
#!/*.js=lb_s  

還有一些tomcat server.xml 的配置,在engine上加上jvmRoute=s1; 打開設定; 注意匹配apj埠等;就可以成功了。

廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s