In this configuration guide, you will learn, how to install HAProxy on CentOS 7 or other Red hat based Linux servers. #centlinux #linux #haproxy
Table of Contents
What is HAProxy?
HAProxy is an open-source, high-performance TCP/HTTP load balancer and proxy server. It is commonly used to distribute incoming traffic across multiple servers to ensure high availability and reliability of web services and applications. HAProxy can efficiently handle a large number of concurrent connections and provides features such as SSL termination, health checks, request routing, and session persistence. It’s often deployed in front of web servers, application servers, or other backend services to improve performance, scalability, and fault tolerance. Additionally, HAProxy supports various load-balancing algorithms and provides detailed monitoring and logging capabilities to help administrators manage and troubleshoot their infrastructure effectively.
What is Load Balancing?
Load balancing refers to efficiently distributing incoming network traffic across a group of backend servers, also known as a server farm or server pool. Load Balancing improves the distribution of workloads across multiple computing resources. Using multiple components with load balancing instead of a single component may increase reliability and availability through redundancy.
Load Balancer is the device that perform Load Balancing. Hardware and software load balancers may have a variety of special features. The fundamental feature of a load balancer is to be able to distribute incoming requests over a number of backend servers in the cluster according to a scheduling algorithm.
In this post, we will configure a HTTP Load Balancer with HAProxy to distribute HTTP workload between two webservers.
Table of Contents:
System Specification:
We have two Apache Web Servers webserver-01.example.com and webserver-02.example.com and we want to configure a HTTP Load Balancer for them i.e. haproxy-01.example.com.
Hostname | haproxy-01.example.com | webserver-01.example.com | webserver-02.example.com |
IP Address | 192.168.116.30/24 | 192.168.116.31/24 | 192.168.116.32/24 |
Operating System | CentOS 7 | CentOS 7 | CentOS 7 |
Web Server | NA | Nginx | Nginx |
Install HAProxy on CentOS 7:
To ensure that our webservers are properly configured and browsable, open their URLs in a Browser.
I have set different index pages on both servers, to differentiate between servers, when we are accessing using the load balancer.
Connect to the haproxy-01.example.com and install HAProxy.
# yum install -y haproxy
HAProxy has been installed.
Now configure rsyslog to handle HAProxy logs.
# vi /etc/rsyslog.conf
Search and uncomment following lines.
$ModLoad imudp $UDPServerRun 514
Add following directive in the same file.
# HAProxy Logging local2.* /var/log/haproxy.log
Save settings and exit.
Restart rsyslog service to apply changes.
# systemctl restart rsyslog.service
Now configure HAProxy settings according to our environment.
# vi /etc/haproxy/haproxy.cfg
Add following directives in this file.
# HAProxy Load Balancer for Apache Web Server frontend http-balancer bind 192.168.116.30:80 default_backend web-servers backend web-servers mode http balance roundrobin stats enable stats auth admin:123 server webserver-01 192.168.116.31:80 check server webserver-02 192.168.116.32:80 check
Save settings and exit.
Start and enable haproxy service.
# systemctl start haproxy ; systemctl enable haproxy ln -s '/usr/lib/systemd/system/haproxy.service' '/etc/systemd/system/multi-user.target.wants/haproxy.service'
Allow HTTP service through Linux firewall.
# firewall-cmd --permanent --add-service=http success # firewall-cmd --reload success
Test HAProxy Configuration:
Open the URL of the haproxy-01.example.com in a browser.
You may observe that the HTTP request has been served by webserver-01.example.com. It shows that our Load Balancer has forwarded the request to this server.
Press F5 to refresh the webpage.
Since, we have configured the roundrobin balancing in HAProxy. Therefore, it forwards next request to alternate server. You can refresh webpage multiple times to observe the functionality.
To see the detailed statistics of the HAProxy. Browse to http://haproxy-01.example.com/haproxy?stats.
We have successfully configured a HTTP Load Balancer with HAProxy.
Conclusion:
In this configuration guide, you have learned, how to install HAProxy on CentOS 7 or other Red hat based Linux servers.