Cloud Service
Cloud Load Balancing
Google のグローバルネットワーク上でトラフィックを分散するフルマネージドな L4/L7 ロードバランサ。単一の Anycast IP で世界中のバックエンドへ振り分ける。AWS の Elastic Load Balancing (ELB) に相当。
- 1.通信を複数バックエンドへ振り分けるマネージドな交通整理役。
- 2.単一のAnycast IPでリージョンを跨ぎグローバル分散、暖機も不要。
- 3.L7(HTTP)とL4(TCP/UDP)を用途で使い分ける。
解決する課題
物理的なロードバランサ機器を調達・冗長化せずに、Google が運用するソフトウェア定義の負荷分散をすぐ利用できます。
- 1 つのバックエンドに集中させず負荷を分散したい
- 異常なインスタンスをヘルスチェックで自動的に切り離したい
- 複数リージョン・複数ゾーンに自動追従し、ユーザーに最も近いバックエンドへ振り分けたい
- 事前の暖機運転(プレウォーミング)なしに急激なトラフィック増に即応したい
主要概念と用語
- 転送ルール(Forwarding Rule): 受信する IP アドレス・プロトコル・ポートを定義する入口。グローバル外部 IP か、リージョン内部 IP を割り当てる
- ターゲットプロキシ(Target Proxy): L7(HTTP(S))の場合に転送ルールと URL マップを結びつける。TLS 終端もここで行う
- URL マップ(URL Map): パス/ホストベースのルーティング規則。AWS の ALB のリスナールールに相当
- バックエンドサービス(Backend Service): 振り分け先のグループ、負荷分散方式、ヘルスチェック、セッションアフィニティ、Cloud CDN などを束ねる中核設定
- バックエンド: インスタンスグループ(MIG)またはネットワークエンドポイントグループ(NEG)。サーバーレス NEG で Cloud Run / App Engine / Cloud Functions も背後に置ける
- ヘルスチェック: 正常なバックエンドだけに振り分けるための監視(HTTP/HTTPS/HTTP2/TCP/SSL/gRPC)
- 負荷分散の種類: グローバル外部アプリケーション LB(L7)、グローバル外部プロキシ ネットワーク LB(L4 TCP/SSL)、外部パススルー ネットワーク LB(L4、送信元 IP を保持)、内部アプリケーション LB / 内部パススルー ネットワーク LB(VPC 内部向け)
仕様・制限・クォータ
- Anycast IP によるグローバル配信: グローバル外部アプリケーション LB は、世界中の Google エッジ(GFE: Google Front End)で単一の IP を受け、最寄りのバックエンドへルーティングする
- プレウォーミング不要: 事前申請なしに毎秒数百万リクエスト規模へスケールする(ELB のような暖機が要らない)
- TLS 終端: Google マネージド SSL 証明書、またはセルフマネージド証明書を証明書マネージャーで管理。ロードバランサ側で HTTPS を終端できる
- 対応プロトコル: HTTP/1.1、HTTP/2、HTTP/3(QUIC)、gRPC、WebSocket、TCP、UDP、SSL(TLS)
- プロジェクト/リージョンごとのクォータ: 転送ルール数、バックエンドサービス数などに上限があり、引き上げ申請が可能
- パススルー型(L4)は送信元 IP を保持して NAT せずにバックエンドへ届ける(プロキシ型は GFE の IP に置き換わる)
内部の仕組み
グローバル外部アプリケーション LB は、Google のエッジに分散配置された GFE(Google Front End) がリクエストを受け付けます。ユーザーは Anycast IP に接続すると、BGP によりネットワーク的に最も近い GFE に到達します。GFE は URL マップに従ってルーティング先のバックエンドサービスを決め、ヘルスチェックを通過した正常なバックエンドだけにリクエストを転送します。
- バックエンドの選択は、各リージョンの容量・使用率・レイテンシを考慮して行われ、最寄りリージョンが過負荷なら自動的に**別リージョンへ自動でオーバーフロー(フェイルオーバー)**する
- TLS はエッジ(GFE)で終端され、GFE からバックエンドまでは Google の内部バックボーンを経由するため、ユーザー〜エッジ間の RTT が短縮される
- パススルー ネットワーク LB(L4)はプロキシを介さず、Maglev(Google のソフトウェアロードバランサ)が一貫性ハッシュで接続を分散し、送信元 IP を保持したまま転送する
HTTP のパス/ホストルーティング・TLS 終端・Cloud CDN・Cloud Armor が必要なら L7(アプリケーション LB)。 送信元 IP の保持・TCP/UDP の超低遅延転送が必要なら L4 のパススルー ネットワーク LB。この使い分けは設計の基本です。
設計パターン / ベストプラクティス
- グローバル外部アプリケーション LB + マネージドインスタンスグループ(MIG)+ 複数リージョンが王道。MIG の自動スケーリングと組み合わせ、容量に応じた分散を任せる
- HTTPS はロードバランサで終端し、Google マネージド SSL 証明書で更新を自動化する(背後は HTTP でも可)
- Cloud Armor を前段に付与して L7 の WAF・DDoS 防御・IP 許可リストを適用する
- Cloud CDN を有効化して静的コンテンツをエッジでキャッシュし、オリジン負荷とレイテンシを下げる
- サーバーレス NEG を使えば Cloud Run / App Engine / Cloud Functions を同じ LB の背後に統合し、共通の証明書・ドメイン・WAF を適用できる
- ヘルスチェックのパス・閾値・間隔を適切に設定し、誤検知での切り離しを避ける
運用・監視
- Cloud Monitoring でメトリクス(
https/request_count、https/backend_latencies、https/request_bytes_countなど)とバックエンドのヘルス状態を監視 - Cloud Logging でロードバランサのリクエストログを有効化し、レスポンスコード・レイテンシ・クライアント情報を分析
- 5xx / レイテンシ急増はバックエンドの過負荷やヘルスチェック設定、容量(最大 RPS/使用率)の上限を確認
- Network Topology / Performance Dashboard でトラフィック経路とリージョン間の偏りを可視化
コスト
課金は「ロードバランサの時間課金(転送ルール数に応じた基本料金)」+「処理データ量(アウトバウンド/インバウンド)」が基本です。Cloud CDN や Cloud Armor は別課金になります。
| コスト要素 | 課金の考え方 | 節約のヒント |
|---|---|---|
| 転送ルール(基本料金) | 一定数までは時間課金、超過分は1ルールあたり加算 | 不要なルール/IPを整理し集約する |
| 処理データ量 | LB を通過したデータ量に対して課金 | Cloud CDN でオリジン転送を削減 |
| リージョン間/下り通信 | 下り(外部/リージョン間)は別途ネットワーク課金 | ユーザーに近いリージョンへ配置 |
| Cloud Armor | ポリシー数 + 評価リクエスト数で別課金 | ルールを最小化し共通ポリシー化 |
セキュリティ
- TLS をロードバランサで終端し、最新の SSL ポリシー(TLS バージョン/暗号スイートのプロファイル: MODERN / RESTRICTED など) を適用する
- Cloud Armor を L7 LB に紐付け、WAF ルール(OWASP プリセット)・レート制限・地理ベースのアクセス制御・DDoS 防御を実施
- IAP(Identity-Aware Proxy) をロードバランサ前段で有効化すると、アプリ改修なしに ID ベースのアクセス制御を追加できる
- 内部向けには内部アプリケーション LB / 内部パススルー ネットワーク LBを使い、VPC とファイアウォールルールで受信を制御する
インターネット公開の L7 ロードバランサを Cloud Armor なしで運用するのは NG。 WAF / レート制限 / DDoS 防御が無い状態で晒すと、L7 攻撃やボリューム攻撃を直接バックエンドが受けてしまいます。前段に Cloud Armor ポリシーを必ず付与しましょう。
関連サービス・比較(AWS との対応)
Cloud Load Balancing は単一プロダクトの中で L7/L4・外部/内部を「種類」で切り替えます。AWS では ALB / NLB / GWLB という別タイプとして提供される点が対応関係の要です。
| 観点 | Cloud Load Balancing (GCP) | Elastic Load Balancing (AWS) |
|---|---|---|
| 位置づけ | GCP のフルマネージド負荷分散(種類で使い分け) | AWS の負荷分散(ALB/NLB/GWLB の3タイプ) |
| L7 (HTTP/HTTPS) | 外部/内部アプリケーション LB | Application Load Balancer (ALB) |
| L4 (TCP/UDP) | プロキシ/パススルー ネットワーク LB | Network Load Balancer (NLB) |
| スコープ | 単一 Anycast IP でグローバル分散が可能 | 原則リージョン内(複数AZ) |
| ルーティング設定 | URL マップ + バックエンドサービス | リスナー + ターゲットグループ |
| バックエンド指定 | インスタンスグループ(MIG) / NEG | ターゲットグループ(EC2/IP/Lambda) |
| 証明書管理 | Google マネージド証明書 / 証明書マネージャー | AWS Certificate Manager (ACM) |
| WAF | Cloud Armor | AWS WAF + Shield |
| CDN 連携 | Cloud CDN を LB に統合 | CloudFront は別構成 |
ハンズオン / CLI例
# 1. ヘルスチェックを作成(HTTP /healthz を監視)
gcloud compute health-checks create http web-hc \
--port=80 --request-path=/healthz
# 2. バックエンドサービスを作成(グローバル/外部・HTTP)
gcloud compute backend-services create web-backend \
--protocol=HTTP --port-name=http \
--health-checks=web-hc --global
# 3. マネージドインスタンスグループをバックエンドに追加
gcloud compute backend-services add-backend web-backend \
--instance-group=web-mig \
--instance-group-zone=asia-northeast1-a --global
# 4. URL マップ(既定の振り分け先)を作成
gcloud compute url-maps create web-map \
--default-service=web-backend
# 5. ターゲット HTTP プロキシ + グローバル転送ルール(入口の IP/ポート)
gcloud compute target-http-proxies create web-proxy --url-map=web-map
gcloud compute forwarding-rules create web-fr \
--target-http-proxy=web-proxy --global --ports=80
Google Cloud Service
Cloud Load Balancingを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ネットワーキング
比較で見る軸
クラウド: Google Cloud / カテゴリ: ネットワーキング / 難易度: intermediate
導入後に効く点
単一のAnycast IPでリージョンを跨ぎグローバル分散、暖機も不要。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Google Cloud
- カテゴリ
- ネットワーキング
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- reliability / performance / security / operational
判断チェックリスト
- 自社の用途が「ネットワーキング / reliability」に近いか確認する。
- 強みである「通信を複数バックエンドへ振り分けるマネージドな交通整理役。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。
他クラウドの同等サービス
役割が近いサービスです。設計の置き換えや比較検討の参考に。