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:

    • Internes TCP/UDP-Load-Balancing
    • Internes HTTP(S)-Load-Balancing
  • 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 für das interne TCP/UDP-Load-Balancing aktivieren, kann ein Client in einer beliebigen Region 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.

  • Sie können in einer internen Weiterleitungsregel kein Dienstlabel definieren, das auf eine freigegebene interne IP-Adresse verweist. Das bedeutet, dass interne DNS-A-Einträge von Compute Engine nicht automatisch für eine interne IP-Adresse mit dem Flag --purpose=SHARED_LOADBALANCER_VIP erstellt werden können, da die Adresse von zwei oder mehr internen Weiterleitungsregeln verwendet wird.

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 das interne TCP/UDP-Load-Balancing:

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

  • Für das interne HTTP(S)-Load-Balancing:

    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

In diesem Verfahren wird gezeigt, wie Sie eine Weiterleitungsregel mit einem Dienstlabel für einen internen TCP/UDP-Load-Balancer oder einen internen HTTP(S)-Load-Balancer erstellen.

In diesem Verfahren liegt der Schwerpunkt nur darauf, wie eine Weiterleitungsregel mit einem Dienstlabel erstellt wird. Die Attribute der Back-End-Konfiguration des Load-Balancers und andere Attribute der Front-End-Konfiguration werden ausgelassen. Wenn Sie noch keine Kenntnisse über internes TCP/UDP-Load-Balancing oder internes HTTP(S)-Load-Balancing haben, finden Sie auf diesen Seiten die vollständigen Beispiele:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „Load-Balancing“.
    Zur Seite "Load-Balancing"
  2. Klicken Sie auf Load-Balancer erstellen.
  3. Klicken Sie unter HTTP(S)-Load-Balancing, TCP-Load-Balancing oder UDP-Load-Balancing auf Konfiguration starten.
  4. Wählen Sie unter Internet oder nur intern die Option Nur zwischen meinen VMs aus. Klicken Sie dann auf Weiter.
  5. Geben Sie einen Namen für den Load-Balancer an.
  6. Schließen Sie die Back-End-Konfiguration ab.
  7. Klicken Sie auf Front-End-Konfiguration. Schließen Sie die Front-End-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 TCP/UDP-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 Back-End-Dienstes des internen TCP/UDP-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 TCP/UDP-Load-Balancern ist PROTOCOL in Übereinstimmung mit dem Protokoll des Back-End-Dienstes des Load-Balancers entweder TCP oder UDP. Für interne HTTP(S)-Load-Balancer muss das Protokoll TCP sein.
  • Für interne TCP/UDP-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 TCP/UDP-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 Back-End-Dienstes des internen TCP/UDP-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 TCP/UDP-Load-Balancern ist PROTOCOL in Übereinstimmung mit dem Protokoll des Back-End-Dienstes des Load-Balancers entweder TCP oder UDP. Für interne HTTP(S)-Load-Balancer muss das Protokoll TCP sein.
  • Für interne TCP/UDP-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. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite "Load-Balancing"
  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 Front-End 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 vom internen TCP/UDP-Load-Balancing oder vom internen HTTP(S)-Load-Balancing 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 TCP/UDP-Load-Balancer INTERNAL.
    • Verwenden Sie für interne HTTP(S)-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 für das interne TCP/UDP-Load-Balancing und das interne HTTP(S)-Load-Balancing.

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