原文:http://liujintao.blog.51cto.com/413051/86242
上周六參加了51CTO的負(fù)載均衡的技術(shù)沙龍,主要是基于LVS的負(fù)載均衡,受益匪淺,開闊了思路,回去要好好研究一下.
其實(shí)使用web服務(wù)器自身的設(shè)置也能達(dá)到負(fù)載均衡的目的,我們公司使用的web服務(wù)器是resin,resin自生就可以進(jìn)行負(fù)載均衡設(shè)置,但是只有professional版本才支持,這個(gè)東西的license一個(gè)CPU要$500,所以實(shí)際使用的apache+resin的組合(免費(fèi)嘛:)),由于公司的系統(tǒng)只有運(yùn)營(yíng)商和CP會(huì)登錄訪問,并發(fā)壓力并不大,使用負(fù)載均衡主要是為了防止系統(tǒng)死掉后無法登錄,所以這樣的設(shè)計(jì)基本夠用了。如果并發(fā)訪問量很大的話,就應(yīng)該考慮在apache前面加squid做cache、通過dns輪尋等方案了。
雖然網(wǎng)上也有apache+resin進(jìn)行負(fù)載均衡設(shè)置的例子,但是由于apach和resin不同版本的配置的配置文件有一定的差距,按照網(wǎng)上的資料不一定能設(shè)置成功,下面的例子是在linux環(huán)境下使用httpd-2.0.59和Resin-3.1.6進(jìn)行負(fù)載均衡設(shè)置的,如果使用其他版本請(qǐng)參考apache和resin官方網(wǎng)站的配置說明
需要準(zhǔn)備3臺(tái)linux機(jī)器(如果是在沒有,可以先用一臺(tái)機(jī)器熟悉一下),每臺(tái)機(jī)器都要安裝apache和resin(其實(shí)1臺(tái)裝apach,另外2臺(tái)裝resin就夠用了,,之所以要全裝是為了以后的擴(kuò)展考慮),其中一臺(tái)作為前端服務(wù)器(apache),另外2臺(tái)作為后臺(tái)服務(wù)器(resin)
1 演示環(huán)境
192.168.11.5:前端服務(wù)器
192.168.11.111:后臺(tái)服務(wù)器
192.168.11.11:后臺(tái)服務(wù)器
2 安裝Apache
[root@yf3 liujt]# tar –xzvf httpd-2.0.59.tar.gz //解壓縮安裝文件
[root@yf3 liujt]# cd httpd-2.0.59 //進(jìn)入解壓縮的文件
[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
完成以上操作后,進(jìn)入/usr/local/Apache2,發(fā)現(xiàn)Apache已經(jīng)安裝完成.
3 安裝Resin
到Resin的官方網(wǎng)站可以下載
演示時(shí)使用的是Resin-3.1.6版本
和普通安裝Resin的方式有一點(diǎn)區(qū)別,Resin要聯(lián)合Apache安裝,也就是使用參數(shù)--with-Apache=/usr/local/Apache2
[root@yf3 liujt]# tar –xzvf Resin-3.1.6.tar.gz //解壓縮安裝文件
[root@yf3 liujt]# cd Resin-3.1.6 //進(jìn)入解壓縮的文件
[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臺(tái)后服務(wù)器的Resin的配置文件Resin.conf,路徑/usr/local/Resin/conf/Resin.conf,如果有多個(gè)Resin,均按此方式配置
[root@yf3 Resin-3.1.6] # vi /usr/local/Resin/conf/Resin.conf
3.1 配置默認(rèn)的負(fù)責(zé)均衡
找到配置文件中的<!-- define the servers in the cluster -->,修改負(fù)載均衡配置,需要設(shè)置服務(wù)的ID、IP和port,例如192.168.11.11的設(shè)置如下
<server id="a" address="127.0.0.1" port="6805"/>
如果同一個(gè)項(xiàng)目要啟動(dòng)多個(gè)服務(wù),可以配置多項(xiàng),但是要使用不同的id名稱和port,例如:
<server id="a" address="127.0.0.1" port="6805"/>
<server id="b" address="127.0.0.1" port="6806/>
如果要在同一個(gè)resin中部署多個(gè)項(xiàng)目,可以設(shè)置不同的配置文件,指向不同的虛擬目錄來實(shí)現(xiàn),啟動(dòng)resin時(shí)啟動(dòng)不同的配置文件即可.
4 配置Apache
需要對(duì)前端程序(192.168.11.5)的apach的配置文件httpd.conf進(jìn)行修改,路徑:/usr/local/Apache2/conf/httpd.conf
[root@yf3 Resin-3.1.6] # vi /usr/local/Apache2/conf/httpd.conf
4.1 修改監(jiān)聽接口
4.2 修改DocumentRoot
找到配置文件中的DocumentRoot配置
DocumentRoot "/usr/local/Apache2/htdocs"
修改為實(shí)際需要的路徑,例如改為實(shí)際的發(fā)布路徑為/usr/local/Apache2/htdocs/test,就需要改成以下形式
DocumentRoot "/usr/local/Apache2/htdocs/test"
4.3 Directory
找到配置文件中的Directory配置
<Directory "/usr/local/Apache2/htdocs">
修改為實(shí)際需要的路徑,例如改為實(shí)際的發(fā)布路徑為/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相關(guān)配置
在apache的配置文件httpd.conf最后增加以下內(nèi)容
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配置的是調(diào)用的Resin的設(shè)置的負(fù)載均衡器的IP地址和端口號(hào)
11.5的apach分別調(diào)用了11.11和11.111的兩個(gè)Resin
11.11的Resin的負(fù)載生成器的配置為
<server id="a" address="192.168.11.11" port="6805"/>
11.111的Resin的負(fù)載生成器的配置為
<server id="a" address="192.168.11.111" port="6806"/>
5 訪問測(cè)試
5.1. 編寫測(cè)試頁面
為了檢查負(fù)載均衡是否生效,需要編寫測(cè)試頁面a.jsp,通過在web頁面和各Resin的日志中顯示的內(nèi)容進(jìn)行辨別,下面11.11的其中一個(gè)Resin為例說明
<%System.out.println("server 192.168.11.11");%> //在Resin日志中顯示
server 192.168.11.11 //在web頁面顯示
其他Resin的a.jsp參照上面的例子,只需要將其中的內(nèi)容替換掉,例如11.111的a.jsp文件可以寫成
<%System.out.println("server 192.168.11.111");%> //在Resin日志中顯示
server 192.168.11.111 //在web頁面顯示
5.2 發(fā)布項(xiàng)目
1. Apche項(xiàng)目發(fā)布
將a.jsp文件放到設(shè)置的apche的虛擬目錄中,演示的設(shè)置的虛擬目錄是
DocumentRoot "/usr/local/Apache2/test"
因此需要將a.jsp放到/usr/local/Apache2/test目錄下
2. Resin項(xiàng)目發(fā)布
分別將來兩個(gè)a.jsp文件放到192.168.11.11和192.168.11.111設(shè)置的Resin的虛擬目錄中,如果某Resin的虛擬目錄是
<web-app id="/" root-directory="webapps/ROOT"/>
則需要將a.jsp放到Resin的webapps/ROOT目錄下
5.3. 啟動(dòng)服務(wù)
1. 啟動(dòng)Apache
[root@yf3 httpd-2.0.59] # /usr/local/Apache2/bin/httpd -f ./conf/httpd.conf
2. 分別啟動(dòng)調(diào)用的Resin
例如啟動(dòng)11.11的Resin-3.1.6中id為"a"的服務(wù),需要在11.11服務(wù)器執(zhí)行如下命令
[root@ yf3 Resin-3.1.6] # / usr/local/Resin-web/bin/httpd.sh -server a start
啟動(dòng)11.111的Resin-3.1.6中id為"a"的服務(wù),需要在11.111服務(wù)器執(zhí)行如下命令
[root@ localhost Resin-3.1.6] # / usr/local/Resin-web/bin/httpd.sh -server a start
5.4. 驗(yàn)證a.jsp
使用IE多次訪問web發(fā)布頁面,通過頁面顯示的內(nèi)容和Resin日志打印的內(nèi)容,檢查是否隨機(jī)調(diào)用各Resin的a.jsp文件。
Web頁面的訪問地址如下
[url]http://192.168.11.5:8080/a.jsp[/url]
查看rensin的方法如下,如果要看查看11.111的Resin-3.1.6中id為"a"服務(wù)的日志,需要在11.111服務(wù)器執(zhí)行如下命令
[root@ localhost Resin-3.1.6] # tail –f / usr/local/Resin-3.16 /log/a.log