内部ロード バランシングと DNS 名

DNS アドレス レコード(A レコード)は、DNS 名を IP アドレスにマッピングするために使用されます。内部ロードバランサに転送ルールを作成するときに、サービスラベルを指定することもできます。このラベルを指定すると、Google Cloud はロードバランサに一意の Compute Engine 内部 DNS 名を作成します。この内部 DNS 名は、プロジェクト ID、転送ルールの名前、指定したサービスラベルから構成されます。

仕様

  • この機能は、次のロードバランサに対してサポートされます。

  • ロードバランサ用に Google Cloud が作成する DNS 名の形式の詳細は、DNS レコードの形式をご覧ください。DNS 名には転送ルールの名前が含まれているため、複数の転送ルールに同じサービスラベルを使用している場合でも DNS 名は一意になります。

  • 代替ネームサーバーが構成されていない限り、同じプロジェクトと VPC ネットワーク内の任意のリージョンにあるクライアント VM は、ロードバランサの内部 DNS 名に対して DNS ルックアップを実行できます。ロードバランサにアクセスするには、グローバル アクセスが有効になっていない限り、クライアント VM を同じリージョンに配置する必要があります。グローバル アクセスを有効にすると、どのリージョンのクライアントもロードバランサにアクセスできるようになります。

  • 転送ルールを作成するときにのみ、サービスラベルを指定できます。既存の転送ルールにサービスラベルを追加することはできません。ただし、既存の転送ルールを、サービスラベルを持つ新しい転送ルールに置き換えることはできます。元の転送ルールを最初に削除した場合、元の IP アドレスと同じ内部 IP アドレスを使用できます。

  • サービスラベルから作成された内部 DNS 名には次の制限があります。

    • 対応する逆(PTR)レコードは作成されません。
    • 転送ルールごとに指定できるサービスラベルは 1 つのみです。
    • 内部 DNS 名のうち、サービスラベルと転送ルールの名前以外の部分は変更できません。形式やドメイン名の部分についても同様です(.internal)。

    内部ロードバランサにさらに柔軟な DNS 名が必要な場合は、Cloud DNS 限定公開マネージド ゾーンにカスタム レコードを作成することもできます。

DNS レコード形式

転送ルールにサービスラベルを追加すると、次のいずれかの形式で Compute Engine 内部 DNS A レコードが作成されます。

  • 内部パススルー ネットワーク ロードバランサの場合:

    SERVICE_LABEL.FORWARDING_RULE_NAME.il4.REGION.lb.PROJECT_ID.internal

  • リージョン内部アプリケーション ロードバランサの場合:

    SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT_ID.internal

SERVICE_LABEL は、指定した転送ルールのサービスラベルです。次の形式にする必要があります。

  • 最大で合計 63 文字の小文字(az)、数値(09)、ダッシュ(-)を使用できます。
  • サービスラベルの最初の文字は小文字英字である必要があります。
  • サービスラベルの末尾の文字は小文字英字または数字にしてください。

FORWARDING_RULE_NAME は、作成する転送ルールの名前です。

REGION は、ロードバランサのリージョンです。

PROJECT_ID は、プロジェクト ID です。フォーム organization:project-id のプロジェクト ID は project-id.organization に変換されます。たとえば、プロジェクト ID が example.com:example-marketing-prod の場合、Google Cloud は example-marketing-prod.example.com を使用します。

サービスラベルを使用した転送ルールの作成

以下の手順では、内部パススルー ネットワーク ロードバランサまたは内部アプリケーション ロードバランサのサービスラベルを使用した転送ルールの作成方法を説明します。

ここでは、サービスラベルを使用して転送ルールを作成する方法について説明します。ロードバランサのバックエンド構成のプロパティとフロントエンド構成のその他のプロパティについては説明しません。内部パススルー ネットワーク ロードバランサまたは内部アプリケーション ロードバランサを初めて使用する場合は、次のページで詳細な例をご覧ください。

