How to Setup HAProxy for High Availability with Keepalived

How to Setup HAProxy for High Availability with Keepalived

In server administration, ensuring high availability of services is a crucial task. One common challenge that webmasters and server administrators often face is how to effectively balance the load of network traffic and ensure that no single server becomes a bottleneck. This is where HAProxy and Keepalived come into play.

HAProxy is a free, open-source software that provides a high availability load balancer and proxy server for TCP and HTTP-based applications. It is widely used for its high performance and reliability, and it offers a wealth of features such as SSL support, HTTP compression, health checks, and more. On the other hand, Keepalived is a routing software written in C that provides simple and robust facilities for load balancing and high availability to Linux and Unix-like servers.

HAProxy High Availability Keepalived

The combination of HAProxy and Keepalived can provide a robust, high-performance, and highly available load balancing solution for your servers. This setup can help distribute network or application traffic across a number of servers, enhancing the overall performance, improving response times and increasing redundancy in case of server failure.

In this tutorial, we will guide you through the process of setting up HAProxy for high availability with Keepalived on your dedicated, VPS, or cloud hosting machines. This guide will be a step-by-step walkthrough, ensuring that even beginners can follow along.

Let’s get started.

Step 1: Installing HAProxy

The first step in setting up HAProxy for high availability with Keepalived is to install HAProxy on your server. Here’s how to do it:

sudo apt-get update
sudo apt-get install haproxy

These commands will update your server’s package list and then install HAProxy.

Step 2: Configuring HAProxy

After installing HAProxy, the next step is to configure it. The main configuration file for HAProxy is located at /etc/haproxy/haproxy.cfg. You can open this file with a text editor of your choice.

sudo nano /etc/haproxy/haproxy.cfg

In this file, you can define the settings for your load balancer, such as the frontend (where HAProxy listens for connections), the backend (where HAProxy forwards the connections), and any other settings that are relevant to your specific setup.

For instance, a basic configuration might look like this:

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server1 192.168.1.2:80 check
   server server2 192.168.1.3:80 check

In this example:

  • The global section contains settings that apply globally across all HAProxy instances.
  • The defaults section contains default settings that apply to all frontend and backend sections.
  • The frontend section, named http_front, is where HAProxy listens for connections. In this case, it’s listening on all interfaces (*) on port 80.
  • The backend section, named http_back, is where HAProxy forwards the connections. In this case, it’s using a round-robin load balancing algorithm to distribute incoming requests to two servers (server1 and server2), both running on port 80.
See also  How to Install HAProxy on CentOS (7, 8 or 9)

Remember to replace the IP addresses and port numbers with those of your actual servers. After editing the configuration file, save and close it. Then, restart HAProxy for the changes to take effect:

sudo systemctl restart haproxy

Step 3: Installing Keepalived

After setting up HAProxy, the next step is to install Keepalived. This can be done by running the following commands:

sudo apt-get update
sudo apt-get install keepalived

These commands will update your server’s package list and then install Keepalived.

Step 4: Configuring Keepalived

Once Keepalived is installed, you need to configure it. The main configuration file for Keepalived is located at /etc/keepalived/keepalived.conf. You can open this file with a text editor of your choice.

sudo nano /etc/keepalived/keepalived.conf

In this file, you can define the settings for your high availability setup, such as the virtual IP address, priority of the server, and the check script to monitor the status of HAProxy.

For instance, a basic configuration might look like this:

vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.1
    }
    track_script {
        chk_haproxy
    }
}

In this example:

  • The vrrp_script section defines a script named chk_haproxy that checks the status of HAProxy every 2 seconds.
  • The vrrp_instance section defines a VRRP instance named VI_1. This instance is set to the MASTER state, uses the eth0 network interface, and has a virtual router ID of 51.
  • The priority is set to 101, which means this server will become the master server if the current master fails.
  • The advert_int is the advertisement interval, which is set to 1 second.
  • The authentication section defines the authentication type and password for the VRRP instance.
  • The virtual_ipaddress is the virtual IP address that will be used by the master server.
  • The track_script section specifies that the chk_haproxy script should be used to monitor the status of HAProxy.
