{GCP Cloud Load Balancing}L7ロードバランサー+オートスケーリング

https://cloud.google.com/load-balancing/docs/https/setup-global-ext-https-compute?hl=ja

https://saitosho.me/blog/2021-05-03-structing-auto-scaling-instance-groups/


pip01 --> rule01 --> proxy01 --> map01 --> backend01 --> group01

-- 1. 前作業

gcloud init
gcloud auth list

gcloud --version

gcloud projects create project01-9999999 \
--name="project01"

gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet

 

gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111

gcloud services enable compute.googleapis.com --project project01-9999999


-- 2. マネージド インスタンス グループ作成

gcloud compute instance-templates create template01 \
--region=asia-northeast1 \
--network=default \
--subnet=default \
--tags=tag01 \
--image-family=debian-10 \
--image-project=debian-cloud \
--machine-type e2-micro \
--metadata=startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo hostname > /var/www/html/index.html
sudo systemctl restart apache2'

 

gcloud compute instance-templates list
gcloud compute instance-templates describe template01

gcloud compute instance-groups managed create group01 \
--template=template01 \
--size=1 \
--zone=asia-northeast1-a

gcloud compute instance-groups list
gcloud compute instance-groups describe group01


-- 3. スケーリング設定

gcloud compute instance-groups managed set-autoscaling group01 \
--max-num-replicas 2 \
--min-num-replicas 1 \
--cool-down-period 60 \
--target-cpu-utilization 0.3


-- 4. インスタンス グループに名前付きポートを追加

gcloud compute instance-groups set-named-ports group01 \
--named-ports http:80 \
--zone asia-northeast1-a

 


-- 5. ファイアウォール ルールを構成する

gcloud compute firewall-rules create fw01 \
--network=default \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=tag01 \
--rules=tcp:80

gcloud compute firewall-rules list


-- 6. 外部 IP アドレスを予約する

gcloud compute addresses create pip01 \
--ip-version=IPV4 \
--network-tier=PREMIUM \
--global


gcloud compute addresses list

gcloud compute addresses describe pip01 \
--format="get(address)" \
--global


-- 7. ロードバランサを設定する

-- 7.1 ヘルスチェック作成

gcloud compute health-checks create http hc01 \
--port 80

gcloud compute health-checks list

 


-- 7.2 バックエンドサービス作成

gcloud compute backend-services create backend01 \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--port-name=http \
--health-checks=hc01 \
--global

gcloud compute backend-services list

-- 7.3 バックエンド サービスにバックエンド(インスタンスグループ)を追加

gcloud compute backend-services add-backend backend01 \
--instance-group=group01 \
--instance-group-zone=asia-northeast1-a \
--global


gcloud compute backend-services describe backend01 \
--global

 

-- 7.4 HTTP 用に、受信リクエストをデフォルトのバックエンド サービスに転送するURL マップを作成

gcloud compute url-maps create map01 \
--default-service backend01

gcloud compute url-maps list


-- 8. HTTPフロントエンドの設定

-- 8.1 リクエストを URL マップに転送するターゲット HTTP プロキシを作成

gcloud compute target-http-proxies create proxy01 \
--url-map=map01

gcloud compute target-http-proxies list


-- 8.2 受信リクエストをプロキシに転送するグローバル転送ルールを作成

gcloud compute forwarding-rules create rule01 \
--load-balancing-scheme=EXTERNAL_MANAGED \
--address=pip01 \
--global \
--target-http-proxy=proxy01 \
--ports=80

gcloud compute forwarding-rules list

 

-- 9. 動作確認

gcloud compute addresses describe pip01 \
--format="get(address)" \
--global

 

while true;do curl http://192.0.2.1 ; sleep 1;done


5分程度待つ

インスタンスにログインして直接負荷をかけてオートスケーリング確認

yes > /dev/null &

 

-- 10. クリーンアップ

gcloud projects list

gcloud projects delete project01-9999999