コンソール

  1. Google Cloud コンソールの [ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. [ロードバランサを作成] をクリックします。
  3. ウィザードの指示に従って内部パススルー ネットワーク ロードバランサまたは内部アプリケーション ロードバランサを作成し、[構成] をクリックします。
  4. ロードバランサの名前を指定します。
  5. [続行] をクリックします。
  6. [バックエンドの構成] を完了してください。
  7. [フロントエンドの構成] をクリックします。フロントエンドの構成を完了し、そのセクションの下部で、サービスラベルを指定します。

  8. [完了] をクリックしてから、[確認と完了] をクリックします。

gcloud

サービスラベルを使用して内部パススルー ネットワーク ロードバランサの転送ルールを作成するには:

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL \
    --region=REGION \
    --backend-service-region=REGION \
    --backend-service=BACKEND_SERVICE_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=PROTOCOL \
    --ports=PORTS \
    --service-label=SERVICE_LABEL

サービスラベルを使用して内部 HTTPS ロードバランサの転送ルールを作成するには:

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-https-proxy-region=REGION \
    --target-https-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=443 \
    --service-label=SERVICE_LABEL

サービスラベルを使用して内部 HTTP ロードバランサの転送ルールを作成するには:

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-http-proxy-region=REGION \
    --target-http-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=PORT \
    --service-label=SERVICE_LABEL

プレースホルダを適切な値に置き換えます。

  • FORWARDING_RULE_NAME は、ロードバランサの転送ルールの名前です。
  • REGION は、ロードバランサのリージョンです。
  • BACKEND_SERVICE_NAME は、ロードバランサのバックエンド サービスの名前です。
  • TARGET_PROXY_NAME は、ターゲット HTTPS プロキシ(内部 HTTPS ロードバランサの場合)、またはターゲット HTTP プロキシ(内部 HTTP ロードバランサの場合)の名前です。
  • NETWORK は、ロードバランサが作成される VPC ネットワークの名前です。
  • SUBNETは、VPC ネットワーク内のサブネットの名前です。サブネットは、ロードバランサのバックエンド サービスまたはターゲット プロキシと同じリージョンに存在する必要があります。
  • INTERNAL_IP は、選択したサブネットのプライマリ IP 範囲の内部 IP アドレスです。--address フラグを省略すると、Google Cloud で使用可能な IP アドレスが選択されます。
  • 内部パススルー ネットワーク ロードバランサの PROTOCOL は、ロードバランサのバックエンド サービスのプロトコルと一致する TCP または UDP です。内部アプリケーション ロードバランサの場合、プロトコルは TCP にする必要があります。
  • 内部パススルー ネットワーク ロードバランサの場合、PORTS は最大 5 個のポート番号で構成される配列または ALL という単語です。内部 HTTPS ロードバランサの場合は、ポートに 443 を使用する必要があります。内部 HTTP ロードバランサの場合、PORT には 80 または 8080 を使用できます。詳細については、転送ルールのコンセプトでポートの仕様をご覧ください。
  • SERVICE_LABEL は、指定するサービスラベルです。命名規則に従ってください。

api

次の例では、forwardingRules.insert メソッドを使用して転送ルールを作成します。

サービスラベルを使用して内部パススルー ネットワーク ロードバランサの転送ルールを作成するには:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL",
  "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/backendServices/BACKEND_SERVICE_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "PROTOCOL",
  "ports": PORTS,
  "serviceLabel": "SERVICE_LABEL"
}

サービスラベルを使用して内部 HTTPS ロードバランサの転送ルールを作成するには:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL_MANAGED",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/targetHttpsProxies/TARGET_PROXY_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "TCP",
  "ports": 443,
  "serviceLabel": "SERVICE_LABEL"
}

サービスラベルを使用して内部 HTTP ロードバランサの転送ルールを作成するには:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL_MANAGED",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/targetHttpProxies/TARGET_PROXY_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "TCP",
  "ports": PORT,
  "serviceLabel": "SERVICE_LABEL"
}

