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 服務器到物理機器一(假設IP59.73.195.137 ),安裝路徑爲D:/Apace2

     在 物理機器一、二( 假設IP59.73.195.138) 、三假設IP59.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 爲正常的日誌級別,errordebug 級別將提供更多的日誌細節

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 端口號,在tomcatserver.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 端口號,在tomcatserver.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 端口號,在tomcatserver.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 、模擬不同的用戶數量:進行 併發測試100200400500. 。。。。

3 、壓力持續5 分鐘,10 分鐘

6.4 、 執行用例

C01 (打開首頁)

l          前置條件: Apache2.0 + Tomcat6.0 ×3

l          測試結果

<td style="padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 52.8pt; padding-top

用戶數量

迭代次數

Minimum

Average

Maximum

Pass

Fail

Stop

測試結果

100

1

 

2 .29

 

100

 

 

 

200

1

 

2.80

 

200

 

 

 

400

1

 

5 .2

 

400

 

 

 

800

1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章