Internes Load-Balancing und DNS-Namen

Ein DNS-Adresseintrag, auch als A-Eintrag bezeichnet, wird verwendet, um einer IP-Adresse einen DNS-Namen zuzuordnen. Wenn Sie die Weiterleitungsregel für einen internen Load-Balancer erstellen, können Sie optional ein Dienstlabel festlegen, sodass Google Cloud einen eindeutigen internen DNS-Namen in Compute Engine für den Load-Balancer erstellt. Dieser interne DNS-Name wird aus Ihrer Projekt-ID, dem Namen der Weiterleitungsregel und einem von Ihnen angegebenen Dienstlabel erstellt.

Spezifikationen

  • Dieses Feature wird von Weiterleitungsregeln für diese Load-Balancer unterstützt:

  • Weitere Informationen über das Format des DNS-Namens, den Google Cloud für den Load-Balancer erstellt, finden Sie unter Format des DNS-Eintrags. Da der DNS-Name den Namen der Weiterleitungsregel enthält, gibt es jeden DNS-Namen nur einmal, auch wenn Sie für mehrere Weiterleitungsregeln dasselbe Dienstlabel verwenden.

  • Sofern nicht ein alternativer Nameserver konfiguriert ist, können Client-VMs in einer beliebigen Region im selben Projekt und VPC-Netzwerk DNS-Lookups für den internen DNS-Namen des Load-Balancers durchführen. Für den Zugriff auf den Load-Balancer müssen sich Client-VMs in derselben Region befinden, es sei denn, der globale Zugriff ist verfügbar und aktiviert. Wenn Sie den globalen Zugriff aktivieren, können Clients in beliebigen Regionen auf den Load-Balancer zugreifen.

  • Sie können nur dann ein Dienstlabel angeben, wenn Sie eine Weiterleitungsregel erstellen. Einer bereits bestehenden Weiterleitungsregel können Sie kein Dienstlabel hinzufügen. Sie können die bestehende Weiterleitungsregel jedoch durch eine neue Weiterleitungsregel ersetzen, die mit einem Dienstlabel versehen ist. Diese neue Weiterleitungsregel kann die gleiche interne IP-Adresse wie das Original verwenden. Dazu müssen Sie die ursprüngliche Weiterleitungsregel aber zuerst löschen.

  • Für die aus Dienstlabels erstellten internen DNS-Namen gelten die folgenden Einschränkungen:

    • Es werden keine entsprechenden umgekehrten bzw. PTR-Einträge erstellt.
    • Jede Weiterleitungsregel kann nur ein Dienstlabel enthalten.
    • Abgesehen von den Namen des Dienstlabels und der Weiterleitungsregel können Sie keinen anderen Teil des internen DNS-Namens ändern. Auch nicht das Format und den Domainnamen (.internal).

    Wenn Sie flexiblere DNS-Namen für den internen Load-Balancer benötigen, können Sie in einer von Cloud DNS verwalteten privaten Zone benutzerdefinierte Einträge erstellen.

Format des DNS-Eintrags

Wenn Sie einer Weiterleitungsregel ein Dienstlabel hinzufügen, erstellt Google Cloud einen internen DNS-A-Eintrag in Compute Engine mit einem der folgenden Formate:

  • Für interne Passthrough-Network Load Balancer:

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

  • Für regionale interne Application Load Balancer:

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

SERVICE_LABEL ist das von Ihnen angegebene Dienstlabel der Weiterleitungsregel. Es muss diesem Format entsprechen:

  • Sie können bis zu 63 Kleinbuchstaben (a bis z), Zahlen (0 bis 9) oder Bindestriche (-) verwenden.
  • Ein Dienstlabel muss mit einem Kleinbuchstaben beginnen.
  • Ein Dienstlabel muss mit einem Kleinbuchstaben oder einer Zahl enden.

FORWARDING_RULE_NAME ist der Name der Weiterleitungsregel, die Sie erstellen.

REGION ist die Region des Load-Balancers.

PROJECT_ID ist die Projekt-ID. Projekt-IDs im Format organization:project-id werden in project-id.organization konvertiert. Wenn Ihre Projekt-ID beispielsweise example.com:example-marketing-prod lautet, verwendet Google Cloud example-marketing-prod.example.com.

Weiterleitungsregel mit einem Dienstlabel erstellen

Dieses Verfahren zeigt, wie Sie eine Weiterleitungsregel mit einem Dienstlabel für einen internen Passthrough-Netzwerk-Load-Balancer oder einen internen Application Load Balancer erstellen.