プレースホルダを適切な値に置き換えます。

  • FORWARDING_RULE_NAME は、ロードバランサの転送ルールの名前です。
  • REGION は、ロードバランサのリージョンです。
  • BACKEND_SERVICE_NAME は、内部パススルー ネットワーク ロードバランサのバックエンド サービスの名前です。
  • TARGET_PROXY_NAME は、ターゲット HTTPS プロキシ(内部 HTTPS ロードバランサの場合)、またはターゲット HTTP プロキシ(内部 HTTP ロードバランサの場合)の名前です。
  • NETWORK は、ロードバランサが作成される VPC ネットワークの名前です。
  • SUBNETは、VPC ネットワーク内のサブネットの名前です。サブネットは、ロードバランサのバックエンド サービスまたはターゲット プロキシと同じリージョンに存在する必要があります。
  • INTERNAL_IP は、選択したサブネットのプライマリ IP 範囲の内部 IP アドレスです。IPAddress キーを省略すると、Google Cloud で使用可能な IP アドレスが選択されます。
  • 内部パススルー ネットワーク ロードバランサの PROTOCOL は、ロードバランサのバックエンド サービスのプロトコルと一致する TCP または UDP です。内部アプリケーション ロードバランサの場合、プロトコルは TCP にする必要があります。
  • 内部パススルー ネットワーク ロードバランサの場合、PORTS は最大 5 個のポート番号で構成される配列または ALL という単語です。内部 HTTPS ロードバランサの場合は、ポートに 443 を使用する必要があります。内部 HTTP ロードバランサの場合、PORT には 80 または 8080 を使用できます。詳細については、転送ルールのコンセプトでポートの仕様をご覧ください。
  • SERVICE_LABEL は、指定するサービスラベルです。命名規則に従ってください。

サービスラベルの表示

コンソール

内部ロードバランサの内部転送ルールごとに、Compute Engine の内部 DNS 名(サービスラベルから作成)を表示できます。

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. 内部ロードバランサの名前をクリックして、詳細ページを表示します。

  3. ロードバランサに割り当てられた内部転送ルールは、フロントエンド セクションに一覧表示されます。DNS 名列には、各転送ルールに割り当てられた Compute Engine 内部 DNS 名が表示されます。サービスラベルは、その名前の最初の部分(最初のドットの前)です。名前が表示されない場合は、転送ルールにサービスラベルが定義されていません。

gcloud

  1. 内部パススルー ネットワーク ロードバランサまたは内部アプリケーション ロードバランサが使用するプロジェクトの転送ルールを一覧表示します。必要なものを探し、名前とリージョンをメモします。この情報は次のステップで使用します。

    gcloud compute forwarding-rules list \
        --filter="loadBalancingScheme=SCHEME"
    

    SCHEME の値は、リストする必要がある転送ルールによって異なります。

    • 内部パススルー ネットワーク ロードバランサの場合は、INTERNAL を使用します。
    • 内部アプリケーション ロードバランサの場合は、INTERNAL_MANAGED を使用します。
  2. 転送ルールを記述し、FORWARDING_RULE_NAME をメモした名前に置き換え、REGION をメモしたリージョンに置き換えます。

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(serviceLabel)"
    

api

転送ルールとサービスラベルを forwardingRules.get メソッドで表示します。

API リクエストへのレスポンスには、サービスラベル(serviceLabel)と Compute Engine 内部 DNS 名(serviceName)が含まれます。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules/FORWARDING_RULE_NAME

TCP / UDP レスポンス:

{
  ...
  "serviceLabel": "SERVICE_LABEL",
  "serviceName": "SERVICE_LABEL.FORWARDING_RULE_NAME.il4.REGION.lb.PROJECT.internal",
  ...
}

HTTP(S) レスポンス:

{
  ...
  "serviceLabel": "SERVICE_LABEL",
  "serviceName": "SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT.internal",
  ...
}

次の手順では、転送ルールをサービスラベルを持つルールに置き換えます。この手順は、内部パススルー ネットワーク ロードバランサと内部アプリケーション ロードバランサの両方に対して有効です。

内部ロードバランサの転送ルールをまだ作成していない場合は、この例をスキップして、サービスラベルを使用した転送ルールの作成をご覧ください。

  1. 転送ルールの内部 IP アドレスをメモし、ロードバランサの既存の転送ルールの説明を記述します。

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(IPAddress)"
    
  2. 転送ルールを削除します。

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
        --region=REGION
    
  3. 同じ名前と内部 IP アドレスを使用して、サービスラベルを持つ代替ルールを作成します。詳細については、サービスラベルを使用した転送ルールの作成をご覧ください。

次のステップ