Showing posts with label loadbalancing. Show all posts
Showing posts with label loadbalancing. Show all posts

Sunday, March 20, 2022

AWS Compute - ALB (Application Load Balancing)




Application Load Balancer

A load balancer serves as the single point of contact for clients. The load balancer distributes incoming application traffic across multiple targets, such as EC2 instances, in multiple Availability Zones. This increases the availability of your application. You add one or more listeners to your load balancer.

Step 1: Create 2 EC2 instances with User Data to install httpd.
User Data script:

#!/bin/bash
sudo yum update -y
sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd

Step 2: Connect to first EC2 instance and run below commands
cd /var/www/html
mkdir orders            (this is case-sensitive! will reflect in other steps)
cd orders
echo "<h1> Orders App </h1> >> index.html

Step 3: Connect to second EC2 instance and run below commands
cd /var/www/html
mkdir payments        (this is case-sensitive! will reflect in other steps)
cd payments
echo "<h1> Payments App </h1> >> index.html

Step 4: Define the target groups which helps to route request to appropriate application.
Select Target Group from Load Balancer Menu and Define below properties

Target Type : Instances
Target Group Name: OrderTG
Protocol HTTP: 80
VPC: default VPC
Protocol Version: HTTP1
Health check Path: orders/index.html

Click on Next button
Register Targets
Select first EC2 instance
Click on Include Pending Below
and Click on Create Target Group

Select Second Target Group from Load Balancer Menu and Define below properties

Target Type : Instances
Target Group Name: PaymentsTG
Protocol HTTP: 80
VPC: default VPC
Protocol Version: HTTP1
Health check Path: payments/index.html

Click on Next button
Register Targets
Select second EC2 instance
Click on Include Pending Below
and Click on Create Target Group

Step 5: Create Application Load Balancer

Click on Create Load balancer Button
Select Application Load Balancer and Click on Create
Load Balancer Name: ALB
Mappings: Select all the AZs
VPC: default VPC
Security Group: WebserverSG
Default Listener : Port: 80 
Default action: OrdersTG

Click on Create Load Balancer Button

Step 6: Load Balancer should be created and it should have a DNS Name by which you are connecting to the applications. Copy the DNS name and put it in the browser, you should be able to see the default apache web page which is implemented in the First EC2 instance (cause default action is OrdersTG).

Step 7: Select Listener tab for ALB and click on view/edit rules link

Click on + symbol on this page and then Insert Rule link
Set below properties for the rule
Path : /orders*
Forward to : OrdersTG
and Click on Save

Click on + symbol on this page and then Insert Rule link
Set below properties for the rule
Path : /payments*
Forward to : PaymentsTG
and Click on Save

Step 8: Go to browser and put <DNS_name_of_ALB>/orders and 
<DNS_name_of_ALB>/payments it should redirect to respective application.


AWS Compute - ELB (Elastic Load Balancing)


Elastic Load Balancing

Elastic Load Balancing automatically distributes your incoming traffic across multiple targets, such as EC2 instances, containers, and IP addresses, in one or more Availability Zones.

It monitors the health of its registered targets and routes traffic only to the healthy targets.


Classic Load Balancer

1. Create 2 EC2 instances with User Data to install httpd.

    In the User Data, put in this script:

#!/bin/bash

sudo yum update -y

sudo yum install -y httpd

sudo systemctl start httpd

sudo systemctl enable httpd

2. Connect to first EC2 instance and run below commands

     echo "<h1>Server 1 </h1>" >> /var/www/html/index.html

3. Connect to second Ec2 instance and run below command

   echo "<h1>Server 2 </h1>" >> /var/www/html/index.html

4. Go to Load Balancing and Select Load Balancers

5. Click on Create Load Balancer and Select Classic Load Balancer and Click on Create button.

6. Define LoadBalancer Properties.

  • Load Balancer Name:  CLB
  • The rest of the properties leave as it is, I am creating in the default VPC and Load Balancer Protocol is HTTP because in my EC2 instances the service is running on Port 80 with HTTP protocol.
  • Click on Next button

7. Select the security Group :- Webserver (Any SG which has port 80 opened) and click on Next

8. No Change on this page, you may see a warning that the application is using insecure protocol HTTP click Next button.

9. Configure Health Check for EC2 instances and Click on Next button

10. Add EC2 instances and Add both EC2 instances and click on Next Button

11. Tags No Change and Review and Create .

12. Once CLB is created then it will have it defined properties, You can access the CLB using its DNS.

13 Use DNS Name on browser and check it will be connected to server1 and server2 frequently.


Fluentd

Open-source log data collector > why logs? - for compliance (auditing, company, business) - for security (transparency, monitoring, admin...