In diesem Verfahren liegt der Schwerpunkt nur darauf, wie eine Weiterleitungsregel mit einem Dienstlabel erstellt wird. Die Attribute der Backend-Konfiguration des Load-Balancers und andere Attribute der Frontend-Konfiguration werden ausgelassen. Wenn Sie interne Passthrough-Netzwerk-Load-Balancer oder interne Application Load Balancer noch nicht kennen, finden Sie auf diesen Seiten die vollständigen Beispiele:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.

    Load-Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.
  3. Führen Sie die Schritte des Assistenten aus, um entweder einen internen Passthrough-Network Load Balancer oder einen internen Application Load Balancer zu erstellen, und klicken Sie auf Konfigurieren.
  4. Geben Sie einen Namen für den Load-Balancer an.
  5. Klicken Sie auf Weiter.
  6. Schließen Sie die Backend-Konfiguration ab.
  7. Klicken Sie auf Frontend-Konfiguration. Schließen Sie die Frontend-Konfiguration ab und geben Sie am Ende des Abschnitts ein Dienstlabel an.

  8. Klicken Sie auf Fertig und anschließend auf Prüfen und abschließen.

gcloud

So erstellen Sie eine Weiterleitungsregel mit einem Dienstlabel für einen internen Passthrough-Network Load Balancer:

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

So erstellen Sie eine Weiterleitungsregel mit einem Dienstlabel für einen internen HTTPS-Load-Balancer:

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

So erstellen Sie eine Weiterleitungsregel mit einem Dienstlabel für einen internen HTTP-Load-Balancer:

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

Ersetzen Sie die Platzhalter durch die jeweiligen Werte:

  • FORWARDING_RULE_NAME ist der Name der Weiterleitungsregel des Load-Balancers.
  • REGION ist die Region des Load-Balancers.
  • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes des Load-Balancers.
  • TARGET_PROXY_NAME ist der Name des HTTPS-Ziel-Proxys (bei einem internen HTTPS-Load-Balancer) oder des HTTP-Ziel-Proxys (bei einem internen HTTP-Load-Balancer).
  • NETWORK ist der Name des VPC-Netzwerks, in dem der Load-Balancer erstellt wird.
  • SUBNET ist der Name eines Subnetzes im VPC-Netzwerk. Das Subnetz muss sich in derselben Region befinden wie der Back-End-Dienst oder der Zielproxy des Load-Balancers.
  • INTERNAL_IP ist eine interne IP-Adresse im primären IP-Bereich des ausgewählten Subnetzes. Sie können das Flag --address auslassen, damit Google Cloud Ihnen eine verfügbare IP-Adresse zuweist.
  • Bei internen Passthrough-Network Load Balancern ist PROTOCOL in Übereinstimmung mit dem Protokoll des Backend-Dienstes des Load-Balancers entweder TCP oder UDP. Für interne Application Load Balancer muss das Protokoll TCP sein.
  • Für interne Passthrough-Network-Load-Balancer ist PORTS ein Array von bis zu fünf Ports mit der entsprechenden Zahl oder mit ALL. Für interne HTTPS-Load-Balancer müssen Sie 443 für den Port verwenden. Für interne HTTP-Load-Balancer können Sie entweder 80 oder 8080 für PORT nutzen. Weitere Informationen hierzu finden Sie in den Weiterleitungsregeln unter Portspezifikationen.
  • SERVICE_LABEL ist Ihr gewünschtes Dienstlabel. Es muss den Namenskonventionen entsprechen.

API

In den folgenden Beispielen werden Weiterleitungsregeln mithilfe der Methode forwardingRules.insert erstellt.

So erstellen Sie eine Weiterleitungsregel mit einem Dienstlabel für einen internen Passthrough-Network Load Balancer:

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

So erstellen Sie eine Weiterleitungsregel mit einem Dienstlabel für einen internen HTTPS-Load-Balancer:

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

So erstellen Sie eine Weiterleitungsregel mit einem Dienstlabel für einen internen HTTP-Load-Balancer:

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

