內部負載平衡和 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) 記錄。
    • 每個轉送規則只能有一個服務標籤。
    • 除了服務標籤和轉送規則名稱,您不能變更內部 DNS 名稱中的其他部分,包括格式和網域名稱 (.internal)。

    如果您的內部負載平衡器需要更有彈性的 DNS 名稱,您可以在 Cloud DNS 代管的私人區域中建立自訂記錄。

DNS 記錄格式

當您在轉送規則中新增服務標籤時, Google Cloud 會使用下列其中一種格式建立 Compute Engine 內部 DNS A 記錄:

  • 針對內部直通式網路負載平衡器:

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

  • 區域性內部應用程式負載平衡器和區域性內部 Proxy 網路負載平衡器:

    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

建立具有服務標籤的轉送規則

本程序說明如何建立具有服務標籤的轉送規則。

這個程序著重於如何建立具有服務標籤的轉送規則。負載平衡器的後端設定屬性和前端設定的其他屬性均會省略。如果您不熟悉內部直通式網路負載平衡器、區域性內部應用程式負載平衡器或區域性內部 Proxy 網路負載平衡器,請參閱這些頁面,瞭解完整範例:

主控台

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「Load balancing」(負載平衡) 頁面

  2. 點選「建立負載平衡器」
  3. 完成精靈的步驟,建立內部直通式網路負載平衡器或區域性內部應用程式負載平衡器,然後按一下「設定」
  4. 指定負載平衡器的名稱。
  5. 點選「繼續」
  6. 完成「Backend configuration」(後端設定)
  7. 按一下 [Frontend configuration] (前端設定)。完成前端設定,在該區段底部指定「Service label」(服務標籤)

  8. 依序按一下 [Done] (完成) 及 [Review and finalize] (檢查並完成)

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

如要為區域性內部 Proxy 網路負載平衡器建立具有服務標籤的轉送規則,請按照下列步驟操作:

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-tcp-proxy-region=REGION \
    --target-tcp-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=PORT \
    --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=PORT \
    --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 是目標 Proxy 的名稱。
  • NETWORK 是負載平衡器建立所在的 VPC 網路名稱。
  • SUBNET 是虛擬私人雲端網路中子網路的名稱。子網路必須與負載平衡器的後端服務或目標 Proxy 位於相同區域。
  • INTERNAL_IP 是所選子網路中主要 IP 範圍內的內部 IP 位址。您可以省略 --address 旗標,由Google Cloud 為您選擇可用的 IP 位址。
  • 針對內部直通式網路負載平衡器,PROTOCOLTCPUDP,符合負載平衡器後端服務的通訊協定。區域內部應用程式負載平衡器和區域內部 Proxy 網路負載平衡器的通訊協定必須為 TCP
  • 對於內部直通式網路負載平衡器,PORTS 是一個陣列,最多可包含五個以數字表示的通訊埠,或是 ALL 字樣。對於區域性內部應用程式負載平衡器和區域性內部 Proxy 網路負載平衡器,您可以參照 1 到 65535 之間的其中一個連接埠。如需詳細資訊,請參閱轉送規則概念中的連接埠規格
  • 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"
}

如要為區域性內部 Proxy 網路負載平衡器建立具有服務標籤的轉送規則,請按照下列步驟操作:

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/targetTcpProxies/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"
}

如要為區域性內部應用程式負載平衡器 (含 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": PORT,
  "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 是目標 Proxy 的名稱。
  • NETWORK 是負載平衡器建立所在的 VPC 網路名稱。
  • SUBNET 是虛擬私人雲端網路中子網路的名稱。子網路必須與負載平衡器的後端服務或目標 Proxy 位於相同區域。
  • INTERNAL_IP 是所選子網路中主要 IP 範圍內的內部 IP 位址。您可以省略 IPAddress 索引鍵,由Google Cloud 為您選擇可用的 IP 位址。
  • 針對內部直通式網路負載平衡器,PROTOCOLTCPUDP,符合負載平衡器後端服務的通訊協定。區域內部應用程式負載平衡器和區域內部 Proxy 網路負載平衡器的通訊協定必須為 TCP
  • 對於內部直通式網路負載平衡器,PORTS 是一個陣列,最多可包含五個以數字表示的通訊埠,或是 ALL 字樣。對於區域性內部應用程式負載平衡器和區域性內部 Proxy 網路負載平衡器,您可以參照 1 到 65535 之間的其中一個連接埠。如需詳細資訊,請參閱轉送規則概念中的連接埠規格
  • SERVICE_LABEL 是您選擇的服務標籤,必須遵循命名慣例

查看服務標籤

Console

您可以針對內部負載平衡器的每個內部轉送規則,查看 Compute Engine 內部 DNS 名稱 (由服務標籤建立):

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。

    前往「負載平衡」

  2. 按一下內部負載平衡器的名稱,查看其詳細資料頁面。

  3. 指派給負載平衡器的內部轉送規則會列在「Frontend」(前端) 區段中。「DNS name」(DNS 名稱) 欄會顯示指派給各個轉送規則的 Compute Engine 內部 DNS 名稱。服務標籤位於名稱中的第一部分 (在第一個點之前)。如未顯示名稱,表示轉送規則未定義服務標籤。

gcloud

  1. 列出專案中內部直通式網路負載平衡器或區域內部應用程式負載平衡器使用的轉送規則。找出所需的項目,並記下名稱和地區,以便執行下一個步驟。

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

    SCHEME 的值取決於您需要列出的轉寄規則:

    • 如果是內部直通式網路負載平衡器,請使用 INTERNAL
    • 如要使用區域內部應用程式負載平衡器和區域內部 Proxy 網路負載平衡器,請使用 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

內部直通式網路負載平衡器回應:

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

區域性內部 Proxy 網路負載平衡器和區域性內部應用程式負載平衡器回應:

{
  ...
  "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 位址的替換轉送規則,並加上服務標籤。如需操作說明,請參閱「建立具有服務標籤的轉送規則」。

後續步驟