転送ルールの使用

転送ルールとこれに対応する IP アドレスは、Google Cloud ロードバランサのフロントエンド構成を表します。転送ルールの概要については、転送ルールのコンセプトをご覧ください。

始める前に

転送ルールを追加する前に、転送ルールの IP アドレスを予約しておきます。これは要件ではありませんが、強くおすすめします。

内部ロードバランサの場合は、静的内部 IP アドレスを予約します。

外部ロードバランサの場合は、静的外部 IP アドレスを予約します。

権限

このガイドに従うには、必要な権限が付与されている必要があります。

詳細については、次のガイドをご覧ください。

転送ルールの追加

Console

ロードバランサの転送ルールを作成する

  1. Google Cloud Console の [負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. [ロードバランサを作成] をクリックします。
  3. ロードバランサのタイプを選択します。トラフィック タイプや、ロードバランサがインターネットに接続しているのかそれとも内部専用かを選択します。
  4. [続行] をクリックします。
  5. [フロントエンドの設定] をクリックします。[新しいフロントエンドの IP とポート] セクションで、次の変更を行います。

    1. 名前: FORWARDING_RULE_NAME
    2. サブネットワーク: SUBNET_OF_YOUR_RESERVED_IP_ADDRESS
    3. [内部 IP] または [IP アドレス] から、事前予約した IP アドレスを選択します。

      必要に応じて、IP アドレスをこの UI で予約することも、エフェメラル IP アドレスを使用することもできます。

    4. プロトコル、ポート番号、IP バージョンを選択します。

      一部のロードバランサ タイプでのみ、IPv6 がサポートされます。

    5. 続行する前に、[フロントエンドの設定] の隣に青いチェックマークがあることを確認します。ない場合は、この手順を確認します。

  6. [確認と完了] をクリックします。設定を再度確認します。

  7. [作成] をクリックします。

gcloud

バックエンド サービスの転送ルールを作成します。転送ルールを作成するときに、サブネットで予約した IP アドレスを指定します。

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --global | --region=REGION \
    --load-balancing-scheme=SCHEME \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --address=RESERVED_IP_ADDRESS \
    --ip-protocol=PROTOCOL_TYPE \
    --ports=PORT_NUMBER \
    --backend-service=NAME_OF_BACKEND_SERVICE \
    --backend-service-region=REGION_OF_BACKEND_SERVICE

api

リージョンのロードバランサの場合、forwardingRules.insert メソッドに対して POST リクエストを作成して、リージョン転送ルールを作成します。

POST https://compute.googleapis.com/compute/v1/projects/[project ID]/regions/us-west1/forwardingRules
{
  "name": "[forwarding rule name]",
  "IPAddress": "[reserved IP address]",
  "IPProtocol": "[protocol type]",
  "ports": [
    "[port number]"
  ],
  "loadBalancingScheme": "[scheme]",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/subnetworks/[subnet name]",
  "network": "https://www.googleapis.com/compute/v1/projects/[project ID]/global/networks/[network name]",
  "backendService": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/backendServices/[backend service name]",
  "networkTier": "PREMIUM | STANDARD"
}
</code></pre>

グローバル ロードバランサの場合、globalForwardingRules.insert メソッドに対して POST リクエストを作成してグローバル転送ルールを作成します。

POST https://compute.googleapis.com/compute/v1/projects/[project ID]/global/forwardingRules
{
  "name": "[forwarding rule name]",
  "IPAddress": "[reserved IP address]",
  "IPProtocol": "[protocol type]",
  "ports": [
    "[port number]"
  ],
  "loadBalancingScheme": "[scheme]",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/subnetworks/[subnet name]
  "network": "https://www.googleapis.com/compute/v1/projects/[project ID]/global/networks/[network name]",
  "backendService": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/backendServices/[backend service name]
  "networkTier": "PREMIUM | STANDARD"
}

転送ルールの削除

次のような理由で転送ルールの削除が必要な場合があります。

  • 新しい転送ルールに置き換える
  • ロードバランサを完全に削除せずに、一定期間ロードバランサを停止する

ロードバランサを削除せずに停止する必要がある理由は 2 つあります。

  • ロードバランサの料金を一時停止する
  • バックエンドへ送られてくるリクエストを一時的に一時停止する

転送ルールが予約 IP アドレスを指している場合(推奨)は、転送ルールを削除してロードバランサを停止できます。これにより、転送ルール宛先へのトラフィックが停止します。

グローバル転送ルールを削除するには:

gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
    --global

リージョン転送ルールを削除するには:

gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
    --region=REGION

ロードバランサを再開するには、転送ルールの追加の説明に従って、転送ルールを再作成し、同じ IP アドレスを維持します。

Service Directory による転送ルールの構成

Service Directory による内部ロードバランサの転送ルールを登録できます。

内部 TCP/UDP ロードバランサまたは内部 HTTP(S) ロードバランサを構成する際には、既存の Service Directory の名前空間と選択のサービスにエンドポイントとして登録できます。その後、クライアント アプリケーションは、HTTP、gRPC、DNS(Service Directory DNS ゾーンを作成した場合)を使用し Service Directory を使用して、内部ロードバランサ サービスのアドレスを解決し、それに直接接続できます。

内部 TCP/UDP ロードバランサの登録

内部 TCP/UDP ロードバランサを登録するには、次のとおりにします。

gcloud

gcloud compute forwarding-rules create コマンドを実行して、service-directory-registrations フラグを設定します。

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=INTERNAL \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --address=RESERVED_IP_ADDRESS \
    --ip-protocol=PROTOCOL_TYPE \
    --ports=PORT_NUMBER \
    --backend-service=BACKEND_SERVICE_NAME \
    --backend-service-region=REGION
    --service-directory-registrations namespace=SD_NAMESPACE_NAME, \
                        service=SD_SERVICE_NAME

以下を置き換えます。

  • FORWARDING_RULE_NAME: 作成する転送ルールの名前
  • REGION: 転送ルールを作成するリージョン
  • NETWORK_NAME: この転送ルールが適用されるネットワーク
  • SUBNET_NAME: この転送ルールが適用されるサブネットワーク
  • RESERVED_IP_ADDRESS: 転送ルールが提供する IP アドレス
  • PROTOCOL_TYPE: ルールが提供する IP プロトコル
  • PORT_NUMBER: カンマ区切りのポートのリスト
  • BACKEND_SERVICE_NAME: トラフィックを受信する対象のバックエンド サービス
  • SD_NAMESPACE_NAME: 内部 TCP/UDP ロードバランサを登録する Service Directory 名前空間の名前この名前空間の Google Cloud プロジェクトとリージョンは、この転送ルールから pull されます。
  • SD_SERVICE_NAME: エンドポイントを登録する Service Directory サービスの名前Service Directory の名前空間の名前の中に存在する必要があります。

内部 HTTP(S) ロードバランサの登録

内部 HTTP(S) ロードバランサを登録するには、次のとおりにします。

gcloud

gcloud compute forwarding-rules create コマンドを実行して、service-directory-registrations フラグを設定します。

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --network=NETWORK_NAME \
    --address=RESERVED_IP_ADDRESS \
    --target-https-proxy=PROXY_NAME \
    --target-https-proxy-region=PROXY_REGION \
    --ports=PORT_NUMBER \
    --service-directory-registrations namespace=SD_NAMESPACE_NAME, \
                        service=SD_SERVICE_NAME

以下を置き換えます。

  • FORWARDING_RULE_NAME: 作成する転送ルールの名前
  • REGION: 転送ルールを作成するリージョン
  • NETWORK_NAME: この転送ルールが適用されるネットワーク
  • RESERVED_IP_ADDRESS: 転送ルールが提供する IP アドレス
  • PROXY_NAME: トラフィックを受信する対象のプロキシ
  • PROXY_REGION: プロキシが動作するリージョン
  • PORT_NUMBER: カンマ区切りのポートのリスト
  • SD_NAMESPACE_NAME: 内部 HTTP(S) ロードバランサを登録する Service Directory 名前空間の名前この名前空間の Google Cloud プロジェクトとリージョンは、この転送ルールから pull されます。
  • SD_SERVICE_NAME: エンドポイントを登録する Service Directory サービスの名前Service Directory の名前空間の名前の中に存在する必要があります。

Service Directory によって内部ロードバランサを構成する方法の詳細については、Service Directory での内部ロードバランサの構成をご覧ください。

次のステップ