使用apache+resin實現負載均衡設置

其實使用web服務器自身的設置也能達到負載均衡的目的,我們公司使用的web服務器是resin,resin自生就可以進行負載均衡設置,但是隻有professional版本才支持,這個東西的license一個CPU要$500,所以實際使用的apache+resin的組合(免費嘛:)),由於公司的系統只有運營商和CP會登錄訪問,併發壓力並不大,使用負載均衡主要是爲了防止系統死掉後無法登錄,所以這樣的設計基本夠用了。如果併發訪問量很大的話,就應該考慮在apache前面加squid做cache、通過dns輪尋等方案了。
    雖然網上也有apache+resin進行負載均衡設置的例子,但是由於apach和resin不同版本的配置的配置文件有一定的差距,按照網上的資料不一定能設置成功,下面的例子是在linux環境下使用httpd-2.0.59和Resin- 3.1.6進行負載均衡設置的,如果使用其他版本請參考apache和resin官方網站的配置說明
    需要準備3臺linux機器(如果是在沒有,可以先用一臺機器熟悉一下),每臺機器都要安裝apache和resin(其實1臺裝apach,另外2臺裝 resin就夠用了,,之所以要全裝是爲了以後的擴展考慮),其中一臺作爲前端服務器(apache),另外2臺作爲後臺服務器(resin)
 
1 演示環境
192.168.11.5:前端服務器
192.168.11.111:後臺服務器
192.168.11.11:後臺服務器
 
2 安裝Apache

到Apache的官方網站 http://www.Apache.org可以下載。
演示時使用的是httpd-2.0.59版本
[root@yf3 liujt]# tar –xzvf httpd-2.0.59.tar.gz     //解壓縮安裝文件
[root@yf3 liujt]# cd httpd-2.0.59               //進入解壓縮的文件
[root@yf3 httpd-2.0.59] # ./configure --prefix /usr/local/Apache2 -–enable-rewrite=shared --enable-speling=shared
[root@yf3 httpd-2.0.59] # make
[root@yf3 httpd-2.0.59] # make install

完成以上操作後,進入/usr/local/Apache2,發現Apache已經安裝完成.

3 安裝Resin

到Resin的官方網站可以下載
演示時使用的是Resin-3.1.6版本
和普通安裝Resin的方式有一點區別,Resin要聯合Apache安裝,也就是使用參數--with-Apache=/usr/local/Apache2
[root@yf3 liujt]# tar –xzvf Resin-3.1.6.tar.gz     //解壓縮安裝文件
[root@yf3 liujt]# cd Resin-3.1.6                    //進入解壓縮的文件
[root@yf3 Resin-3.1.6] # ./configure --prefix=/usr/local/Resin --withapxs=/usr/local/
Apache2/bin/apxs 
[root@yf3 Resin-3.1.6] # make
[root@yf3 Resin-3.1.6] # make install
 
 
3  配置Resin

需要修改2臺後服務器的Resin的配置文件Resin.conf,路徑/usr/local/Resin/conf/Resin.conf,如果有多個Resin,均按此方式配置
[root@yf3 Resin-3.1.6] # vi /usr/local/Resin/conf/Resin.conf

3.1 配置默認的負責均衡

找到配置文件中的<!-- define the servers in the cluster -->,修改負載均衡配置,需要設置服務的ID、IP和port,例如192.168.11.11的設置如下
<server id="a" address="127.0.0.1" port="6805"/>

如果同一個項目要啓動多個服務,可以配置多項,但是要使用不同的id名稱和port,例如:
<server id="a" address="127.0.0.1" port="6805"/>
<server id="b" address="127.0.0.1" port="6806/>
 
如果要在同一個resin中部署多個項目,可以設置不同的配置文件,指向不同的虛擬目錄來實現,啓動resin時啓動不同的配置文件即可.
 
 

4 配置Apache

需要對前端程序(192.168.11.5)的apach的配置文件httpd.conf進行修改,路徑:/usr/local/Apache2/conf/httpd.conf
[root@yf3 Resin-3.1.6] # vi /usr/local/Apache2/conf/httpd.conf
 
4.1 修改監聽接口

找到配置文件中的Listen 80,此端口是在web頁面訪問時使用的端口,例如安裝apache的服務器IP是192.168.11.5,如果web的需要將web訪問地址設爲http://192.168.11.5:8080,需要如下配置
Listen 8080
 
4.2 修改DocumentRoot

