Skip to content

Latest commit

 

History

History
110 lines (60 loc) · 5.17 KB

File metadata and controls

110 lines (60 loc) · 5.17 KB

Configuration of Load balancer & webserver using Ansible Automation

image

Manual way or using Ad hoc command Configuration of Load balancer & webserver using Ansible Automation in given link: Load-Balancer-manual

Using Ansible Automation (playbook):

For this Configuration i take four instances, Amazon linux EC2 instances.

One for Ansible-Master node : 54.197.11.139

Two Instances for webserver (Backend): Public IP backend 1- 54.159.221.239,Backend 2- 44.202.88.227

One for Load Balancer (Frontend):lb: 18.206.228.124

Screenshot 2024-03-08 185237

In ansible master node created 2 playbooks One for Loadbalancer and One for Webserver & One jinja template file and one webpage.

Screenshot 2024-03-08 191538

Step-1: [In master node 1st create Webpage(index.php): This webpage index.php is deploy to webserver which can client access from browser]

 cat > index.php

Screenshot 2024-03-08 191718

Step-2: [Create Inventory, In Inventory made two groups "Web" group for webserver nodes & "lb" group for LoadBalancer node]

 vim /etc/ansible/hosts

Screenshot 2024-03-08 192439

We can check ansible list of hosts using following Command:

Screenshot 2024-03-08 192031

Step-3: [Now Create Webserver(Backend) playbook and here hosts for webserver playbook is "web" group, in web group two instances are kept]

In this ansible-playbook:

  1. Task install Httpd package,

  2. Task is Install php package which is because my Webpage in the form of '.php',

  3. Taskis Deploy Webpage index.php to destination "/var/www/html/",

  4. Task for start httpd service.

    vim webserver.yml
    

Screenshot 2024-03-08 191743

Step-4: [Run Webserver.yml playbook - this playbook do Configuration in Web group where Two nodes]

 ansible-playbook webserver.yml

Screenshot 2024-03-08 192223

Step-5: [Load Balancer need Registration of backend nodes]

Now for this, create jinja file "pratik.cfg.j2" which pass registration information to LoadBalancer playbook "lb":

  vim pratik.cfg.j2

Screenshot 2024-03-08 191830

  • Note:

here we use Round Robin Algorithm that work as Client will connect to Web Server through Load balancer, 1st connect to Web 1 then Web 2 and next Web 3 then again go to 1. here also bind the port number as 8080.

Step-6: [Create Load balancer Playbook]

Create Load balancer Playbook "lb.yml", add lb group where only one instance for lb IP:-18.206.228.124

In this playbook:-

  1. task for install haproxy package It is loadBalancer that i used,

  2. task for rigistration of backend webservre to Load balncer for this pratik.cfg.j2 jinja template used , In haproxy Load balancer configuration file for load balancer is kept in "/etc/haproxy/haproxy.cfg"

  3. task for Start haproxy service

     vim lb.yml
    

Screenshot 2024-03-08 191851

  • Note:

HAproxy is one of the product of load balancer, HAproxy is a high-performance, open source load balancer & reverse proxy for HTTP and TCP.

Step-7: [Run Load balancer]

Run Load balancer "lb.yml" playbook , This do load balncer configuration on lb group:

ansible-playbook lb.yml

Screenshot 2024-03-08 192329

Configuration of Load balancer & WebServer done successfully:

Check on Google or Browser Publich IP load balancer : port no. that bind:

Example:- http://18.206.228.124:8080

Screenshot 2024-03-08 193442

  • Note:

Load balancer node Inbound rules ->> All trafic , Anywhere ( remove Firewall )

Screenshot 2024-03-08 185340