Apache,Tomcat集群和負載均衡
搭建環境:Windows+Apache+jdk1.6+Tomcat+mod_jk.so(本機的windows32位機,所下載文件全是32位機可用)
Apache :http://apache.etoak.com/httpd/binaries/win32/httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi
Tomcat :http://labs.renren.com/apache-mirror/tomcat/tomcat-6/v6.0.26/bin/apache-tomcat-6.0.26-windows-x86.zip (此版本直接解壓就可以使用,比起windows下的tomcat安裝包里面的工具更多一些!)
由于是在虛擬機上面實驗,只有一個C盤,so 把所有的都裝在了C盤的根目錄
1.安裝JDK 安裝目錄為
|--C盤 |-----Java |-----jdk1.6.0_18 |-----jre6
<!-- 真是糾結 ,本來都快寫完了,也不知道是 ff 的問題還是 javaeye 的問題,都沒有了,還得重新寫,我明明,都保存了的,我寫點就保存,怎麼還是沒有呢? 悠悠的傷心,白整理 3 個小時!真浪費時間,下次就整理好再發佈, tmd -->
1.1 設置環境變數,我的電腦右鍵 – 屬性 – “ 高級 ” 選項卡 – 環境變數 – 系統變數
找到 path ,添加如下內容:
;C:\Java\jdk1.6.0_18\bin;
( 與前面的要用 ; 隔開 )
如圖所示:
1.2 添加 classpath 環境變數,在系統變數裏面新建環境變數 classpath ,添加如下內容:
.;C:\Java\jdk1.6.0_18\lib;C:\Java\jdk1.6.0_18\lib\dt.jar;C:\Java\jdk1.6.0_18\lib\tools.jar;
( 注意前面要有 .; 這 2 個符號 ), 如圖所示:
1.3 添加 JAVA_HOME 環境變數,在系統變數裏面新建環境變數 JAVA_HOME ,添加如下內容:
C:\Java\jdk1.6.0_18;
如圖所示:
2. 配置 apache , apache 配置檔目錄為 :
c:\Apache2.2\conf\httpd.conf
所用到的文件分佈 :
c:\Apache2.2 | +--bin | | | |-httpd.exe | +--conf -- configuration for Apache | | | |-httpd.conf | |-workers.properties | +--extra | |-mod_jk.conf | |-.. | +--logs | | | |-access.log -- Access log | |-error.log -- Error log | |-mod_jk.log -- mmod_jk log | | | +--…
2.1 在 C:\Apache2.2\conf\extra 新建文件 mod_jk.conf
檔內容:
#載入mod_jk Module
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties檔路徑
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
#指定那些請求交給tomcat處理,"controller"為在workers.propertise裏指定的負載分配控制器
JkMount /*.jsp controller
JKMount /servlet/* controller
JKMount /*.do controller
從上面的檔內容可以看到 (1). 需要載入模組 mod_jk.so , (2). 需要在 apache 的配置檔所在的同一個目錄下麵新建檔 workers.properties , (3). 設置 mod_jk 的日誌檔的存放位置 (4). 遇到 .jsp 或者是 servlet 或者是 .do 的請求,就把 request 交給 tomcat ,而 controller 會在 workers.properties 文件中說明 .
Ok! 開始從上面的要求做起:
2.1.1 載入 mod_jk 模組 ,把下載下來的 mod_jk.so 文件放在 C:\Apache2.2\modules 目錄下麵
2.1.2 新建屬性檔 workers.properties ,內容如下:
worker.list = controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 埠號,在 tomcat 下 server.xml 配置 , 默認 8009
worker.tomcat1.host=localhost #tomcat 的主機位址,如不為本機,請填寫 ip 地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server 的加權比重,值越高,分得的請求越多
#========tomcat2========
worker.tomcat2.port=9009 #ajp13 埠號,在 tomcat 下 server.xml 配置 , 默認 8009
worker.tomcat2.host=localhost #tomcat 的主機位址,如不為本機,請填寫 ip 地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #server 的加權比重,值越高,分得的請求越多
#========controller, 負載均衡控制器 ========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 # 指定分擔請求的 tomcat
worker.controller.sticky_session=1
從內容看出由 controller 負責轉發 request ,負載均衡可以採用多種方法,這裏把權值設置成一樣的,讓控制器 controller 對其進行輪詢分佈 request ,如果是多台伺服器份做負載均衡,就可以再加上,就 OK 了!
2.1.3 這一步不用做,伺服器會自動的產生日誌到指定的目錄!~
2.1.4 這 3 行是為了告知 apache 那些 request 交給 tomcat 去處理,規則還可以自行加入!~
2.2 上面的步驟說明配置檔已經寫好,現在要讓 apache 知道這個配置檔所在的位置,因為 apache 只會自動的去讀取 httpd.conf 文件, so 打開 C:\Apache2.2\conf\httpd.conf 檔,在最後添加一句:
Include conf/extra/mod_jk.conf
2.3 至此 apache 配置完成!
3. 配置 tomcat 伺服器: ( 說明: 如果你在不同電腦上安裝 tomcat,tomcat 的安裝數量為一個,可以不必修改 tomcat 配置檔 ) 把下載的壓縮包解壓成 tomcat6_1,tomcat6_2 ,這裏只是個檔案名,用於自己區分,沒有其他意義 , 上面 workers.properties 檔中的 tomcat1,tomcat2 跟這 2 個檔夾的名稱沒有關係。解壓後目錄位置是:
c:\
+--tomcat6_1
| |
| +--bin
| +--conf
| +--lib
| +--logs
| +--…
+--tomcat6_2
| +--bin
| +--conf
| +--lib
| +--logs
| +--…
3.1 配置 tomcat 伺服器 ( tomcat6_1 伺服器不需配置 ,tomcat6_2 需要配置)
配置檔 server.xml 所在目錄為: C:\tomcat6_2\conf\server.xml
在這一行的下面再加入一行,內容為:
< Connector port="9082" maxThreads="150" minSpareThreads="25" maxSpareThreads="25" enableLookups="false" acceptCount="100" connectionTimeout="20000" proxyPort="80" disableUploadTimeout="true" />
3.2 建立測試文件 。在 C:\tomcat6_1\webapps 下新建目錄 chen ,建立測試檔 chen.jsp ,
內容為:
<%
System.out.println("=================Test Load Balance=================");
%>
然後把 chen 的目錄複製到 C:\tomcat6_2\webapps 的目錄下,
3.3 測試 ,
3.3.1 運行 tomcat6_1 伺服器,在目錄 C:\tomcat6_1\bin 下的 startup.bat ,開啟正常,注意不要關閉
3.3.2 運行 tomcat6_2 伺服器,在目錄 C:\tomcat6_2\bin 下的 startup.bat ,開啟正常,注意不要關閉
3.3.3 運行 apache 伺服器,開始 —- 程式 -- Apache HTTP Server 2.2 -- Control Apache Server - — -Start web 伺服器開啟正常!
3.3.4 打開浏览器 输入 http://localhost/chen/chen.jsp
頁面不會做任何顯示,因為代碼的作用是在控制臺顯示,不是在頁面顯示 , 查看控制臺,有一個 tomcat 控制臺顯示出來,然後刷新以後,另外一個 tomcat 控制臺也顯示出來。
如圖所示: