Apache 2+Tomcat 6負載均衡與叢集配置及性能測試
負載均衡,就是apache将客戶請求均衡的分給tomcat1,tomcat2....去處理,Tomcat中的叢集使一組區域網路上的Tomcat執行個體在使用者看起來是單一的伺服器,是實作系統資源高使用率的有效解決方案。該文章描述了一個實際的Tomcat6叢集的配置,此叢集包含獨立的三個Tomcat6執行個體。(文檔最後附件為該文檔的完整版《包含相關的圖檔》)
前端采用Apache mod_jk實作負載平衡
後端使用JDBC存儲的永久會話管理器實作session共享
1.安裝Apche,Tomcat
http://httpd.apache.org/ 下載下傳Apache 2.0.55
http://tomcat.apache.org/ 下載下傳tomcat6.0.18 zip版本(解壓即可,綠色版)
http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/ 下載下傳mod_jk,注意和apache版本比對
安裝Apache伺服器到實體機器一(假設IP為59.73.195.137),安裝路徑為D:\Apace2
在實體機器一、二(假設IP為59.73.195.138)、三假設IP為59.73.195.139中解壓下載下傳的Tomcat壓縮包,解壓路徑為D盤根目錄。(為便于區分,可以分别重命名解壓檔案夾名稱為tomcat-137,tomcat-138,tomcat-139)
2、配置Apache伺服器
2.1 導入mod_jk子產品
将下載下傳的二進制檔案mod_jk-1.2.28-httpd-2.0.52.so拷貝到實體機器一的:D:\Apache2\modules檔案夾下
2.2修改Apache配置檔案http.conf
在apache安裝目錄下conf目錄中找到http.conf
在檔案最後加上下面一句話:include "D:\Apache2\conf\mod_jk.conf",如下所示
2.3 建立mod_jk.conf檔案
在實體機器一下D:\Apache2\conf\ 建立mod_jk.conf檔案,檔案内容如下:
#加載mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.0.52.so
#指定workers.properties檔案路徑
JkWorkersFile conf/workers.properties
#告知mod_jk将自己日志寫到哪裡
JkLogFile logs/mod_jk_cluster.log
#控制日志級别,info為正常的日志級别,error和debug級别将提供更多的日志細節
JkLogLevel debug
#記錄Tomcat worker名稱、網址、和每個請求的時間
JkRequestLogFormat "%w %U %T"
#指定那些請求交給tomcat處理,controller為在workers.propertise裡指定的負載配置設定控制器
JkMount /* ball
JkMount /jkstatus/ stat1
2.4建立worker.properties檔案
在實體機器一下D:\Apache2\conf\ 建立worker.properties檔案,檔案内容如下:
worker.list =ball,stat1 #server 清單
#========tomcat-137========
worker.tomcat-137.type=ajp13 #ajp13 端口号,在tomcat下server.xml配置,預設8009
worker.tomcat-137.host=59.73.195.137 #tomcat的主機位址,如不為本機,請填寫ip位址
worker.tomcat-137.port=8009
worker.tomcat-137.lbfactor = 10 #server的權重比重,值越高,分得的請求越多
#========tomcat-138========
worker.tomcat-138.type=ajp13 #ajp13 端口号,在tomcat下server.xml配置,預設8009
worker.tomcat-138.host=59.73.195.138 #tomcat的主機位址,如不為本機,請填寫ip位址
worker.tomcat-138.port=8009
worker.tomcat-138.lbfactor = 10 #server的權重比重,值越高,分得的請求越多
#========tomcat-139========
worker.tomcat-139.type=ajp13 #ajp13 端口号,在tomcat下server.xml配置,預設8009
worker.tomcat-139.host=59.73.195.139 #tomcat的主機位址,如不為本機,請填寫ip位址
worker.tomcat-139.port=8009
worker.tomcat-139.lbfactor = 10 #server的權重比重,值越高,分得的請求越多
worker.ball.type=lb
worker.ball.sticky_session=1 #預設為1,表示同樣的tomcat服務執行個體将服務來自同樣會話的請求
worker.ball.balance_workers=tomcat-137,tomcat-138,tomcat-139
worker.stat1.type=status
3、配置tomcat伺服器
3.1啟用AJP連接配接器
在每一個Tomcat相應目錄下修改server.xml檔案,在此以實體機器一為執行個體:
打開D:\tomcat-137\conf\server.xml檔案,啟用AJP連接配接器,即将預設注釋的AJP連結器取消注釋
3.2禁用預設的HTTP/1.1連接配接器
在3.1所屬的檔案中,注釋掉所有Tomcat執行個體的HTTP連接配接器的配置,如下所示:
3.3在Catalina Engine中設定jvmRoute
在每一個Tomcat執行個體的server.xml檔案中添加一個jvmRoute屬性。該屬性ID必須與workers.properties檔案中唯一的jvmRoute ID一一對應。對應實體機一得tomcat-137,使用的條目如下所示:
添加前面的所示的Engine指令後,需要注釋掉預設的Catalina Engine指令,如下所示:
3.4配置Web.xml檔案
在每一個tomcat執行個體webapps下的應用程式的WEB-INF\web.xml添加distributable屬性,添加位置如下:
4、配置使用JDBC存儲的永久會話管理器
在本配置中,一個oracle的RDBMS表用于存儲共享資訊并使用叢集中的Tomcat執行個體能夠通過經JDBC的永久會話管理器共享會話資訊。
4.1 在Oracle資料庫中建立一使用者及相關資料表
新使用者名 empro 密碼 empass
給empro授予相關權限(略)
以empro使用者登入,建立Tomcat_sessions表
create table tomcat_sessions(
session_id varchar2(100) not null primary key,
valid_session char(1) not null,
max_inactive integer not null,
last_access number(20) not null,
app_context varchar2(255),
session_data blob)
create index kapp_context on tomcat_sessions(app_context);
commit
4.2配置<Manager>元素
向每個位于webapps/應用程式名/META-INF 目錄(如果這個目錄不存在,則建立它)下的叢集節點添加一個context.xml檔案,檔案内容如下:
5、同步tomcat叢集内部機器時鐘
因為tomcat執行個體是部署在多台實體機器上,必須確定這些實體機器的時鐘是同步的,在此通過通過以下配置實作時鐘同步效果。每台實體機器都需進行配置操作。
Step1:
在“開始”菜單→“運作”項下(或按Win+R)輸入“Regedit”進入系統資料庫編輯器。
Step2:
展開[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\ Parameters]分支,輕按兩下NtpServer将鍵值修改為國家授時中心伺服器的IP位址:210.72.145.44,然後點選“确定”按鈕儲存。
Step3:
展開[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\ TimeProviders\NtpClient]分支,并輕按兩下SpecialPollInterval鍵值,将對話框中的“基數欄”選擇到“十進制”上,輸入框中顯示的數字正是自動對時的間隔(以秒為機關),比如預設的604800就是由7(天)×24(時)×60(分)×60(秒)計算來的。設定時間同步周期(建議設為900=15分鐘或3600=1小時等周期值),填入對話框,點選确定儲存關閉對話框。
6、性能測試現象比較
6.1測試環境
裝置 | 硬體配置 | 軟體配置 |
WEB伺服器 | Apache2.0 + Tomcat6.0 × 3 Apache伺服器和tomcat-137位于實體機器一上(記憶體2G,雙核CPU),tomcat-138位于實體機器二上(記憶體2G,雙核CPU),tomcat-139位于實體機器三上(記憶體1G,單核CPU) | Windows Server 2003 |
資料庫伺服器 | Power Edge 2950 Cpu: INTEL XEON E5420 主頻 2.5GHZ (2路四核) 記憶體:4G | Oracle 10g |
負載産生裝置及用戶端 | 方正PC機(一台) CPU:Intel(R)Celeron(R)D cup3.06GHz記憶體:1.0G | Windows 2003 server LoadRunner9.5 Microsoft Office2003 |
網絡環境 | 機關内網 |
6.2測試用例及腳本開發
用例編号 | 用例名稱 | 開發情況 |
C01 | 并發通路首頁 | 在事物中插入集合點 |
C02 | 并發登入 | 屏蔽使用者重複登入 |
C03 | 答疑問題查詢 | 單獨做壓力測試接口 |
6.3、測試方法&場景設計
1、模拟使用者行為,錄制用例的操作過程,
2、模拟不同的使用者數量:進行并發測試100、200、400、500、.。。。。
3、壓力持續5分鐘,10分鐘
6.4、執行用例
C01(打開首頁)
l 前置條件:Apache2.0 + Tomcat6.0 ×3
l 測試結果
使用者數量 | 疊代次數 | Minimum | Average | Maximum | Pass | Fail | Stop | 測試結果 |
100 | 1 | 2.29 | 100 | |||||
200 | 1 | 2.80 | 200 | |||||
400 | 1 | 5.2 | 400 | |||||
800 | 1 |