https://github.com/pratikshinde55/ansible-loadbalancer-webserver-configuration
Ansible-playbook for Configure HAProxy Load Balancer and register Backend Httpd to Load Balancer where put Webpage and this Webpage access by using Load Balancer IP & port no.
https://github.com/pratikshinde55/ansible-loadbalancer-webserver-configuration
ansible ansible-playbook automation aws-ec2 haproxy-loadbalancer jinja2-template round-robin-algorithm
Last synced: 3 months ago
JSON representation
Ansible-playbook for Configure HAProxy Load Balancer and register Backend Httpd to Load Balancer where put Webpage and this Webpage access by using Load Balancer IP & port no.
- Host: GitHub
- URL: https://github.com/pratikshinde55/ansible-loadbalancer-webserver-configuration
- Owner: Pratikshinde55
- Created: 2024-03-08T13:33:28.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-14T10:42:08.000Z (3 months ago)
- Last Synced: 2025-02-14T11:35:22.964Z (3 months ago)
- Topics: ansible, ansible-playbook, automation, aws-ec2, haproxy-loadbalancer, jinja2-template, round-robin-algorithm
- Language: Jinja
- Homepage:
- Size: 76.2 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Configuration of Load balancer & webserver using Ansible Automation
- Refer:
Manual way or using Ad hoc command Configuration of Load balancer & webserver using Ansible Automation in given link:
[Load-Balancer-manual](https://github.com/Pratikshinde55/Load-Balancer.git)## 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

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

### 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
### Step-2: [Create Inventory, In Inventory made two groups "Web" group for webserver nodes & "lb" group for LoadBalancer node]
vim /etc/ansible/hosts
We can check ansible list of hosts using following Command:

### 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. Task is Deploy Webpage index.php to destination **"/var/www/html/"**,
4. Task for start httpd service.
vim webserver.yml
### Step-4: [Run Webserver.yml playbook - this playbook do Configuration in Web group where Two nodes]
ansible-playbook webserver.yml
### 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
- 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 servicevim lb.yml

- 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

## 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

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