How to Configure Load Balancer in Apache

To configure Load Balancer in Apache Webserver

Load Balancer manages the high network traffic in web services by distributing the workload. It is especially used to utilize the resources, avoid overload and maximize throughput. The Load Balancer can be configured in Apache web-server itself. This article explains the configuration of Load Balancer in Apache.

Testing Environment

Load Balancer:

IP Address &ndash 192.168.5.157
Hostname - lb.example.com

WebServer 1:

IP Address &ndash 192.168.5.158
Hostname - ws1.example.com

WebServer 2:

IP Address &ndash 192.168.5.159
Hostname &ndash ws2.example.com

Create some entry in the file /etc/hosts in all the three machines for hostname resolution.

Entry:

192.168.5.157 lb.example.com lb
192.168.5.158 ws1.example.com ws1
192.168.5.159 ws2.example.com ws2

Note: The Host file entry is not required, if you have DNS Server.


To configure Load Balancer in Apache

Here we have one load balancer and two web servers. First you need to configure the load balancer and then web servers. Then run the following steps on both the webservers.


To install Apache

Utilize the below command to install Apache package on both web servers.

[root@ws1 ~]# yum install httpd -y
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:01
updates | 3.4 kB 00:00:00
(1/2): extras/7/x86_64/primary_db | 166 kB 00:00:01
(2/2): updates/7/x86_64/primary_db | 9.1 MB 00:00:27
Determining fastest mirrors
* base: centos.excellmedia.net
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
Resolving Dependencies
-->  Running transaction check
.
.
.
httpd.x86_64 0:2.4.6-40.el7.centos.4

Dependency Installed:
apr.x86_64 0:1.4.8-3.el7 apr-util.x86_64 0:1.5.2-6.el7 httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 mailcap.noarch 0:2.1.41-2.el7

Complete!

Once the Apache is installed, start the service and configure firewall.

[root@ws1 ~]# systemctl start httpd
[root@ws1 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@ws1 ~]# firewall-cmd --permanent --add-service=http
success
[root@ws1 ~]# firewall-cmd &ndash reload
success

Now place the default file ' index.html' for the web servers and enter any content to that file.

[root@ws1 ~]# vim /var/www/html/index.html


To configure Load Balancer

Run the following command to install the Apache package on load balancer machine.

[root@lb ~]# yum install httpd -y
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): extras/7/x86_64/primary_db | 166 kB 00:00:03
(2/2): updates/7/x86_64/primary_db | 9.1 MB 00:00:30
Determining fastest mirrors
* base: centos.excellmedia.net
.
.
.
Installed:
httpd.x86_64 0:2.4.6-40.el7.centos.4

Dependency Installed:
apr.x86_64 0:1.4.8-3.el7 apr-util.x86_64 0:1.5.2-6.el7 httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 mailcap.noarch 0:2.1.41-2.el7

Complete!

Once the Apache is installed in Load balancer, start the service and configure the firewall.

[root@lb ~]# systemctl start httpd
[root@lb ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@lb ~]# firewall-cmd --permanent --add-service=http
success
[root@lb ~]# firewall-cmd --reload
Success

Now its time to create new Apache configuration file in the ' conf.d' directory.

[root@lb ~]# cd /etc/httpd/conf.d
[root@lb conf.d]# vim lb.conf

ProxyRequests off
< Proxy balancer://linuxhelp> 
BalancerMember http://192.168.5.158:80
BalancerMember http://192.168.5.159:80
ProxySet lbmethod=byrequests
< /Proxy> 

< Location /balancer-manager> 
SetHandler balancer-manager
< /Location> 

ProxyPass /balancer-manager !
ProxyPass / balancer://linuxhelp/

Replace the content with your webserver' s IP address and Load balancer name as linuxhelp.

Restart the apache service with the following command.

[root@lb ~]# systemctl restart httpd

Finally open the browser and point to load balancer IP address. It displays the content from any of your configured web server.

FAQ
Q
How to install Apache from command line while configuring Load Balancer in Apache
A
to install Apache from command line while configuring Load Balancer in Apache use the following command

#yum install httpd -y
Q
how to configure nginx load balancer ?
A
To configure nginx load balancer follow this link : " https://www.linuxhelp.com/how-to-configure-nginx-load-balancer-ubuntu/ "
Q
How to install CROSSROADS Load Balancer ?
A
To install CROSSROADS Load Balancer follow this Link : " https://www.linuxhelp.com/set-xr-crossroads-load-balancer-linux/ "
Q
is it possible to configure HAProxy Load Balancer in Nginx?
A
Yes it is possible

follow this link : "https://www.linuxhelp.com/how-to-configure-load-balancer-with-haproxy-for-nginx-in-centos/ "
Q
how to install HAPROXY ?
A
follow this link : "https://www.linuxhelp.com/install-haproxy-load-balancer-ubuntu/" to install HAPROXY