{GCP Cloud CDN}Cloud CDN を設定する

 

https://cloud.google.com/cdn/docs/setting-up-cdn-with-mig

https://www.topgate.co.jp/gcp30-cloud-cdn#cloud-loadbalancing-backend-service-cloud-cdn


Cloud CDN は、Google Cloud のグローバル外部 HTTP(S) ロードバランサを利用して、ルーティング、ヘルスチェック、エニーキャスト IP のサポートを提供します。


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=2 \
--zone=asia-northeast1-a

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

 

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

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

 


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

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


-- 5. 外部 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


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

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

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

gcloud compute health-checks list

 


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

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

gcloud compute backend-services list

-- 6.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

 

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

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

gcloud compute url-maps list


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

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

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

gcloud compute target-http-proxies list


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

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

gcloud compute forwarding-rules list


-- 8. Cloud CDN を有効にする

gcloud compute backend-services update backend01 \
--enable-cdn \
--cache-mode=FORCE_CACHE_ALL \
--global

gcloud compute backend-services describe backend01 \
--global

 

-- 9. 動作確認

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

 

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


5分程度待つ

time curl -v -X GET http://192.0.2.1


-- 10. Cloud CDN を無効にする

gcloud compute backend-services update backend01 \
--no-enable-cdn \
--global

gcloud compute backend-services describe backend01 \
--global

-- 11. コンテンツの無効化

gcloud compute url-maps invalidate-cdn-cache map01 \
--path "/*"


time curl -v -X GET http://192.0.2.1

 

 

-- 12. クリーンアップ

gcloud projects list

gcloud projects delete project01-9999999