Opt Technologies Magazine

オプトテクノロジーズ 公式Webマガジン

サーバーサイドGTMのCloudRunマルチリージョン構成での構築手順

マルチリージョン構成でのサーバーサイド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 ではエンジニアを募集中です。カジュアル面談も可能ですので、下記リンク先よりお気軽にご応募ください。