- Cloud Load Balancing ファミリーを 4 つの選択軸(L7/L4・プロキシ/パススルー・外部/内部・グローバル/リージョン)で選び分けられる
- 転送ルール → ターゲットプロキシ → URL マップ → バックエンドサービスという ALB の部品構成と、ヘルスチェックの仕組みを説明できる
- グローバル外部アプリケーション LB + MIG を gcloud で組み立て、実際に世界へ公開できる
- Cloud CDN のキャッシュモード・キャッシュキー・無効化を使い分けられる
- Cloud DNS のゾーン・レコード・ルーティングポリシーで名前解決と DNS レベルの可用性を設計できる
試験ガイド対応: セクション 1.2(技術要件を満たす設計 — 高可用性・スケーラビリティ・レイテンシ)、2.1(ネットワーク トポロジの構成)、2.3(コンピューティング システムの構成とプロビジョニング)
第 4 章で作ったマネージドインスタンスグループ(MIG)は、それ単体ではただの VM の群れです。この章ではその前段に立つ 3 つのサービス — トラフィックを捌く Cloud Load Balancing、エッジでキャッシュする Cloud CDN、名前を解決する Cloud DNS — を設計します。「どのロードバランサを選ぶか」は PCA 試験の最頻出テーマのひとつであり、実務でもアーキテクチャ図の一番上に必ず現れる意思決定です。
Cloud Load Balancing ファミリー — 4 つの選択軸
Google Cloud のロードバランサは十数種類ありますが、暗記は不要です。次の 4 つの軸で絞り込めば 1 つに決まります。
- L7 か L4 か — HTTP(S) を理解してルーティングするのがアプリケーション ロードバランサ(ALB)、TCP/UDP などをそのまま運ぶのがネットワーク ロードバランサ(NLB)
- プロキシ か パススルー か — プロキシ型は接続をロードバランサで終端して裏側に張り直す。パススルー型は終端せずに届け、クライアントの送信元 IP がそのままバックエンドに見える(応答はダイレクトサーバーリターン)
- 外部 か 内部 か — インターネットに公開するか、VPC 内部のクライアント専用か
- グローバル か リージョン か — 単一の anycast IP で複数リージョンのバックエンドを束ねるか、1 リージョンで完結させるか
主要なタイプを一覧にまとめます。プロキシ型(ALB と プロキシ NLB)は Google Front End(GFE)または Envoy ベースのプロキシとして動き、パススルー型は Maglev / Andromeda という Google 内部の分散基盤の上に実装されています。
| タイプ | 層・方式 | スコープ | 代表ユースケース |
|---|---|---|---|
| グローバル外部 ALB | L7・プロキシ | グローバル(Premium Tier) | Web / API の世界公開。単一 anycast IP + マルチリージョン MIG |
| リージョン外部 ALB | L7・プロキシ | リージョン(Standard Tier 可) | 単一リージョンで完結する公開 Web |
| 内部 ALB(リージョン / クロスリージョン) | L7・プロキシ | リージョン / 複数リージョン | マイクロサービス間の内部 HTTP(S) 通信 |
| 外部プロキシ NLB | L4・プロキシ | グローバル / リージョン | HTTP 以外の TCP サービスの公開・大規模 TLS オフロード |
| 外部パススルー NLB | L4・パススルー | リージョン | UDP・ゲーム・クライアント IP が必要なプロトコル(TCP / UDP / ESP / GRE / ICMP) |
| 内部パススルー NLB | L4・パススルー | リージョン | VPC 内部の L4 分散。DNS フェイルオーバーのヘルスチェック対象にもなる |
公式ドキュメントの選択指針は明快です。HTTP(S) トラフィックに柔軟な機能が欲しければ ALB、大規模な TLS オフロードや UDP 対応が必要なら NLB。なお「クラシック ALB」「クラシック プロキシ NLB」は旧世代(ロードバランシング スキームが EXTERNAL)で、新規設計では EXTERNAL_MANAGED スキームのグローバル外部 ALB を使います。
グローバル外部 ALB の解剖 — 転送ルールからバックエンドまで
ALB は単一のリソースではなく、役割の異なる部品のチェーンです。リクエストは次の順に流れます。
- 転送ルール — 外部 IP アドレス・ポート・ロードバランシング スキーム(モダンな外部 ALB は
EXTERNAL_MANAGED)を束ねる受付窓口 - ターゲットプロキシ — HTTP / HTTPS の別を決め、HTTPS なら SSL 証明書を保持して TLS をユーザーに最も近い場所で終端する
- URL マップ — ホスト名やパスでバックエンドサービス / バックエンドバケットへ振り分けるルーティング表。ヘッダーベースのルーティング、重み付きトラフィック分割、トラフィックミラーリングといった高度なトラフィック管理もここに載る
- バックエンドサービス — 分散の本体。プロトコル、名前付きポート、ヘルスチェック、セッションアフィニティ、バランシングモード(
UTILIZATION/RATE/CONNECTIONなど)を定義する
バックエンドサービスにぶら下げられるのは MIG だけではありません。ゾーン NEG(ネットワーク エンドポイント グループ。VM 内の個別エンドポイント)、サーバーレス NEG(Cloud Run・App Engine)、インターネット NEG(外部オリジン)、ハイブリッド NEG(VPN / Interconnect 越しのオンプレミス)まで束ねられます。静的コンテンツはバックエンドバケットとして Cloud Storage(第 8 章)を直結できます。「オンプレと Cloud Run と MIG を同じ URL 配下で段階移行する」といった構成が 1 台の ALB で組めるのはこの仕組みのおかげです。
ヘルスチェック — 分散対象を決める生死判定
バックエンドサービスにはヘルスチェックを関連付けます。現行のヘルスチェックは HTTP / HTTPS / HTTP/2 / TCP / SSL / gRPC に対応し(レガシー ヘルスチェックは HTTP / HTTPS のみ)、既定値はチェック間隔 5 秒・タイムアウト 5 秒(間隔以下であること)・健全 / 非健全のしきい値は連続 2 回です。重要なのは、プローブが LB 経由ではなく Google の専用プローバ群から直接届くことです。グローバル外部 ALB(GFE ベース)のヘルスチェックプローブは 35.191.0.0/16 から届きます。加えて、GFE がクライアントの実リクエストをバックエンドへ転送する際の送信元にも 130.211.0.0/22 が使われるため、この 2 つのレンジからの ingress を両方許可しないと、ヘルスチェックだけ通って実トラフィックが 502 になる、あるいは全バックエンドが UNHEALTHY になるといった障害につながります(リージョン外部パススルー NLB のターゲットプール構成では 35.191.0.0/16 に加えて 209.85.152.0/22 / 209.85.204.0/22 も使われます)。なお、この LB 用ヘルスチェックと第 4 章の MIG オートヒーリング用ヘルスチェックは別物として設定します(判定後の動作が「分散から外す」と「VM を作り直す」で異なるため)。
HTTPS 化 — Google マネージド SSL 証明書と Certificate Manager
ターゲット HTTPS プロキシに載せる証明書は 2 系統あります。従来からの Compute Engine SSL 証明書リソース(gcloud compute ssl-certificates)では、Google が取得・更新まで自動で行うマネージド証明書(ドメイン検証 DV のみ)を使えます。プロビジョニングを完了させるには、対象ドメインの A レコードが LB の IP アドレスを指している必要があります。ターゲットプロキシ 1 つに付けられるのは 15 枚までです(2026-08 時点)。
現在推奨されているのは Certificate Manager です。DNS 認証(最大 100 SAN、ワイルドカード対応)と LB 認証(最大 5 SAN)の 2 つのドメイン認証方式を持ち、証明書マップを使えば既定で数千、拡張すれば数百万のドメインを 1 つのプロキシで扱えます(2026-08 時点)。マネージドのワイルドカード証明書が必要なら Certificate Manager + DNS 認証が唯一の選択肢です。証明書マップをプロキシに付けると Compute Engine SSL 証明書側は無視される点に注意してください。
Cloud CDN と Cloud DNS — エッジ配信と名前解決
Cloud CDN — キャッシュモードとキャッシュキー
Cloud CDN は独立したサービスとしてではなく、グローバル外部 ALB のバックエンドサービス / バックエンドバケット単位で有効化します。コンテンツは GFE のエッジキャッシュに保存され、キャッシュヒットならオリジンまで往復せずその場で応答が返ります。
挙動の中心は 3 つのキャッシュモードです。
| モード | 挙動 | 使いどころ |
|---|---|---|
CACHE_ALL_STATIC(既定) | 静的コンテンツ(CSS / JS / 画像 / 動画 / Web フォント / PDF 等)をヘッダーがなくても自動キャッシュ。オリジンのキャッシュ指示があればそれを尊重 | まず選ぶ既定値。ただし HTML / JSON は「静的」に含まれず、明示的な Cache-Control が必要 |
USE_ORIGIN_HEADERS | オリジンが有効なキャッシュ指示(max-age 等)を返した応答だけをキャッシュ | キャッシュ可否をアプリ側で厳密に制御したいとき |
FORCE_CACHE_ALL | オリジンの指示を無視して成功応答を無条件にキャッシュ | 完全に公開・共通のコンテンツ専用。ユーザーごとのコンテンツに使うと情報漏洩事故になる |
TTL の既定値はデフォルト TTL・クライアント TTL とも 3600 秒(1 時間)、最大 TTL は 86400 秒(24 時間)です(2026-08 時点)。キャッシュされるのは GET リクエストへの成功応答のみで、Set-Cookie 付きや Cache-Control: private / no-store の応答は対象外、サイズ上限は 10 MiB(オリジンが Range リクエスト対応なら 100 GiB)です。
キャッシュキーは既定で「プロトコル + ホスト + クエリ文字列を含む URI 全体」です。クエリパラメータの除外やホスト・プロトコルの省略、特定ヘッダー / Cookie の追加をカスタマイズすると、同一コンテンツの重複キャッシュを減らしてヒット率を上げられます。更新の反映にはキャッシュ無効化(gcloud compute url-maps invalidate-cdn-cache、パス末尾の * ワイルドカード対応)を使えますが、毎分 500 リクエストの上限があり反映まで約 10 秒かかるため、公式のベストプラクティスは「無効化を運用に組み込まず、バージョン付き URL(例: /v2/app.js)で切り替える」です。限定公開コンテンツの配信には署名付き URL / 署名付き Cookie を組み合わせます。
Cloud DNS — ゾーン・レコード・ルーティングポリシー
Cloud DNS は Google の anycast ネームサーバー網で権威 DNS を提供するマネージドサービスで、SLA は月間稼働率 100% という異例の水準です(2026-08 時点)。ゾーンは 2 種類あります。
- 公開ゾーン — インターネットに公開。ゾーン作成時に NS / SOA レコードが自動作成され、レジストラ側のネームサーバーを Cloud DNS の指すものへ委任して有効化する。DNSSEC のマネージド対応あり
- 限定公開ゾーン — 指定した VPC ネットワークからだけ見えるゾーン。第 3 章の内部 DNS(VM の自動登録名)に加えて、任意の内部名(
db.internal.exampleなど)を自分で定義できる。公開側と同じドメイン名で作れば、社内からだけ別の応答を返す構成も可能 - ハイブリッド構成にはオンプレミスへ問い合わせを流す転送ゾーン、VPC 間で解決を共有するピアリングゾーン、オンプレミスからの逆方向にはインバウンド サーバーポリシーを使う(第 12 章)
レコード操作は gcloud dns record-sets create / update / delete、複数変更をアトミックに適用したいときは transaction start / add / execute を使います。さらに、単純な静的応答の代わりにルーティングポリシーを持つレコードを作ると、DNS の応答自体でトラフィックを制御できます。
| ポリシー | 動作 | 用途 |
|---|---|---|
| 重み付きラウンドロビン(WRR) | ターゲットごとの重みに比例して応答を分配 | カナリアリリース、段階的な移行 |
| 位置情報(geolocation) | 問い合わせ元の地理(Google Cloud リージョン等)に応じて最寄りのターゲットを応答。ジオフェンス有効時は障害時も他地域へ流さない | データレジデンシー、地域別エンドポイント |
| フェイルオーバー | プライマリが健全な間はプライマリのみ応答し、ヘルスチェック失敗でバックアップに切り替え | アクティブ / スタンバイの DR 構成 |
ヘルスチェック連携の対象は内部 ALB・内部パススルー NLB など内部 LB のエンドポイントと、公開ゾーンでは外部エンドポイントです。パススルー NLB では既定で「バックエンドの 20% 以上が健全ならそのエンドポイントは健全」と判定されます。制約として WRR と位置情報ポリシーの併用はできず、転送ゾーン・ピアリングゾーンにはルーティングポリシー自体を設定できません。
ハンズオン
第 1 章の学習用プロジェクトと Cloud Shell を前提にします(ローカルの gcloud CLI でも可)。default ネットワークが存在すること、Compute Engine API が有効なことを確認してから始めてください。3 本は独立しているので、どれか 1 本だけでも成立します。
図 5-2 のチェーンを下から上へ組み立て、単一 IP の背後で 2 台の Web サーバーに分散させます。所要 30〜45 分。費用: e2-small 2 台 + 転送ルールなどを 1 時間弱で数十円程度。作成直後の反映待ちがあるので、失敗と勘違いして作り直さないのがコツです。
- 起動スクリプト入りのインスタンステンプレートと MIG(2 台)を作り、ポート 80 に
httpという名前を付ける:
gcloud compute instance-templates create web-template \
--machine-type=e2-small \
--image-family=debian-12 --image-project=debian-cloud \
--tags=allow-health-check \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install -y apache2
echo "Hello from $(hostname)" > /var/www/html/index.html'
gcloud compute instance-groups managed create web-mig \
--template=web-template --size=2 --zone=asia-northeast1-b
gcloud compute instance-groups set-named-ports web-mig \
--named-ports=http:80 --zone=asia-northeast1-b
- ヘルスチェックプローブと GFE 転送トラフィックの送信元レンジを許可するファイアウォール、グローバル静的 IP、ヘルスチェック、バックエンドサービスを作って MIG をぶら下げる:
gcloud compute firewall-rules create fw-allow-health-check \
--network=default --action=allow --direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check --rules=tcp:80
gcloud compute addresses create lb-ip \
--ip-version=IPV4 --network-tier=PREMIUM --global
gcloud compute health-checks create http basic-check --port=80
gcloud compute backend-services create web-backend \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP --port-name=http \
--health-checks=basic-check --global
gcloud compute backend-services add-backend web-backend \
--instance-group=web-mig \
--instance-group-zone=asia-northeast1-b --global
- フロントエンド側(URL マップ → ターゲット HTTP プロキシ → 転送ルール)を組む。今回は手順を短くするため HTTP:80 で公開する(本番は HTTPS + マネージド証明書が前提):
gcloud compute url-maps create web-map --default-service=web-backend
gcloud compute target-http-proxies create web-proxy --url-map=web-map
gcloud compute forwarding-rules create web-rule \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=PREMIUM --address=lb-ip \
--global --target-http-proxy=web-proxy --ports=80
- ヘルス状態を確認してからアクセスする。反映まで数分かかることがある:
gcloud compute backend-services get-health web-backend --global
LB_IP=$(gcloud compute addresses describe lb-ip \
--global --format="get(address)")
curl "http://$LB_IP/"
期待される出力: get-health で 2 インスタンスとも healthState: HEALTHY になった後、curl が Hello from web-mig-xxxx を返します。何度か curl を繰り返すとホスト名が入れ替わり、2 台に分散されていることを確認できます。
後片付け: 参照関係があるため、必ずフロントエンドから逆順に削除します。
gcloud compute forwarding-rules delete web-rule --global --quiet
gcloud compute target-http-proxies delete web-proxy --quiet
gcloud compute url-maps delete web-map --quiet
gcloud compute backend-services delete web-backend --global --quiet
gcloud compute health-checks delete basic-check --quiet
gcloud compute addresses delete lb-ip --global --quiet
gcloud compute instance-groups managed delete web-mig \
--zone=asia-northeast1-b --quiet
gcloud compute instance-templates delete web-template --quiet
gcloud compute firewall-rules delete fw-allow-health-check --quiet
Cloud Storage をオリジンにした CDN 配信を組み、Age ヘッダーでキャッシュヒットを観測してから無効化を実行します。所要 20〜30 分。費用: 数 KB のオブジェクトと転送ルールを 30 分程度で数円以内。
- 公開バケットとテストオブジェクトを用意する。
Cache-Controlをオブジェクトに設定して、テキストでも確実にキャッシュ対象(フレッシュな応答)にする:
export BUCKET="$(gcloud config get-value project)-cdn-handson"
gcloud storage buckets create "gs://$BUCKET" \
--location=asia-northeast1 --uniform-bucket-level-access
echo "Hello CDN" > hello.txt
gcloud storage cp hello.txt "gs://$BUCKET/"
gcloud storage objects update "gs://$BUCKET/hello.txt" \
--cache-control="public, max-age=3600"
gcloud storage buckets add-iam-policy-binding "gs://$BUCKET" \
--member=allUsers --role=roles/storage.objectViewer
--enable-cdn付きのバックエンドバケットを作り、LB のフロントエンドをかぶせる:
gcloud compute backend-buckets create cdn-backend \
--gcs-bucket-name="$BUCKET" \
--enable-cdn --cache-mode=CACHE_ALL_STATIC
gcloud compute url-maps create cdn-map \
--default-backend-bucket=cdn-backend
gcloud compute target-http-proxies create cdn-proxy --url-map=cdn-map
gcloud compute addresses create cdn-ip \
--ip-version=IPV4 --network-tier=PREMIUM --global
gcloud compute forwarding-rules create cdn-rule \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=PREMIUM --address=cdn-ip \
--global --target-http-proxy=cdn-proxy --ports=80
- 数分待ってから同じ URL を 2 回以上取得し、ヘッダーを比較する。確認後にキャッシュを無効化する:
CDN_IP=$(gcloud compute addresses describe cdn-ip \
--global --format="get(address)")
curl -sD - -o /dev/null "http://$CDN_IP/hello.txt"
curl -sD - -o /dev/null "http://$CDN_IP/hello.txt"
gcloud compute url-maps invalidate-cdn-cache cdn-map --path="/hello.txt"
期待される出力: 2 回目以降の応答に Age: 12 のような 0 より大きい Age ヘッダーが付けばキャッシュヒットです(初回はエッジへの cache fill なので付きません)。無効化の完了後に再取得すると Age が消え、再びオリジンから取得されたことが分かります。
後片付け:
gcloud compute forwarding-rules delete cdn-rule --global --quiet
gcloud compute target-http-proxies delete cdn-proxy --quiet
gcloud compute url-maps delete cdn-map --quiet
gcloud compute backend-buckets delete cdn-backend --quiet
gcloud compute addresses delete cdn-ip --global --quiet
gcloud storage rm -r "gs://$BUCKET"
ドメインを所有していなくても試せる限定公開ゾーンで、VPC 内だけで解決できる名前を作ります。所要 15 分。費用: マネージドゾーンは時間割り課金(2026-08 時点で約 $0.000274/時、月額換算 $0.20)なので 1 時間なら 1 円未満 + 確認用 e2-micro 1 台を数分で数円以内。
- Cloud DNS API を有効化し、
defaultネットワークに紐付く限定公開ゾーンと A レコードを作る:
gcloud services enable dns.googleapis.com
gcloud dns managed-zones create internal-zone \
--dns-name="internal.example." \
--description="handson private zone" \
--visibility=private --networks=default
gcloud dns record-sets create db.internal.example. \
--zone=internal-zone --type=A --ttl=300 \
--rrdatas=10.0.0.42
gcloud dns record-sets list --zone=internal-zone
- VPC 内の VM からだけ解決できることを確認する:
gcloud compute instances create dns-probe \
--zone=asia-northeast1-b --machine-type=e2-micro \
--image-family=debian-12 --image-project=debian-cloud
gcloud compute ssh dns-probe --zone=asia-northeast1-b \
--command="getent hosts db.internal.example"
期待される出力: 10.0.0.42 db.internal.example。VM は VPC のメタデータサーバー経由で名前解決し、そこに限定公開ゾーンの応答が合成されます。同じ名前を Cloud Shell(VPC 外)で引いても解決できないことも確かめると、「どの VPC から見えるか」というゾーンのスコープが体感できます。
後片付け: ゾーンはレコードを消してからでないと削除できません。
gcloud compute instances delete dns-probe \
--zone=asia-northeast1-b --quiet
gcloud dns record-sets delete db.internal.example. \
--zone=internal-zone --type=A
gcloud dns managed-zones delete internal-zone
つまずきポイント
35.191.0.0/16)または GFE の転送トラフィック(130.211.0.0/22)の ingress 許可漏れです。どちらも LB からではなく Google の専用レンジから直接届くため、アプリが正常でもファイアウォールで落とされると、ヘルスチェック自体が UNHEALTHY になる、または判定は HEALTHY でも実トラフィックだけ 502 になる、という 2 通りの故障が起こり得ます。gcloud compute backend-services get-health で判定を、ファイアウォールルールの --target-tags が VM のタグと一致しているか、両方のレンジを許可しているかを順に確認してください。CACHE_ALL_STATIC が自動でキャッシュするのは CSS / JS / 画像などの静的タイプだけで、HTML と JSON は明示的な Cache-Control ヘッダーがない限り対象外です。Set-Cookie が付いた応答や Cache-Control: private / no-store もキャッシュされません。逆に FORCE_CACHE_ALL はこれらの安全弁を無効化するため、ログイン後のページに適用するとユーザー間で応答が混ざる重大事故につながります。理解度チェック
Q1. グローバル外部 ALB の「グローバル」とは何を指すか?
単一の anycast IP アドレスで世界中からのリクエストを受け、複数リージョンに配置したバックエンドへ分散できることです。TLS はユーザーに近い GFE で終端され、リージョン障害時も同じ IP のまま健全なリージョンへ流れます。DNS を地域ごとに出し分ける必要はありません。
Q2. プロキシ型 NLB とパススルー型 NLB の最大の違いは?
接続を終端するかどうかです。プロキシ型は LB で TCP(および SSL)を終端して裏側へ張り直すため TLS オフロードができる一方、バックエンドから見た送信元は LB になります。パススルー型は終端せずパケットを届けるためクライアントの送信元 IP がそのまま保持され、TCP 以外(UDP / ESP / GRE / ICMP)も扱えます。応答はダイレクトサーバーリターンで返ります。
Q3. Cloud CDN の 3 つのキャッシュモードをそれぞれいつ使う?
CACHE_ALL_STATIC(既定)は静的タイプを自動キャッシュしつつオリジンの指示も尊重するバランス型。USE_ORIGIN_HEADERS はオリジンが明示したものだけをキャッシュする厳密型で、キャッシュ可否をアプリで完全制御したいとき。FORCE_CACHE_ALL はオリジンの指示を無視して全成功応答をキャッシュするため、完全公開のコンテンツ専用です。ユーザー固有コンテンツに使うと情報漏洩になります。
Q4.(試験形式)EC サイトをグローバル展開する。要件は「世界中から単一 IP で HTTPS 接続」「/api は東京と米国の MIG へ、/static は Cloud Storage へ振り分け」「静的コンテンツはエッジでキャッシュ」。最適な構成は?
A. リージョンごとに外部 ALB を置き、位置情報ルーティングポリシーで振り分ける B. グローバル外部 ALB + URL マップ + バックエンドバケット + Cloud CDN C. 外部パススルー NLB + Cloud CDN D. Cloud DNS の WRR で MIG のインスタンスへ直接分散する
B。単一 anycast IP・パスベースの振り分け・バックエンドバケット・CDN 有効化のすべてがグローバル外部 ALB の標準機能です。A は IP がリージョンごとに分かれ「単一 IP」の要件を満たしません。C はパススルー NLB が L7 のパス振り分けを持たず、Cloud CDN は外部 ALB と組み合わせて使うものなので不成立。D は DNS ではパスベースの振り分けもエッジキャッシュも TLS 終端もできません。
Q5.(試験形式)対戦ゲームのリアルタイム通信サーバーを公開する。プロトコルは UDP、不正対策のためサーバー側でクライアントの送信元 IP を直接参照する必要がある。選ぶべきロードバランサは?
A. グローバル外部 ALB B. 外部プロキシ NLB C. 外部パススルー NLB D. 内部パススルー NLB
C。UDP を扱えるのはパススルー型だけで、終端しないためクライアント IP もそのまま保持されます。A は HTTP(S) 専用。B はプロキシ型のため TCP 系のみで、送信元も LB の IP になります。D は要件のインターネット公開に反する内部専用です。
まとめと次章へ
- LB 選択は 4 軸 — L7/L4・プロキシ/パススルー・外部/内部・グローバル/リージョン。HTTP(S) は ALB、UDP やクライアント IP 保持はパススルー NLB
- ALB は転送ルール → ターゲットプロキシ → URL マップ → バックエンドサービスのチェーン。バックエンドには MIG のほか各種 NEG とバックエンドバケットを混在できる
- ヘルスチェックプローブは 35.191.0.0/16 から、GFE の実トラフィック転送は 130.211.0.0/22 からも届く。両方のファイアウォール許可を忘れると UNHEALTHY または 502 になる
- Cloud CDN はバックエンド単位で有効化。キャッシュモード 3 種と「HTML/JSON は自動キャッシュ対象外」を押さえ、更新はバージョン付き URL で設計する
- Cloud DNS は 100% SLA の権威 DNS。限定公開ゾーンで内部名を、ルーティングポリシー(WRR / 位置情報 / フェイルオーバー)で DNS レベルの制御を担う
ここまでで「VM を並べ、前段で受ける」IaaS 型の公開構成が一通り完成しました。第 6 章の GKE では、この章で学んだ ALB・NEG・ヘルスチェックが Gateway / Ingress という Kubernetes の語彙で再登場します。部品の対応関係を意識しながら進むと、コンテナネイティブ負荷分散の理解が一気に楽になります。