Ersetzen Sie die Platzhalter durch die jeweiligen Werte:

  • FORWARDING_RULE_NAME ist der Name der Weiterleitungsregel des Load-Balancers.
  • REGION ist die Region des Load-Balancers.
  • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes des internen Passthrough-Network Load Balancers.
  • TARGET_PROXY_NAME ist der Name des HTTPS-Ziel-Proxys (bei einem internen HTTPS-Load-Balancer) oder des HTTP-Ziel-Proxys (bei einem internen HTTP-Load-Balancer).
  • NETWORK ist der Name des VPC-Netzwerks, in dem der Load-Balancer erstellt wird.
  • SUBNET ist der Name eines Subnetzes im VPC-Netzwerk. Das Subnetz muss sich in derselben Region befinden wie der Back-End-Dienst oder der Zielproxy des Load-Balancers.
  • INTERNAL_IP ist eine interne IP-Adresse im primären IP-Bereich des ausgewählten Subnetzes. Sie können den Schlüssel IPAddress auslassen, damit Google Cloud Ihnen eine verfügbare IP-Adresse zuweist.
  • Bei internen Passthrough-Network Load Balancern ist PROTOCOL in Übereinstimmung mit dem Protokoll des Backend-Dienstes des Load-Balancers entweder TCP oder UDP. Für interne Application Load Balancer muss das Protokoll TCP sein.
  • Für interne Passthrough-Network-Load-Balancer ist PORTS ein Array von bis zu fünf Ports mit der entsprechenden Zahl oder mit ALL. Für interne HTTPS-Load-Balancer müssen Sie 443 für den Port verwenden. Für interne HTTP-Load-Balancer können Sie entweder 80 oder 8080 für PORT nutzen. Weitere Informationen hierzu finden Sie in den Weiterleitungsregeln unter Portspezifikationen.
  • SERVICE_LABEL ist Ihr gewünschtes Dienstlabel. Es muss den Namenskonventionen entsprechen.

Dienstlabels ansehen

Console

Sie können den internen DNS-Namen in Compute Engine, der aus dem Dienstlabel erstellt wurde, für jede interne Weiterleitungsregel eines internen Load-Balancers anzeigen lassen:

  1. Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.

    Load-Balancing aufrufen

  2. Klicken Sie auf den Namen des internen Load-Balancers, um dessen Details anzusehen.

  3. Die internen Weiterleitungsregeln, die dem Load-Balancer zugewiesen sind, werden im Abschnitt Frontend aufgeführt. Die Spalte DNS-Name zeigt den internen DNS-Namen in Compute Engine an, der den einzelnen Weiterleitungsregeln zugewiesen ist. Das Dienstlabel ist der erste Teil dieses Namens (vor dem ersten Punkt). Wird kein Name angezeigt, ist für die Weiterleitungsregel kein Dienstlabel definiert.

gcloud

  1. Listen Sie Weiterleitungsregeln in Ihrem Projekt auf, die entweder von internen Passthrough-Netzwerk-Load-Balancern oder von internen Application Load Balancern verwendet werden. Suchen Sie die gewünschte Weiterleitungsregel und notieren Sie sich den Namen und die Region für den nächsten Schritt.

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

    Der Wert von SCHEME hängt von den Weiterleitungsregeln ab, die Sie auflisten müssen:

    • Verwenden Sie für interne Passthrough-Network Load Balancer INTERNAL.
    • Verwenden Sie für interne Application Load Balancer INTERNAL_MANAGED.
  2. Beschreiben Sie die Weiterleitungsregel. Ersetzen Sie hierzu FORWARDING_RULE_NAME durch deren Namen und REGION durch deren Region:

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

API

Sehen Sie sich die Weiterleitungsregel und das Dienstlabel mit der forwardingRules.get--Methode an.

Die Antwort auf die API-Anfrage enthält das Dienstlabel (serviceLabel) und den internen DNS-Namen von Compute Engine (serviceName).

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

TCP/UDP-Antwort:

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

HTTP(S)-Antwort:

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

Beispiel

Im Folgenden wird gezeigt, wie eine Weiterleitungsregel durch eine andere Weiterleitungsregel mit einem Dienstlabel ersetzt wird. Dieses Verfahren funktioniert sowohl für interne Passthrough-Netzwerk-Load-Balancer als auch für interne Application Load Balancer.

Wenn Sie noch keine Weiterleitungsregel für Ihren internen Load-Balancer erstellt haben, überspringen Sie dieses Beispiel und lesen Sie stattdessen Weiterleitungsregel mit einem Dienstlabel erstellen.

  1. Beschreiben Sie die vorhandene Weiterleitungsregel Ihres Load-Balancers und notieren Sie die interne IP-Adresse der Weiterleitungsregel:

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(IPAddress)"
    
  2. Löschen Sie die Weiterleitungsregel:

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
        --region=REGION
    
  3. Erstellen Sie eine Ersatz-Weiterleitungsregel. Verwenden Sie dabei denselben Namen und dieselbe interne IP-Adresse mit einem Dienstlabel. Weitere Informationen finden Sie unter Weiterleitungsregel mit einem Dienstlabel erstellen.

Nächste Schritte