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