找到配置文件中的DocumentRoot配置
DocumentRoot "/usr/local/Apache2/htdocs"

修改爲實際需要的路徑,例如改爲實際的發佈路徑爲/usr/local/Apache2/htdocs/test,就需要改成以下形式
DocumentRoot "/usr/local/Apache2/htdocs/test"

4.3 Directory

找到配置文件中的Directory配置
<Directory "/usr/local/Apache2/htdocs">

修改爲實際需要的路徑,例如改爲實際的發佈路徑爲/usr/local/Apache2/htdocs/test,就需要改成以下形式
<Directory "/usr/local/Apache2/htdocs/test">;

4.4 修改DirectoryIndex

找到配置文件中的DirectoryIndex配置
DirectoryIndex index.html index.html.var

增加index.jsp。修改爲:
DirectoryIndex index.jsp index.html index.html.var

4.5  修改Rensin相關配置

在apache的配置文件httpd.conf最後增加以下內容
LoadModule caucho_module /usr/local/Apache2/modules/mod_caucho.so
ResinConfigServer 192.168.11.11 6805
ResinConfigServer 192.168.11.111 6806
CauchoConfigCacheDirectory /tmp
CauchoStatus yes

其中ResinConfigServer配置的是調用的Resin的設置的負載均衡器的IP地址和端口號
11.5的apach分別調用了11.11和11.111的兩個Resin
11.11的Resin的負載生成器的配置爲
<server id="a" address="192.168.11.11" port="6805"/>

11.111的Resin的負載生成器的配置爲
<server id="a" address="192.168.11.111" port="6806"/>

5 訪問測試

5.1. 編寫測試頁面

爲了檢查負載均衡是否生效,需要編寫測試頁面a.jsp,通過在web頁面和各Resin的日誌中顯示的內容進行辨別,下面11.11的其中一個Resin爲例說明
<%System.out.println("server 192.168.11.11");%>          //在Resin日誌中顯示
server 192.168.11.11                                //在web頁面顯示

其他Resin的a.jsp參照上面的例子,只需要將其中的內容替換掉,例如11.111的a.jsp文件可以寫成
<%System.out.println("server 192.168.11.111");%>          //在Resin日誌中顯示
server 192.168.11.111                                  //在web頁面顯示

5.2 發佈項目

1. Apche項目發佈
將a.jsp文件放到設置的apche的虛擬目錄中,演示的設置的虛擬目錄是
DocumentRoot "/usr/local/Apache2/test"
因此需要將a.jsp放到/usr/local/Apache2/test目錄下
2. Resin項目發佈
分別將來兩個a.jsp文件放到192.168.11.11和192.168.11.111設置的Resin的虛擬目錄中,如果某Resin的虛擬目錄是
<web-app id="/" root-directory="webapps/ROOT"/>
則需要將a.jsp放到Resin的webapps/ROOT目錄下

5.3. 啓動服務

1. 啓動Apache
[root@yf3 httpd-2.0.59] # /usr/local/Apache2/bin/httpd -f ./conf/httpd.conf
2. 分別啓動調用的Resin

例如啓動11.11的Resin-3.1.6中id爲"a"的服務,需要在11.11服務器執行如下命令
[root@ yf3 Resin-3.1.6] # / usr/local/Resin-web/bin/httpd.sh -server a start
啓動11.111的Resin-3.1.6中id爲"a"的服務,需要在11.111服務器執行如下命令
[root@ localhost Resin-3.1.6] # / usr/local/Resin-web/bin/httpd.sh -server a start

5.4. 驗證a.jsp

使用IE多次訪問web發佈頁面,通過頁面顯示的內容和Resin日誌打印的內容,檢查是否隨機調用各Resin的a.jsp文件。
Web頁面的訪問地址如下
http://192.168.11.5:8080/a.jsp
查看rensin的方法如下,如果要看查看11.111的Resin-3.1.6中id爲"a"服務的日誌,需要在11.111服務器執行如下命令
[root@ localhost Resin-3.1.6] # tail –f / usr/local/Resin-3.16 /log/a.log
多次訪問http://192.168.11.5:8080/a.jsp,如果每次會隨機顯示其中一個Resin的a.jsp文件的內容,之後關閉其中個幾個Resin(不是全部關閉),http://192.168.11.5:8080/a.jsp仍能正常訪問,至此就完成了負載均衡的測試。證明配置成功。之後就可以正是發佈項目了

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