One of our website host contents which can be downloaded by clients. Since this content is getting popular, our bandwidth usage and server load are getting higher everyday and we need something to balance this out. To solve this issue, I have using an application called Pound, which is a reverse proxy, load balancer, auto HTTP fail-over and HTTPS front-end for Web server.
The installation and implementation is very simple with help of RPMforge. Pound is open-source software which you can find out more information about it at http://www.apsis.ch/pound/ .
I will use a simple kind of architecture as below:
Lets assume I already have the website hosted in both servers, which I already copied using cPanel copy account tools. Variable as below:
OS: CentOS 5.6 64bit
Website URL: http://download.myinstaller.org/
1. Install RPMforge repository for yum. Go to http://wiki.centos.org/AdditionalResources/Repositories/RPMForge and choose which CentOS operating system you used. In this case, I will use CentOS 5 64bit packages:
$ cd /usr/local/src $ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm $ rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt $ rpm -Uhv rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
2. Install Pound via yum:
$ yum install pound -y
3. Rename original config file because we will use our configuration file:
$ mv /etc/pound.cfg /etc/pound.cfg.ori $ touch /etc/pound.cfg
4. Copy and paste following configuration into /etc/pound.cfg using text editor:
User "nobody" Group "nobody" LogLevel 1 Alive 2 ListenHTTP Address 184.108.40.206 Port 80 End Service HeadRequire "Host: .*download.myinstaller.org.*" BackEnd Address 220.127.116.11 Port 80 TimeOut 300 End BackEnd Address 18.104.22.168 Port 80 TimeOut 300 End Session Type Cookie ID "JSESSIONID" TTL 300 End End
5. Make sure Pound is working at startup service and started:
$ chkconfig pound on $ service pound start
6. Check whether Pound is listening to the correct value:
$ netstat -tulpn | grep pound tcp 0 0 22.214.171.124:80 0.0.0.0:* LISTEN 29358/pound
7. To check the log files, you can monitor /var/log/messages using following command:
$ tail -f /var/log/messages
8. Last step is to point the subdomain to the load balancer IP. In this case, I need to login to my domain name server and change the A record for this subdomain. Example as below:
download.myinstaller.org A 126.96.36.199
After DNS propagation is completed, you should notice that Pound has started to work and balancing your website!