GCloud Compute Guide is still a work in progress; these are active notes from my current R&D.
shell gcloud compute --help
compute engine
.The are split into two major concepts, with GROUP
and COMMAND
.
SYNOPSIS
is gcloud compute GROUP | COMMAND [GCLOUD_WIDE_FLAG ...]
Load balancing on the GCloud compuete platform.
Command to run 3 instances of nginx
with an ingress load balancer.
Shell command for VM that is running nginx inside of a debian
operating system.
gcloud compute instances create www-server-1 \
--zone=us-west1-b \
--tags=network-lb-tag \
--machine-type=e2-medium \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script=start_nginx.sh
start_nginx.sh ->
#!/bin/bash
apt-get update
apt-get install nginx -y
For switching from Nginx to Apache2, replace the nginx
with apache2
.
To check the status on ubuntu
, run the sudo systemctl status nginx
OR sudo systemctl status apache2
.
Example of a Load Balance Template:
The shell below is an example of an instance template that creates the load balance backend template.
gcloud compute instance-templates create lb-backend-template \
--region=us-west1 \
--network=default \
--subnet=default \
--tags=allow-health-check \
--machine-type=e2-medium \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script=start_nginx_script.sh
```
Key concept is : Managed instance groups MIGs
Manage Instance Group for the load balancer:
gcloud compute instance-groups managed create lb-backend-group \
--template=lb-backend-template --size=2 --zone=us-west1-b
Health Check:
gcloud compute firewall-rules create fw-allow-health-check \
--network=default \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
```
Backend-Services for gcloud compute
gcloud compute backend-services create web-backend-service \
--protocol=HTTP \
--port-name=http \
--health-checks=http-basic-check \
--global
Add Instance Group as the Backend to the Backend Service:
gcloud compute backend-services add-backend web-backend-service \
--instance-group=lb-backend-group \
--instance-group-zone=us-west1-b \
--global
Create a URL Map for routing the requests to the default backend services.
gcloud compute url-maps create web-map-http \
--default-service web-backend-service
```
Extra information regarding the URL Map: *** Note: URL map is a Google Cloud configuration resource used to route requests to backend services or backend buckets. For example, with an external HTTP(S) load balancer, you can use a single URL map to route requests to different destinations based on the rules configured in the URL map: Requests for Video go to one backend service. Requests for Audio go to a different backend service. Requests for Images go to a Cloud Storage backend bucket. Requests for any other host and path combination go to a default backend service.
Create a target HTTP proxy to route requests:
gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map-http
Global forwarding rule to route incoming requests to the proxy:
gcloud compute forwarding-rules create http-content-rule \
--address=lb-ipv4-1\
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
Note: A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud load balancer. Learn more about the general understanding of forwarding rules from the Forwarding rule overview Guide.