2011年5月18日 星期三

apache loadbalancer

在之前我已經有使用過 LVS、haproxy 當做過 loadbalancer server

但是如果只使用在 WEB 的部份,其實我們只要使用 apache 的模組就可以做到 loadbalancer 的功能

這次的使用平台為 Debian 6.0.1a-64bit

第1步驟

#apt-get install apache2

第2步驟

說明:Debian 的 apache 目錄為 /etc/apache2
而如果要把某個網站或者模組功能開啟時,需使用 a2ensite 跟 a2enmod
一般如無開啟的網站或模組,會放在 /etc/apache2/site-available 跟 /etc/apache2/mod-available 這兩個資料夾中

如已開啟則會放在 /etc/apache2/site-enabled 跟 /etc/apache2/mod-enabled

我們先將模組開啟

#a2enmod proxy
#a2enmod proxy_balancer
#a2enmod proxy_http

第3步驟

新增網站設定檔

說明:這次我們使用的方式為兩台 SERVER,一台為外部主機,一台為內部主機
兩台都有安裝 apache,但是只有外部主機有開啟 loadbalancer 的模組

在內部的 apache 設定方式跟一般的設定方式一樣
主要說明為外部主機

先在 site-available 的目錄中建立網站的 conf 設定檔

#vi /etc/apache2/site-available/test.conf

ProxyPass / balancer://test <== 對應到下面的
內的設定
ProxyPassReverse / http://192.168.0.224/

BalancerMember http://192.168.0.223:80 loadfactor=7 <== 設定比重,數字愈大主機接受請求愈多
BalancerMember http://192.168.0.224:80 loadfactor=1


儲存後重啟 apache 即可完成

#/etc/init.d/apache2 restart

額外設定

如要做 tomcat 的 loadbalancer 只需將 ajp 功能打開即可

第1步驟

編輯 tomcat 的 server.xml

#vi /var/lib/tomcat6/conf/server.xml
..
..
..
Connector port="8009" protocol="AJP/1.3" redirectPort="8443" <==tomcat 預設 ajp port 為 8009,請將這行註解拿掉即可
..
..

第2步驟

將 apache 的 ajp 模組開啟

#a2enmod proxy_ajp.load

在 apache 的設定檔中將 BalancerMember http://192.168.0.223:80 的 http 和 80 改為 ajp 和 8009

如:

ProxyPass / balancer://tomcat
ProxyPassReverse / http://192.168.0.224/

BalancerMember http://192.168.0.223:8080 loadfactor=7
BalancerMember http://192.168.0.224:8080 loadfactor=1


重啟 apache2 即可完成

#/etc/init.d/apache2 restart