Share on Social Media

Learn how to install HAProxy on CentOS 7 with this comprehensive guide. Step-by-step instructions, prerequisites, and tips to get your HAProxy load balancer up and running efficiently. #centlinux #linux #haproxy

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.

Here are some key features and functions of HAProxy:

  1. Load Balancing: Distributes incoming traffic across multiple servers to ensure no single server is overwhelmed, enhancing performance and reliability.
  2. High Availability: Ensures continuous service by automatically rerouting traffic to healthy servers if one or more servers fail.
  3. Scalability: Allows for the addition of more servers to handle increasing traffic demands without downtime.
  4. Layer 4 (TCP) and Layer 7 (HTTP) Proxying: Can manage traffic at both the transport layer (TCP) and the application layer (HTTP), providing flexibility in handling various types of network traffic.
  5. SSL Termination: Offloads the SSL encryption and decryption process from the backend servers, improving their performance.
  6. Health Checks: Continuously monitors the health of backend servers and only directs traffic to servers that are up and running.
  7. Session Persistence: Ensures that a user’s session remains on the same server, which is important for applications that require user state to be maintained.
  8. Security: Provides various features like rate limiting, IP whitelisting/blacklisting, and protection against common web threats.

Overall, HAProxy is widely used in many high-traffic websites and applications due to its robustness, efficiency, and versatility.

Recommended Online Training: Learn Bash Shell in Linux for Beginners

745772 0021

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.

Linux Server 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.

Hostnamehaproxy-01.example.comwebserver-01.example.comwebserver-02.example.com
IP Address192.168.116.30/24192.168.116.31/24192.168.116.32/24
Operating SystemCentOS 7CentOS 7CentOS 7
Web ServerNANginxNginx

Install HAProxy on CentOS 7

To ensure that our webservers are properly configured and browsable, open their URLs in a Browser.

Web-01 Homepage 1
Web-01 Homepage 1
Web-02 Homepage 1
Web-02 Homepage 1

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.

Test HAProxy Configuration - Web-01
Test HAProxy Configuration – Web-01

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.

Test HAProxy Configuration - Web-02
Test HAProxy Configuration – Web-02

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.

HAPRoxy Stats
HAPRoxy Stats

We have successfully configured a HTTP Load Balancer with HAProxy.

Read Also: How to install KeepAlived on CentOS 7

If you are new to Linux and facing difficulty in working at Linux Bash prompt. We recommend that, you should read The Linux Command Line, 2nd Edition: A Complete Introduction by William Shotts.

Final Thoughts

Installing HAProxy on CentOS 7 is a straightforward process that can significantly improve the performance and reliability of your web applications. By following this guide, you should now have a functional HAProxy setup ready to manage and distribute traffic efficiently.

If you need further assistance or customized solutions, I offer professional services to help you with your HAProxy and server configuration needs. Feel free to check out my Fiverr gig for more details: Linux System Administrator. Iā€™m here to ensure your system is optimized and running smoothly!