マルチリージョン構成でのサーバーサイドGTMの構築手順を紹介していきます。
サーバーサイドGTMのタグサーバー動作環境としてのCloudRun
前回の記事(サーバーサイドGTMの動作環境をGoogleAppEngineとCloudRunで性能比較した)で、サーバーサイドGTMのタグサーバーの動作環境の性能比較を行いました。Google App EngineのFlexibleとStandard、CloudRunの3つで比較したところ、弊社のビジネス要求に最もマッチするのはCloudRunであるという結論になりました。
マルチリージョン構成のCloudRunで高可用性を実現可能
前回の記事ではCloudRunは単体でシングルリージョンでの構築となりましたが、Cloud Load Balancing(以後CLB)やNetwork Endpint Group(以後NEG)と組み合わせることでマルチリージョン構成とすることが可能です。マルチリージョン構成とすることによって高可用性な構成になりますが、コスト増大が気になるところです。詳細は省きますが、弊社でのマルチリージョン構成でのコスト検討を行なったところ、考慮に値しない程度のコスト差であることがわかりました。今回はこのマルチリージョン構成の構築手順を簡単に紹介していきます。
CloudRunマルチリージョン構成の構築手順
asia-northeast1とus-central1でマルチリージョン構成を構築します。
環境変数の設定
export PROJECT_ID=YOUR_PROJECT_ID export SGTM_CONFIG=YOUR_SGTM_CONFIG export DOMAIN=YOUR_DOMAIN export PREFIX=YOUR_PREFIX_OF_NAME # 対象のprojectを指定 gcloud config set project $PROJECT_ID
- YOUR_SGTM_CONFIG: サーバーコンテナ作成時に発行されるCONFIG文字列
- YOUR_DOMAIN: Cloud Runに割り当てるdomain (例: sgtm.opt.sgtm.jp)
- YOUR_PREFIX_OF_NAME: 各設定の名前に入るPREFIX(例: sgtm)
previewサーバーのデプロイ
gcloud run deploy $PREFIX-preview-server \ --image gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable \ --port=8080 \ --allow-unauthenticated \ --region=asia-northeast1 \ --max-instances=1 \ --min-instances=0 \ --cpu=1 \ --memory=256Mi \ --set-env-vars="RUN_AS_PREVIEW_SERVER=true,CONTAINER_CONFIG=$SGTM_CONFIG" # previewサーバーのURLの変数定義 export PREVIEW_URL=PREVIEW_SERVER_URL
sstサーバーのデプロイ
# asia-northeast1のサーバーデプロイ gcloud run deploy $PREFIX-an1 \ --image gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable \ --port=8080 \ --allow-unauthenticated \ --region=asia-northeast1 \ --min-instances=1 --max-instances=1000 \ --set-env-vars="PREVIEW_SERVER_URL=$PREVIEW_URL,CONTAINER_CONFIG=$SGTM_CONFIG" # us-central1のサーバーデプロイ # 安く済ませたい場合はmin-instance=0とする gcloud run deploy $PREFIX-uc1 \ --image gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable \ --port=8080 \ --allow-unauthenticated \ --region=us-central1 \ --min-instances=0 --max-instances=1000 \ --set-env-vars="PREVIEW_SERVER_URL=$PREVIEW_URL,CONTAINER_CONFIG=$SGTM_CONFIG"
外部IPアドレスの予約
gcloud compute addresses create $PREFIX-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
SSL証明書の作成
gcloud compute ssl-certificates create $PREFIX-ce \ --domains=$DOMAIN \ --global
NEGの作成
# asia-northeast1のNEG作成 gcloud compute network-endpoint-groups create $PREFIX-neg-an1 \ --region=asia-northeast1 \ --network-endpoint-type=serverless \ --cloud-run-service=$PREFIX-an1 # us-central1のNEG作成 gcloud compute network-endpoint-groups create $PREFIX-neg-uc1 \ --region=us-central1 \ --network-endpoint-type=serverless \ --cloud-run-service=$PREFIX-uc1
バックエンドサービスの作成
gcloud compute backend-services create $PREFIX-backend \ --load-balancing-scheme=EXTERNAL \ --global
NEGをバックエンドに紐付ける
# asia-northeast1の方 gcloud compute backend-services add-backend $PREFIX-backend \ --global \ --network-endpoint-group=$PREFIX-neg-an1 \ --network-endpoint-group-region=asia-northeast1 # us-central1の方 gcloud compute backend-services add-backend $PREFIX-backend \ --global \ --network-endpoint-group=$PREFIX-neg-uc1 \ --network-endpoint-group-region=us-central1
URLマップの作成
gcloud compute url-maps create $PREFIX-url-map \ --default-service $PREFIX-backend
HTTPSターゲットプロキシの作成
gcloud compute target-https-proxies create $PREFIX-target-https-proxy \ --ssl-certificates=$PREFIX-ce \ --url-map=$PREFIX-url-map
HTTPSロードバランサの作成
gcloud compute forwarding-rules create $PREFIX-https-forwading-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=$PREFIX-ip \ --target-https-proxy=$PREFIX-target-https-proxy \ --global \ --ports=443
以上で構築手順は終了です。作成したCLBのIPアドレスを、ドメインに対してAレコード登録して動作確認してみましょう。
Opt Technologies ではエンジニアを募集中です。カジュアル面談も可能ですので、下記リンク先よりお気軽にご応募ください。