See also  How to Setup HAProxy as Load Balancer for Apache on CentOS

Remember to replace the network interface, virtual router ID, priority, authentication password, and virtual IP address with those of your actual setup. After editing the configuration file, save and close it. Then, restart Keepalived for the changes to take effect:

sudo systemctl restart keepalived

Step 5: Starting and Enabling HAProxy and Keepalived

After configuring both HAProxy and Keepalived, you need to start and enable them so that they start automatically at boot time. This can be done by running the following commands:

sudo systemctl start haproxy
sudo systemctl enable haproxy
sudo systemctl start keepalived
sudo systemctl enable keepalived

These commands will start HAProxy and Keepalived and enable them to start at boot time.

Commands Mentioned:

  • sudo apt-get update – Updates the package list on your server
  • sudo apt-get install haproxy – Installs HAProxy on your server
  • sudo nano /etc/haproxy/haproxy.cfg – Opens the HAProxy configuration file in a text editor
  • sudo apt-get install keepalived – Installs Keepalived on your server
  • sudo nano /etc/keepalived/keepalived.conf – Opens the Keepalived configuration file in a text editor
  • sudo systemctl start haproxy – Starts the HAProxy service
  • sudo systemctl enable haproxy – Enables the HAProxy service to start at boot time
  • sudo systemctl start keepalived – Starts the Keepalived service
  • sudo systemctl enable keepalived – Enables the Keepalived service to start at boot time

Conclusion

In this tutorial, we’ve walked you through the process of setting up HAProxy for high availability with Keepalived on your dedicated, VPS, or cloud hosting machines. We started by installing HAProxy, followed by its configuration. We then installed and configured Keepalived. Finally, we started and enabled both services to ensure they start automatically at boot time.

By following these steps, you’ve set up a robust, high-performance, and highly available load balancing solution for your servers. This setup will help distribute network or application traffic across a number of servers, enhancing the overall performance, improving response times, and increasing redundancy in case of server failure.

See also  How to Configure HAProxy with SSL, HTTP/2, and GeoIP

Remember, the key to a successful high availability setup is regular monitoring and maintenance. Always keep an eye on your server’s performance and make necessary adjustments as needed.

If you’re interested in exploring more about high availability, load balancing, and server administration, feel free to check out other articles on our website, for instance, Varnish Explained, Squid Explained, and many others.

We hope this guide has been helpful. If you have any questions or run into any issues, feel free to leave a comment below. We’ll do our best to assist you.

FAQ

  1. What is the main function of HAProxy?

    HAProxy is a free, open-source software that provides a high availability load balancer and proxy server for TCP and HTTP-based applications. It is widely used for its high performance and reliability.

  2. What is the role of Keepalived in this setup?

    Keepalived is a routing software that provides simple and robust facilities for load balancing and high availability to Linux and Unix-like servers. In this setup, it is used in conjunction with HAProxy to ensure high availability and load balancing.

  3. What types of servers can this setup be used on?

    This setup can be used on various types of servers, including dedicated servers, Virtual Private Servers (VPS), and cloud hosting machines. The choice of server depends on your specific needs and resources.

  4. What are the benefits of using HAProxy and Keepalived together?

    Using HAProxy and Keepalived together provides a robust, high-performance, and highly available load balancing solution. This setup helps distribute network or application traffic across a number of servers, enhancing the overall performance, improving response times, and increasing redundancy in case of server failure.

  5. What should I do if I encounter issues during the setup?

    If you encounter any issues during the setup, it’s recommended to check the configuration files for any errors. You can also check the system logs for any error messages. If you’re still unable to resolve the issue, consider seeking help from online communities or professional services.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *