DEV Community

Cover image for Part-72: To Create a Zonal MIG's and Implement a Regional External Load balancer in GCP Cloud
Latchu@DevOps
Latchu@DevOps

Posted on

Part-72: To Create a Zonal MIG's and Implement a Regional External Load balancer in GCP Cloud

Create a Zonal Managed Instance Group (MIGs)

z1


In Google Cloud Platform (GCP), a Managed Instance Group (MIG) is a collection of identical virtual machine (VM) instances managed as a single entity.

When we say zonal managed instance group, it means:

  • The instances in the group are all created within a single zone (e.g., us-central1-a).
  • The group is tied to that zone, so all resources (VMs, disks, etc.) belong there.
  • If that zone has an outage, all VMs in the MIG will be affected.

Step-01: Introduction

  1. Create Regional Health check
  2. Create Firewall rule
  3. Create Instance Template
  4. Create Zonal Managed Instance Group

Step-02: Create Regional Health Check - TCP

z2

# Create Regional Health Check
gcloud compute health-checks create tcp regional-tcp-health-check \
  --port=80 \
  --region=us-central1 
Enter fullscreen mode Exit fullscreen mode

z3


Step-03: Create Firewwall Rules

# Firewall Rule-1: Ingress rule that allows traffic from the Google Cloud health checking systems (130.211.0.0/22 and 35.191.0.0/16).
gcloud compute firewall-rules create vpc3-custom-allow-health-check \
  --network=vpc3-custom \
  --description=Allows\ traffic\ from\ Google\ Cloud\ health\ checking\ systems \
  --direction=ingress \
  --source-ranges=130.211.0.0/22,35.191.0.0/16 \
  --action=allow \
  --rules=tcp:80   
Enter fullscreen mode Exit fullscreen mode

Step-04: Create Instance Template

Make ensure the nginx-webserver.sh file should available in Gcloud shell

#!/bin/bash
sudo apt install -y telnet
sudo apt install -y nginx
sudo systemctl enable nginx
sudo chmod -R 755 /var/www/html
HOSTNAME=$(hostname)
sudo echo "<!DOCTYPE html> <html> 
<body style='background-color:rgb(250, 210, 210);'> 
<h1>Welcome to Latchu@DevOps - WebVM App1 </h1> 
<p><strong>VM Hostname:</strong> $HOSTNAME</p> 
<p><strong>VM IP Address:</strong> $(hostname -I)</p> 
<p><strong>Application Version:</strong> V1</p> 
<p>Google Cloud Platform - Demos</p> 
</body></html>" | sudo tee /var/www/html/index.htm
Enter fullscreen mode Exit fullscreen mode

Create a Instance Template

z4

# us-central1: Create Instance Template
gcloud compute instance-templates create it-rlbdemo-us-central1 \
   --region=us-central1 \
   --network=vpc3-custom \
   --subnet=us-central1-subnet \
   --tags=lb-tag \
   --machine-type=e2-micro \
   --metadata-from-file=startup-script=nginx-webserver.sh
Enter fullscreen mode Exit fullscreen mode

z5


Step-05: Create Zonal Managed Instance Groups

z6

# Zone: us-central1-a: Create Managed Instance Groups in the Zone
gcloud compute instance-groups managed create zmig-us-1 \
    --zone us-central1-a \
    --size 2 \
    --template it-rlbdemo-us-central1 

# Zone: us-central1-c: Create Managed Instance Groups in the Zone
gcloud compute instance-groups managed create zmig-us-2 \
    --zone us-central1-c \
    --size 2 \
    --template it-rlbdemo-us-central1
Enter fullscreen mode Exit fullscreen mode

z7


Create a Google Cloud - Regional Application Load Balancer HTTP

Step-01: Introduction

  • Pre-requisite-1: Create Instance Templates, Create Managed Instance Groups - We created already
  • Create Regional Application Load Balancer - HTTP

Step-02: Pre-requisite-2: Reserve proxy-only subnet exclusively for regional load balancing proxies.

z8

  • Goto VPC Networks -> vpc3-custom -> SUBNETS -> ADD SUBNET
  • Name: lb-subnet-proxyonly-us-central1
  • Description: lb-subnet-proxyonly-us-central1
  • Region: us-central1
  • Purpose: Regional Managed Proxy
  • Role: Active
  • IPv4 Range: 10.129.0.0/23
  • Click on ADD

z9


Step-03: Pre-requisite-3: Create Firewall rule

fw-allow-proxy-only-subnet: An ingress rule that allows connections from the proxy-only subnet to reach the backends.

z10

# Firewall Rule: Allow connections from Proxy Only Subnets for All Instances in the network
gcloud compute firewall-rules create vpc3-custom-allow-proxy-only-subnet \
    --network=vpc3-custom \
    --action=allow \
    --direction=ingress \
    --source-ranges=10.129.0.0/23 \
    --rules=tcp:80,tcp:443,tcp:8080
Enter fullscreen mode Exit fullscreen mode

z11

Step-04: Pre-requisite-4: Create Regional Health Check - HTTP

z12

# Create Regional Health Check
gcloud compute health-checks create http regional-http-health-check --port=80 --region=us-central1 
Enter fullscreen mode Exit fullscreen mode

Step-05: Create Regional Application Load Balancer - HTTP

z13

  • Go to Network Services -> Load Balancing -> CREATE LOAD BALANCER
  • Select Application Load Balancer (HTTP/S): START CONFIGURATION
  • Internet facing or internal only: From Internet to my VMs or serverless services
  • Global or Regional: Regional external Application Load Balancer
  • Load Balancer name: regional-lb-external-http
  • Region: us-central1
  • Network: vpc3-custom

Frontend Configuration

  • Click on ADD FRONTEND IP AND PORT
  • Name: frontend-http
  • Description: frontend-http
  • Protocol: HTTP
  • IP Version: IPv4
  • IP Address: regional-lb-ip1 CREATE NEW EXTERNAL STATCI IP
  • Port: 80
  • Click on DONE

z14

Backend Configuration

  • CLick on CREATE A BACKEND SERVICE
  • Name: regional-mybackend-svc1
  • Description: regional-mybackend-svc1
  • Backend type: Instance Group
  • Protocol: HTTP
  • Named Port: webserver80 (AUTO-POPULATED WHEN BACKEND IS SELECTED AS mig1-lbdemo)
  • Timeout: 30
  • BACKENDS

z15

Instance Group: zmig-us-1
Port Numbers: 80
REST ALL LEAVE TO DEFAULTS
Click on DONE
Instance Group: zmig-us-2
Port Numbers: 80
REST ALL LEAVE TO DEFAULTS
Click on DONE
Enter fullscreen mode Exit fullscreen mode

z16

  • Health Check: regional-http-health-check
  • Security: Cloud Armor backend security policy: NONE
  • Click on CREATE

Routing Rules

  • Mode: Simple host and path rule
  • REST ALL LEAVE TO DEFAULTS

Review and Finalize

  • Review all settings
  • Click on CREATE

z17


Step-06: Verify Load Balancer

  • Go to Network Services -> Load Balancing -> global-lb-external-http
  • Review the Tabs
LOAD BALANCERS
BACKENDS
FRONTENDS
Enter fullscreen mode Exit fullscreen mode

Step-07: Access Application using LB IP on browser

Important Note: WAIT FOR 3 to 5 Minutes before Load Balancer is fully operational

http://34.135.38.113/
Enter fullscreen mode Exit fullscreen mode

z18

Step-08: Delete the Loadbalancer

  • Delete the Load balancer
  • Don't delete the backend service and health check as we are going to use upcoming demo

z19


🌟 Thanks for reading! If this post added value, a like ❤️, follow, or share would encourage me to keep creating more content.


— Latchu | Senior DevOps & Cloud Engineer

☁️ AWS | GCP | ☸️ Kubernetes | 🔐 Security | ⚡ Automation
📌 Sharing hands-on guides, best practices & real-world cloud solutions

Top comments (0)