HA Proxy stands for High Availability Proxy written on C. It is a free and open source TCP/HTTP load balancer and proxy solution for TCP and HTTP based applications. HA Proxy allows you to balance incoming TCP / HTTP Traffic by distributing load across backend server using different criteria.
The use of HA Proxy is to provide fault tolerance and high availability in case when one node is getting too many concurrent requests. It is used by most famous web sites like GitHub, Stack Overflow and Tumbler.
HA Proxy allows an application to restart automatically or reroute work to another server in the event of a failure. HA Proxy is a powerful, high power, reliable and secure load balancer.
In his tutorial we will install and configure HA Proxy on CentOS 8.
Install HA Proxy:
yum -y install haproxy
Configure HA Proxy:
Please note that the following configuration is for Application that use TCP connection to connect to the destination machine / Application.
Ha proxy Configuration involves 4 steps:
- global settings: First, we use to set process-wide parameters.
- defaults: Secondly, we defaults use to set default parameters for all other sections.
- frontend: In this section we define how we access HA Proxy externally to enable access to the backend.
- backend: Used to define a set of servers to which the proxy will connect to forward incoming connections.
Now, create a directory named run in /etc/haproxy for stats socket.
Open HA proxy configuration file with the following command:
Remove the default configuration present in file.
Now, add the following configuration:
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /etc/haproxy/run/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon defaults log global option dontlognull option tcplog mode tcp timeout connect 5000 timeout client 50000 timeout server 50000 listen stats bind 192.168.7.38:3000 mode http maxconn 10 timeout queue 300s stats enable stats refresh 10s stats show-node stats auth haproxyadmin:haproxyadmin stats uri /haproxy frontend server_front bind *:9909 default_backend server_back backend server_back balance roundrobin server S1 192.168.189.129:9909 check server S2 192.168.189.130:9909 check
Please note that the above configuration is for TCP connection or Application where TCP connection with server is required. You can also do the configuration for HTTP applications by replacing tcp with http in above configuration.
Start and Enable HA Proxy:
systemctl start haproxy.service systemctl enable haproxy.service systemctl status haproxy.service
Open HA Proxy url to see the connections statistics.