HAProxy

How to Install and Use HAProxy to Set Up HTTP Load Balancing on Ubuntu 24.04 or Newer

In today’s digital landscape, ensuring that your applications are accessible and performant is critical. Load balancing is one of the best ways to achieve this, distributing incoming traffic across multiple servers to ensure no single server becomes overwhelmed. This guide will walk you through installing and configuring HAProxy, a powerful and widely-used open-source load balancer, to set up HTTP load balancing on Ubuntu 24.04 or newer.

What is HAProxy?

HAProxy (High Availability Proxy) is a fast and reliable solution for load balancing and proxying TCP and HTTP applications. It offers high availability, performance, and advanced traffic management, making it an excellent choice for distributing web traffic across multiple backend servers.

Prerequisites

Before we begin, ensure you have the following:

  1. An Ubuntu 24.04 or newer server instance (can be a VPS).
  2. Root or sudo access to the server.
  3. At least two backend servers to balance traffic across (these can also be on the same machine for testing purposes).

Step 1: Update Your System

Start by updating your package lists and installed packages to ensure you have the latest security updates and software versions.

sudo apt update && sudo apt upgrade -y

Step 2: Install HAProxy

Installing HAProxy is straightforward with Ubuntu’s package manager. Run the following command:

sudo apt install haproxy -y

After the installation is complete, you can check the installed version:

haproxy -v

Step 3: Configure HAProxy

Next, you’ll need to configure HAProxy to set up HTTP load balancing. The configuration file is located at /etc/haproxy/haproxy.cfg. Open it in your preferred text editor:

sudo nano /etc/haproxy/haproxy.cfg

Basic Configuration

Below is a basic configuration example for balancing HTTP traffic between two backend servers. Replace backend1 and backend2 with the actual IP addresses or domain names of your backend servers.

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

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

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

backend http_back
    balance roundrobin
    server backend1 <BACKEND1_IP>:80 check
    server backend2 <BACKEND2_IP>:80 check

Explanation of the Configuration

  • global: This section defines global settings, such as logging and user permissions.
  • defaults: Sets default parameters for all frontend and backend configurations.
  • frontend http_front: Listens for incoming connections on port 80 and directs traffic to the backend.
  • backend http_back: Defines the servers that will handle the requests. The balance roundrobin directive distributes requests evenly across the servers.

Step 4: Enable and Start HAProxy

After saving your configuration, start the HAProxy service and enable it to start on boot:

sudo systemctl start haproxy
sudo systemctl enable haproxy

To check the status of HAProxy, use:

sudo systemctl status haproxy

Step 5: Testing the Load Balancer

To test your load balancer, you can use a web browser or a command-line tool like curl. Open your browser and navigate to your server’s IP address:

http://<YOUR_HAPROXY_IP>

You should see the response from one of your backend servers. Refreshing the page should show responses from both backends, demonstrating that HAProxy is distributing traffic as intended.

Step 6: Accessing the HAProxy Stats Page

You can monitor the performance of your HAProxy instance by accessing the stats page. Navigate to:

http://<YOUR_HAPROXY_IP>/stats

This page provides a visual representation of the status of your backends and their performance metrics.

Conclusion

Setting up HAProxy for HTTP load balancing on Ubuntu 24.04 or newer is a powerful way to enhance the performance and availability of your web applications. By following the steps outlined in this guide, you can ensure that your application can handle varying loads and deliver a seamless experience to your users.

For further customization, refer to the official HAProxy documentation, where you can explore advanced features such as SSL termination, health checks, and more.

Happy load balancing! If you have any questions or need assistance, feel free to reach out to our support team at Greenhost.cloud.