2020-05-14 Set Up Network and HTTP Load Balancers

An instance template is a resource that you can use to create Virtual Machine (VM) instances and managed instance groups (MIGs).
A managed instance group using the instance template to create a cluster

A target pool allows a single access point to all the instances in a group and is necessary for load balancing.

To create the Nginx web server clusters, create the following:

A startup script to be used by every virtual machine instance to setup Nginx server upon startup
An instance template to use the startup script
A target pool
A managed instance group using the instance template

$ gcloud compute instance-templates create nginx-template --metadata-from-file start-script=startup.sh
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/global/instanceTemplates/nginx-template].
NAME            MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
nginx-template  n1-standard-1               2020-05-15T12:36:49.558-07:00
$ 
$ gcloud compute target-pools create nginx-pool
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/regions/us-central1/targetPools/nginx-pool].
NAME        REGION       SESSION_AFFINITY  BACKUP  HEALTH_CHECKS
nginx-pool  us-central1  NONE
$ 
$ gcloud compute instance-groups managed create nginx-group --base-instance-name nginx --size 2 --template nginx-template --target-pool nginx-pool
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/zones/us-central1-a/instanceGroupManagers/nginx-group].
NAME         LOCATION       SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE  AUTOSCALED
nginx-group  us-central1-a  zone   nginx               0     2            nginx-template     no
$ 
$ gcloud compute instances list
NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
nginx-2jk3  us-central1-a  n1-standard-1               10.128.0.2   35.224.92.57  RUNNING
nginnginx-group  us-central1-a  zone   nginx               0     2            nginx-template     no
$ 
$ gcloud compute firewall-rules create www-firewall --allow tcp:80
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/global/firewalls/www-firewall].
Creating firewall...done.
NAME          NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
www-firewall  default  INGRESS    1000      tcp:80        False
$ 

instance group 是target pool的经纪人。target pool是个组合。

Network load balancing allows you to balance the load of your systems based on incoming IP protocol data, such as address, port, and protocol type.You also get some options that are not available, with HTTP(S) load balancing. For example, you can load balance additional TCP/UDP-based protocols such as SMTP traffic. And if your application is interested in TCP-connection-related characteristics, network load balancing allows your app to inspect the packets, where HTTP(S) load balancing does not.

Create an L3 network load balancer (forwarding-rules) targeting your instance group:

$ gcloud compute forwarding-rules create nginx-lb --region us-central1 --ports 80 --target-pool nginx-pool
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/regions/us-central1/forwardingRules/nginx-lb].
$ 
$ gcloud compute forwarding-rules list
NAME      REGION       IP_ADDRESS      IP_PROTOCOL  TARGET
nginx-lb  us-central1  104.198.185.20  TCP          us-central1/targetPools/nginx-pool
$ 

HTTP(S) load balancing provides global load balancing for HTTP(S) requests destined for your instances. You can configure URL rules that route some URLs to one set of instances and route other URLs to other instances. Requests are always routed to the instance group that is closest to the user, provided that group has enough capacity and is appropriate for the request. If the closest group does not have enough capacity, the request is sent to the closest group that does have capacity.

Create a HTTP(s) Load Balancer

create http-health-checks.Health checks verify that the instance is responding to HTTP or HTTPS traffic
map a port name to the relevant port for the instance group
create a backend service
add instance group to the backend service
create a default URL map that directs all incoming requests to all your instances
create a target HTTP proxy to route requests to your URL map
create a global forwarding rule to handle and route incoming requests

instance group <--> backend service <--> url map <--> target-http-proxies <--> forwarding-rules

$ gcloud compute http-health-checks create http-basic-check
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/global/httpHealthChecks/http-basic-check].
NAME              HOST  PORT  REQUEST_PATH
http-basic-check        80    /
$ 
$ gcloud compute instance-groups managed set-named-ports nginx-group --named-ports http:80
Updated [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/zones/us-central1-a/instanceGroups/nginx-group].
$ 
$ gcloud compute backend-services create nginx-backend --protocol HTTP --http-health-checks http-basic-check --global
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/global/backendServices/nginx-backend].
NAME           BACKENDS  PROTOCOL
nginx-backend            HTTP
$ 
$ gcloud compute backend-services add-backend nginx-backend --instance-group nginx-group --instance-group-zone us-central1-a --global
Updated [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/global/backendServices/nginx-backend].
$ 
$ gcloud compute url-maps create web-map  --default-service nginx-backend
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/global/urlMaps/web-map].
NAME     DEFAULT_SERVICE
web-map  backendServices/nginx-backend
$ 
$ gcloud compute target-http-proxies create http-lb-proxy --url-map web-map
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/global/targetHttpProxies/http-lb-proxy].
$
$ gcloud compute forwarding-rules create http-content-rule --global --target-http-proxy http-lb-proxy --ports 80
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-01-f1f9260bce1a/global/forwardingRules/http-content-rule].
$ 
$ gcloud compute forwarding-rules list
NAME               REGION       IP_ADDRESS      IP_PROTOCOL  TARGET
http-content-rule               34.107.247.121  TCP          http-lb-proxy
nginx-lb           us-central1  104.198.185.20  TCP          us-central1/targetPools/nginx-pool
$ 

你可能感兴趣的:(2020-05-14 Set Up Network and HTTP Load Balancers)