内部負荷分散と DNS 名

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

仕様

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

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

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

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

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

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

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

  • 共有内部 IP アドレスを参照する内部転送ルールでサービスラベルを定義することはできません。つまり、--purpose=SHARED_LOADBALANCER_VIP フラグを持つ内部 IP アドレスに対して Compute Engine の内部 DNS A レコードが自動的に作成されることはありません。このアドレスは 2 つ以上の内部転送ルールによって使用されるためです。

DNS レコード形式

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

  • 内部 TCP / UDP 負荷分散の場合:

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

  • 内部 HTTP(S) 負荷分散の場合:

    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 を使用します。

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

以下では、内部 TCP / UDP ロードバランサまたは内部 HTTP(S) ロードバランサのサービスラベルを使用した転送ルールの作成方法を説明します。

ここでは、サービスラベルを使用して転送ルールを作成する方法について説明します。ロードバランサのバックエンド構成のプロパティとフロントエンド構成のその他のプロパティについては説明しません。内部 TCP / UDP 負荷分散または内部 HTTP(S) 負荷分散を初めて使用する場合は、次のページにある詳細なサンプルをご覧ください。

Console

  1. Google Cloud Console の [負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. [ロードバランサを作成] をクリックします。
  3. [HTTP(S) 負荷分散] の [TCP 負荷分散] または [UDP 負荷分散] で、[構成を開始] をクリックします。
  4. [インターネット接続または内部専用] で、[VM 間のみ] を選択し、つづいて [続行] をクリックします。
  5. ロードバランサの [名前] を指定します。
  6. [バックエンドの設定] を完了してください。
  7. [フロントエンドの設定] をクリックします。フロントエンドの構成を完了させ、そのセクションの下部にある [サービスラベル] を指定します。
  8. [完了] をクリックし、つづいて [確認と完了] をクリックします。

gcloud

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

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

api

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

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

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

サービスラベルの表示

Console

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

  1. Google Cloud Console の [負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. 内部ロードバランサの名前をクリックして、詳細ページを表示します。
  3. ロードバランサに割り当てられた内部転送ルールは、フロントエンド セクションに一覧表示されます。DNS 名列には、各転送ルールに割り当てられた Compute Engine 内部 DNS 名が表示されます。サービスラベルは、その名前の最初の部分(最初のドットの前)です。名前が表示されない場合は、転送ルールにサービスラベルが定義されていません。

gcloud

  1. 内部 TCP / UDP 負荷分散または内部 HTTP(S) 負荷分散で使用されるプロジェクトの転送ルールを一覧表示します。必要なものを探し、名前とリージョンをメモします。この情報は次のステップで使用します。

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

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

    • 内部 TCP / UDP ロードバランサの場合は、INTERNAL を使用します。
    • 内部 HTTP(S) ロードバランサの場合は、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",
  ...
}

次の手順では、転送ルールをサービスラベルを持つルールに置き換えます。この手順は、内部 TCP / UDP 負荷分散と内部 HTTP(S) 負荷分散で機能します。

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

  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 アドレスを使用して、サービスラベルを持つ代替ルールを作成します。詳細については、サービスラベルを使用した転送ルールの作成をご覧ください。

次のステップ