Configuring Load Balancer Using Ansible Playbook

Configuring Load Balancer Using Ansible Playbook

Mar 28, 2023ยท

3 min read

Play this article

๐Ÿ“ Introduction:

In today's world, with the increasing number of users accessing applications, it has become essential to ensure that the application's load is distributed efficiently across multiple servers. This is where load balancers come into play. Load balancers help in distributing traffic between multiple servers, which not only helps in improving the reliability of the application but also aids in scaling it up. In this blog post, we will explore how to use Ansible to configure and manage load balancers, such as HAProxy.

๐Ÿ”น Step 1: Installing Ansible

Before we start configuring our load balancer, we need to install Ansible. Ansible can be installed on any Linux distribution, and it requires Python 2.7 or Python 3.5 or later.

To install Ansible on Ubuntu, run the following command:

sudo apt update
sudo apt install ansible

๐Ÿ”น Step 2: Configuring HAProxy

HAProxy is an open-source load balancer that can be used to distribute traffic between multiple servers. To configure HAProxy using Ansible, we need to create an Ansible playbook that defines the desired state of our load balancer.

---
- name: Install and configure HAProxy
  hosts: loadbalancer
  become: yes
  tasks:
    - name: Install HAProxy
      apt:
        name: haproxy
        state: present
    - name: Configure HAProxy
      template:
        src: templates/haproxy.cfg.j2
        dest: /etc/haproxy/haproxy.cfg
      notify:
        - restart haproxy
  handlers:
    - name: restart haproxy
      service:
        name: haproxy
        state: restarted

In this playbook, we first install HAProxy using the apt module. We then configure HAProxy by using a Jinja2 template to generate the haproxy.cfg configuration file. Finally, we define a handler to restart the HAProxy service when the configuration file changes.

๐Ÿ”น Configuration file:

The template file haproxy.cfg.j2 contains the configuration for our load balancer. Here is an example configuration that distributes traffic between two servers:

global
  log /dev/log local0
  log /dev/log local1 notice
  chroot /var/lib/haproxy
  user haproxy
  group haproxy
  daemon

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

frontend http_front
  bind *:80
  default_backend http_back

backend http_back
  balance roundrobin
  server web1 192.168.0.101:80 check
  server web2 192.168.0.102:80 check

In this configuration file, we define a frontend that listens on port 80 and forwards traffic to a backend that distributes traffic between two servers with IP addresses 192.168.0.101 and 192.168.0.102.

๐Ÿ”น Step 3: Running the playbook

After creating our playbook and configuration files, we can run the playbook using the ansible-playbook command:

ansible-playbook -i inventory.ini haproxy.yml

In this command, -i inventory.ini specifies the inventory file that contains the IP addresses of our load balancer, and haproxy.yml is the name of our playbook file.

After executing this command, Ansible will configure HAProxy on our load balancer, and traffic will be distributed between the two servers specified in our configuration file.

๐Ÿ“ Conclusion:

Load balancers have become a crucial component for efficient application delivery. Load balancers distribute traffic across multiple servers, improving reliability and scalability. With Ansible, we can easily configure and manage load balancers like HAProxy or Nginx. In this blog post, we learned how to use Ansible to configure HAProxy by creating an Ansible playbook that defines the desired state of our load balancer. We also explored the configuration file for HAProxy and how to run the playbook to configure the load balancer. By using Ansible, we can automate the process of configuring and managing load balancers, saving time and improving efficiency in application delivery.

โšœ Follow Prasad Suman Mohan for many such contents:

Did you find this article valuable?

Support Prasad Suman Mohan by becoming a sponsor. Any amount is appreciated!

ย