How to Set Up HAProxy Load Balancer on Linux

Sometimes one server just isn’t enough. I learned that the hard way when my little WordPress site crashed because too many people tried to visit at the same time. That’s when I found out about load balancing.

In simple words, load balancing means sharing work between computers. When lots of users try to visit your website, a load balancer makes sure no single server gets too tired. It’s kind of like having more cashiers open at the grocery store when there’s a long line. No one likes waiting.

In this post, I’ll show you how I set up a free and powerful tool called HAProxy on my Linux server to handle that job. Don’t worry—I’ll walk you through every step, and I’ll keep it simple.


What is HAProxy?

HAProxy stands for High Availability Proxy. It’s a program that helps you send traffic (like people visiting your website) to more than one server. It listens for requests and picks which server to send them to.

Think of it like a traffic cop. If one road is full, it sends the next car to a clearer road. That’s what HAProxy does for web servers.

I use it when I run two or more web servers that serve the same website. This way, if one server is having a nap (or just down), the other one keeps working.


Why Should You Use HAProxy?

Here are some reasons I like HAProxy:

  • It’s lightweight and fast.
  • It’s open source (a fancy way of saying it’s free).
  • It can handle lots of connections at the same time.
  • It supports both HTTP (your usual web traffic) and TCP (other kinds of traffic, like databases).

Still not sure if you need it? Ask yourself:

  • Do I have more than one web server?
  • Is my website getting slow during traffic spikes?
  • Do I want a backup server ready when the main one fails?

If you answered “yes” to any of these, HAProxy can help you.


What You’ll Need

Before we start, you’ll need a few things ready:

  • A Linux server (I used Ubuntu, but CentOS or Debian also work).
  • Two or more backend servers that run your website or app.
  • Access to the terminal and sudo permissions (to run commands as an admin).

Also, a cup of coffee or tea wouldn’t hurt.


Step-by-Step: Installing HAProxy

Step 1: Install HAProxy

On your Linux server, open the terminal. Then type:

sudo apt update
sudo apt install haproxy

This works on Ubuntu or Debian. If you’re using CentOS, try:

sudo yum install haproxy

After it’s done, HAProxy is installed. But it’s not doing anything yet.


Step 2: Enable HAProxy

To make HAProxy start automatically when your server boots, edit this file:

sudo nano /etc/default/haproxy

Look for this line:

ENABLED=0

Change it to:

ENABLED=1

Press Ctrl + O to save and Ctrl + X to exit.


Step 3: Configure HAProxy

Now, the fun part—setting up your config file.

Open the file:

sudo nano /etc/haproxy/haproxy.cfg

This file controls how HAProxy works.

Let me show you a basic example. Imagine I have two backend servers running my website:

frontend mywebsite
    bind *:80
    default_backend web_servers

backend web_servers
    balance roundrobin
    server server1 192.168.1.101:80 check
    server server2 192.168.1.102:80 check

Let me explain it line by line:

  • frontend mywebsite: This is the “front door” where HAProxy listens.
  • bind *:80: It listens on port 80 (the default web port).
  • default_backend: This says where to send the traffic.
  • backend web_servers: These are your real servers.
  • balance roundrobin: Traffic is shared evenly like dealing cards.
  • server server1/server2: These are the two backend servers with their IP addresses.

Step 4: Restart HAProxy

After editing, restart HAProxy:

sudo systemctl restart haproxy

You can check if it’s running:

sudo systemctl status haproxy

If you see “active (running),” then you’re good to go.

Now try visiting your website in your browser. Refresh it a few times and watch how it switches between servers. You may need to use different content on each server to see the change.


Step 5: Monitor with the HAProxy Stats Page

You can also turn on a web page to watch your HAProxy in action. Add this to the end of your config file:

listen stats
    bind *:8080
    stats enable
    stats uri /stats
    stats refresh 10s

Restart HAProxy again:

sudo systemctl restart haproxy

Then go to:

http://your-server-ip:8080/stats

You’ll see a simple dashboard that shows which servers are up or down, and how much traffic they’re getting.


Benefits I Noticed After Using HAProxy

After setting this up, here’s what I saw:

  • My website was faster when lots of people visited.
  • If one server had a problem, the other one still worked.
  • I could add or remove backend servers without turning off my site.

It felt like upgrading from a tricycle to a bicycle—with training wheels.


A Few Tips from My Setup

Here are some helpful things I wish I knew earlier:

  • Keep backups of your config file. One typo can break HAProxy.
  • Use health checks (like check in the config) so HAProxy knows when a server goes down.
  • Try logging to see how traffic moves. It helps with debugging.

Three Common HAProxy Load Balancing Methods

HAProxy supports a few ways to share traffic. Each one is like a different way to share pizza slices:

  • Round-robin: Give each server a turn. Simple and fair.
  • Least connections: Send new traffic to the server with the fewest users.
  • Source IP: Stick the same visitor to the same server every time.

You can pick whichever fits your needs best.


How HAProxy Compares to Other Load Balancers

There are other tools like Nginx or Apache that also do load balancing.

Here’s how HAProxy stacks up:

Feature HAProxy Nginx
Speed Very fast Fast
Easy to set up Yes Yes
Best for Load balancing Web + load balance
Uses a lot of CPU? No No
Cool name? Yes (ha ha) Also yes

I use Nginx as a web server, but I prefer HAProxy for load balancing. It’s made just for that job.


Wrap-Up (But Not a Goodbye)

Setting up HAProxy helped me stop worrying about server crashes. It was easier than I thought, and it gave me more control. Now, when I launch something new, I feel like I have a safety net.

If you’re running more than one server, HAProxy is a tool worth trying. You don’t need to be a genius to use it—I figured it out, and I once thought “load balancer” was a gym machine.

Have you tried HAProxy before? Or maybe you use something else? Let me know what works best for you.

 

 

Leave a Reply