Benutzerdefinierte Messwerte für Application Load Balancer

Auf dieser Seite wird beschrieben, wie Sie benutzerdefinierte Messwerte mit Ihren Application Load Balancern verwenden. Mit benutzerdefinierten Messwerten können Sie das Verhalten der Traffic-Verteilung Ihres Load Balancers so konfigurieren, dass es auf Messwerten basiert, die für Ihre Anwendungs- oder Infrastrukturanforderungen spezifisch sind, anstatt auf den standardmäßigen Auslastungs- oder ratenbasierten Messwerten von Google Cloud. Wenn Sie benutzerdefinierte Messwerte für Ihren Load Balancer definieren, können Sie Anwendungsanfragen flexibel an die Backend-Instanzen und ‑Endpunkte weiterleiten, die für Ihre Arbeitslast am besten geeignet sind.

Für GKE können Sie auch benutzerdefinierte Messwerte verwenden, die vom Dienst oder der Anwendung stammen, die Sie ausführen. Weitere Informationen finden Sie unter Benutzerdefinierte Messwerte verfügbar machen.

Der Load Balancer verwendet die Werte der benutzerdefinierten Messwerte, um die folgenden Entscheidungen zu treffen:

  1. Wählen Sie aus, welche Back-End-VM-Instanzgruppe oder Netzwerk-Endpunktgruppe Traffic empfangen soll.
  2. Wählen Sie aus, welche VM-Instanz oder welcher Endpunkt Traffic empfangen soll.
Load-Balancing mit benutzerdefinierten Messwerten.
Load-Balancing mit benutzerdefinierten Messwerten (zum Vergrößern klicken).

Hier einige Anwendungsbeispiele für benutzerdefinierte Messwerte:

  • Maximieren Sie die Nutzung Ihrer globalen Rechenkapazität, indem Sie Load-Balancing-Entscheidungen auf der Grundlage benutzerdefinierter Messwerte treffen, die für Ihre Anwendung am relevantesten sind, anstatt der Standardkriterien wie regionale Affinität oder Netzwerklatenz.

    Wenn bei Ihren Anwendungen häufig Back-End-Verarbeitungslatenzen im Bereich von Sekunden auftreten, können Sie Ihre globale Rechenkapazität effizienter nutzen, indem Sie Anfragen anhand benutzerdefinierter Messwerte anstatt anhand der Netzwerklatenz per Load Balancing verteilen.

  • Rechenleistung maximieren: Load-Balancing-Entscheidungen basieren auf Kombinationen von Messwerten, die für Ihr Deployment spezifisch sind. Stellen Sie sich beispielsweise ein Szenario vor, in dem Ihre Anfragen sehr unterschiedliche Verarbeitungszeiten und Rechenanforderungen haben. In einem solchen Szenario führt das Load Balancing, das nur auf der Rate der Anfragen pro Sekunde basiert, zu einer ungleichmäßigen Lastverteilung. In diesem Fall sollten Sie möglicherweise einen benutzerdefinierten Messwert definieren, der die Last basierend auf einer Kombination aus der Anfragerate sowie der CPU- oder GPU-Auslastung ausgleicht, um Ihre Rechenressourcen optimal zu nutzen.

  • Back-Ends anhand benutzerdefinierter Messwerte automatisch skalieren, die für Ihre Anwendungsanforderungen am relevantesten sind. Sie können beispielsweise eine Autoscaling-Richtlinie definieren, mit der Ihre Back-End-Instanzen automatisch skaliert werden, wenn der konfigurierte benutzerdefinierte Messwert 80 % überschreitet. Dies wird durch die Verwendung von traffic-basierten Autoscaling-Messwerten (autoscaling.googleapis.com|gclb-capacity-fullness) erreicht. Weitere Informationen finden Sie unter Autoscaling auf Basis des Load-Balancer-Traffics.

Unterstützte Load-Balancer und Back-Ends

Benutzerdefinierte Messwerte werden für die folgenden Application Load Balancer unterstützt:

  • Globaler externer Application Load Balancer
  • Regionaler externer Application Load Balancer
  • Regionsübergreifender interner Application Load Balancer
  • Regionaler interner Application Load Balancer

Benutzerdefinierte Messwerte werden für die folgenden Backend-Typen unterstützt:

  • Verwaltete Instanzgruppen
  • Zonale NEGs (mit GCE_VM_IP_PORT-Endpunkten)
  • Hybridkonnektivitäts-NEGs

Funktionsweise von benutzerdefinierten Messwerten

Damit Ihr Load Balancer Entscheidungen zur Traffic-Verteilung auf Grundlage benutzerdefinierter Messwerte treffen kann, müssen Sie zuerst festlegen, welche Messwerte für Ihre spezielle Anwendung am relevantesten sind. Wenn Sie wissen, welche Messwerte Sie verwenden möchten, konfigurieren Sie Ihre Back-Ends so, dass sie einen stetigen Stream dieser Messwerte an Ihren Load-Balancer senden.Mit Google Cloud können Sie Messwerte als Teil des Headers jeder HTTP-Antwort melden, die von den Back-Ends an Ihren Load-Balancer gesendet wird. Diese Messwerte sind in einem benutzerdefinierten HTTP-Antwortheader enthalten und müssen dem ORCA-Standard (Open Request Cost Aggregation) entsprechen.

Messwerte können auf zwei Ebenen konfiguriert werden:

  • Auf der Ebene des Backend-Dienstes, um die Auswahl des Backends (MIG oder NEG) zu beeinflussen
  • Auf Back-End-Ebene, um die Auswahl von VM-Instanzen oder Endpunkten zu beeinflussen

In den folgenden Abschnitten wird beschrieben, wie benutzerdefinierte Messwerte funktionieren.

Festlegen, welche benutzerdefinierten Messwerte Load-Balancing-Entscheidungen beeinflussen

Welche benutzerdefinierten Messwerte Load-Balancing-Entscheidungen beeinflussen, ist sehr subjektiv und hängt von den Anforderungen Ihrer Anwendungen ab. Wenn Ihre Anwendungen beispielsweise Backend-Verarbeitungslatenzen im Bereich von Sekunden haben, sollten Sie Anfragen möglicherweise auf der Grundlage anderer benutzerdefinierter Messwerte als der Standardnetzwerklatenzen ausgleichen.

Nachdem Sie festgelegt haben, welche Messwerte Sie verwenden möchten, müssen Sie auch den maximalen Auslastungsschwellenwert für jeden Messwert festlegen. Wenn Sie beispielsweise die Speichernutzung als Messwert verwenden möchten, müssen Sie auch den maximalen Grenzwert für die Speichernutzung für jedes Back-End festlegen.

Wenn Sie beispielsweise einen Messwert namens example-custom-metric konfigurieren und der Grenzwert für die maximale Auslastung auf 0, 8 festgelegt ist, passt der Load Balancer die Traffic-Verteilung auf die Backends dynamisch an, um den vom Backend gemeldeten Messwert example-custom-metric so weit wie möglich unter 0, 8 zu halten.

Es gibt zwei Arten von benutzerdefinierten Messwerten:

  • Reservierte Messwerte: Es gibt fünf reservierte Messwertnamen, die reserviert sind, weil sie vordefinierten Feldern der obersten Ebene in der ORCA API entsprechen.

    • orca.cpu_utilization
    • orca.mem_utilization
    • orca.application_utilization
    • orca.eps
    • orca.rps_fractional

    Für die Messwerte mem_utilization, cpu_utilization und application_utilization werden Werte im Bereich von 0.0 - 1.00 erwartet. In Szenarien, in denen die Ressourcennutzung das Budget überschreitet, kann der Wert jedoch auch über 1.00 liegen.

  • Benannte Messwerte: Das sind Messwerte, die für Ihre Anwendung eindeutig sind und die Sie mit dem ORCA-Feld named_metrics im folgenden Format angeben:

    orca.named_metrics.METRIC_NAME
    

    Alle benutzerdefinierten Messwerte werden mit dieser named_metrics-Zuordnung im Format von Name-Wert-Paaren angegeben.

    Für benannte Messwerte, die für den Balancing-Modus CUSTOM_METRICS definiert sind, müssen Werte im Bereich 0 - 100 enthalten sein. Für benannte Messwerte, die für die WEIGHTED_ROUND_ROBIN-Load-Balancing-Richtlinie für Orte definiert sind, ist kein erwarteter Bereich vorhanden.

Erforderliche Messwerte

Damit Ihr Load-Balancer benutzerdefinierte Messwerte für die Auswahl von Backend-VM-Instanzgruppen oder Netzwerk-Endpunktgruppen verwenden kann, müssen Sie einen oder mehrere der folgenden Auslastungsmesswerte im ORCA-Lastbericht angeben, der an den Load-Balancer gesendet wird. orca.named_metrics ist eine Zuordnung von benutzerdefinierten Messwerten in Form von Name/Wert-Paaren.

  • orca.cpu_utilization
  • orca.application_utilization
  • orca.mem_utilization
  • orca.named_metrics

Damit Ihr Load Balancer benutzerdefinierte Messwerte verwenden kann, um die Auswahl der Backend-VM-Instanz oder des Endpunkts weiter zu beeinflussen, müssen Sie alle der folgenden Messwerte im ORCA-Lastbericht angeben, der an den Load Balancer gesendet wird. Der Load-Balancer verwendet die aus diesen gemeldeten Messwerten berechneten Gewichte, um die Last den einzelnen Back-Ends zuzuweisen.

  • orca.rps_fractional (Anfragen pro Sekunde)
  • orca.eps (Fehler pro Sekunde)
  • ein Auslastungsmesswert mit der folgenden Prioritätsreihenfolge:
    1. orca.application_utilization
    2. orca.cpu_utilization
    3. benutzerdefinierte Messwerte in der orca.named_metrics-Karte

Beschränkungen und Anforderungen

  • Pro Backend sind maximal zwei benutzerdefinierte Messwerte zulässig. Sie können jedoch dryRun-Tests mit maximal drei benutzerdefinierten Messwerten durchführen.

    Wenn zwei Messwerte angegeben werden, behandelt der Load-Balancer sie unabhängig voneinander. Wenn Sie beispielsweise zwei Dimensionen definieren: custom-metric-util1 und custom-metric-util2, werden sie vom Load-Balancer unabhängig voneinander behandelt. Wenn ein Backend eine hohe Auslastung in Bezug auf custom-metric-util1 aufweist, vermeidet der Load Balancer, Traffic an dieses Backend zu senden. Im Allgemeinen versucht der Load-Balancer, alle Backends mit ungefähr derselben Auslastung auszuführen. Die Fülle wird so berechnet: currentUtilization ÷ maxUtilization. In diesem Fall verwendet der Load Balancer den höheren der beiden Füllwerte, die von den beiden Messwerten gemeldet werden, um Load-Balancing-Entscheidungen zu treffen.

  • Pro Backend-Dienst sind maximal zwei benutzerdefinierte Messwerte zulässig. Sie können jedoch dryRun-Tests mit maximal drei benutzerdefinierten Messwerten durchführen. Dieses Limit umfasst nicht die erforderlichen Messwerte orca.eps und orca.rps_fractional. Dieses Limit ist auch unabhängig von Messwerten, die auf Backend-Ebene konfiguriert sind.

  • Reservierte und benannte Messwerte können zusammen verwendet werden. Beispielsweise können sowohl orca.cpu_utilization = 0.5 als auch ein benutzerdefinierter Messwert wie orca.named_metrics.queue_depth_util = 0.2 in einem einzigen Lastbericht angegeben werden.

  • Benutzerdefinierte Messwertnamen dürfen keine regulierten, vertraulichen, identifizierbaren oder anderen vertraulichen Informationen enthalten, die für Personen außerhalb Ihrer Organisation nicht sichtbar sein dürfen.

Verfügbare Codierungen für die Spezifikation benutzerdefinierter Messwerte

  • JSON

    Beispiel für die JSON-Codierung eines Ladeberichts:

    endpoint-load-metrics-json: JSON {"cpu_utilization": 0.3, "mem_utilization": 0.8, "rps_fractional": 10.0, "eps": 1, "named_metrics": {"custom-metric-util": 0.4}}.
    
  • Binäres Protobuf

    Für Protokollpuffer-kompatiblen Code ist dies ein binär serialisierter, base64-codierter OrcaLoadReport-Protokollpuffer in endpoint-load-metrics-bin oder endpoint-load-metrics: BIN.

  • Natives HTTP

    Durch Kommas getrennte Schlüssel/Wert-Paare in endpoint-load-metrics. Dies ist eine vereinfachte Textdarstellung des OrcaLoadReport:

    endpoint-load-metrics: TEXT cpu_utilization=0.3, mem_utilization=0.8, rps_fractional=10.0, eps=1, named_metrics.custom_metric_util=0.4
    
  • gRPC

    Gemäß der gRPC-Spezifikation müssen die Messwerte mithilfe von nachgestellten Metadaten mit dem Schlüssel endpoint-load-metrics-bin bereitgestellt werden.

Backend-Konfiguration zum Melden benutzerdefinierter Messwerte

Nachdem Sie die Messwerte festgelegt haben, die der Load-Balancer verwenden soll, konfigurieren Sie Ihre Back-Ends so, dass die erforderlichen benutzerdefinierten Messwerte in einem ORCA-Lastbericht zusammengestellt und ihre Werte in jedem HTTP-Antwortheader gemeldet werden, der an den Load-Balancer gesendet wird.

Wenn Sie beispielsweise orca.cpu_utilization als benutzerdefinierten Messwert für ein Back-End ausgewählt haben, muss dieses Back-End die aktuelle CPU-Auslastung in jeder Antwort, die an den Load-Balancer gesendet wird, an den Load-Balancer melden. Eine Anleitung finden Sie auf dieser Seite im Abschnitt Messwerte an den Load-Balancer senden.

Load-Balancer-Konfiguration zur Unterstützung benutzerdefinierter Messwerte

Damit der Load-Balancer die von den Back-Ends gemeldeten benutzerdefinierten Messwerte für Entscheidungen zur Trafficverteilung verwenden kann, müssen Sie den Balancing-Modus jedes Back-Ends auf CUSTOM_METRICS und die Load-Balancing-Richtlinie für den Back-End-Dienst auf WEIGHTED_ROUND_ROBIN festlegen.

Funktionsweise benutzerdefinierter Messwerte mit Application Load Balancern
Benutzerdefinierte Messwerte für Application Load Balancer (zum Vergrößern klicken).
  • CUSTOM_METRICS-Balancing-Modus. Jedes Ihrer Back-Ends in einem Back-End-Dienst muss für die Verwendung des Balancing-Modus CUSTOM_METRICS konfiguriert sein. Wenn ein Back-End mit dem Balancing-Modus CUSTOM_METRICS konfiguriert ist, leitet der Load-Balancer den Traffic an die Back-Ends entsprechend dem für jeden benutzerdefinierten Messwert konfigurierten maximalen Auslastungsschwellenwert weiter.

    Für jedes Back-End kann ein anderer Satz von Messwerten für Berichte angegeben werden. Wenn mehrere benutzerdefinierte Messwerte pro Backend konfiguriert sind, versucht der Load Balancer, den Traffic so zu verteilen, dass alle Messwerte unter den konfigurierten maximalen Auslastungsgrenzen bleiben.

    Der Traffic wird auf die Back-Ends verteilt, basierend auf dem von Ihnen ausgewählten Load-Balancing-Algorithmus. Der Standardalgorithmus WATERFALL_BY_REGION versucht beispielsweise, alle Back-Ends mit derselben Auslastung zu betreiben.

  • WEIGHTED_ROUND_ROBIN Load-Balancing-Richtlinie für den Ort. Die Load-Balancing-Richtlinie für den Ort des Backend-Dienstes muss auf WEIGHTED_ROUND_ROBIN festgelegt sein. Bei dieser Konfiguration verwendet der Load Balancer auch die benutzerdefinierten Messwerte, um die optimale Instanz oder den optimalen Endpunkt im Backend für die Anfrageabwicklung auszuwählen.

Benutzerdefinierte Messwerte konfigurieren

So aktivieren Sie die Verwendung benutzerdefinierter Messwerte für Ihre Application Load Balancer:

  1. Legen Sie die benutzerdefinierten Messwerte fest, die Sie verwenden möchten.
  2. Konfigurieren Sie die Back-Ends so, dass benutzerdefinierte Messwerte an den Load Balancer gemeldet werden. Sie müssen einen Datenstream einrichten, der an den Load-Balancer gesendet werden kann, um für das Load-Balancing verwendet zu werden. Diese Messwerte müssen in einem ORCA-Lastbericht zusammengestellt und codiert und dann mithilfe von HTTP-Antwortheadern an den Load Balancer gemeldet werden.
  3. Konfigurieren Sie den Load Balancer so, dass die benutzerdefinierten Messwerte verwendet werden, die von den Back-Ends gemeldet werden.

Benutzerdefinierte Messwerte festlegen

Dieser Schritt ist sehr subjektiv und hängt von den Anforderungen Ihrer Anwendungen ab. Nachdem Sie festgelegt haben, welche Messwerte Sie verwenden möchten, müssen Sie auch den maximalen Auslastungsschwellenwert für jeden Messwert festlegen. Wenn Sie beispielsweise die Speichernutzung als Messwert verwenden möchten, müssen Sie auch den maximalen Grenzwert für die Speichernutzung für jedes Back-End festlegen.

Bevor Sie den Load-Balancer konfigurieren, sollten Sie sich die verfügbaren Typen von benutzerdefinierten Messwerten (reserviert und benannt) und die Anforderungen für die Messwertauswahl ansehen, die auf dieser Seite im Abschnitt Benutzerdefinierte Messwerte beschrieben sind.

Back-Ends für das Melden von Messwerten an den Load Balancer konfigurieren

Benutzerdefinierte Messwerte werden Load-Balancern im Rahmen jeder HTTP-Antwort von Ihren Anwendungs-Back-Ends mithilfe des ORCA-Standards gemeldet.

Wenn Sie Google Kubernetes Engine verwenden, haben Sie auch die Möglichkeit, benutzerdefinierte Messwerte für Load Balancer zu verwenden.

In diesem Abschnitt erfahren Sie, wie Sie die benutzerdefinierten Messwerte in einem ORCA-Lastbericht zusammenstellen und diese Messwerte in jedem HTTP-Antwortheader melden, der an den Load Balancer gesendet wird.

Wenn Sie beispielsweise die HTTP-Textcodierung verwenden, müssen die Messwerte im Header im folgenden Format angegeben werden.

endpoint-load-metrics: TEXT BACKEND_METRIC_NAME_1=BACKEND_METRIC_VALUE_1,BACKEND_METRIC_NAME_2=BACKEND_METRIC_VALUE_2

Unabhängig vom verwendeten Codierungsformat müssen Sie das Präfix orca. aus dem Messwertnamen entfernen, wenn Sie den Ladebericht erstellen.

Das folgende Code-Snippet zeigt, wie Sie Ihren HTTP-Headern zwei benutzerdefinierte Messwerte (customUtilA und customUtilB) hinzufügen. Dieses Code-Snippet zeigt sowohl die native HTTP-Textcodierung als auch die Base64-Codierung. In diesem Beispiel werden die Werte für customUtilA und customUtilB nur der Einfachheit halber fest codiert. Ihr Load Balancer empfängt die Werte für die Messwerte, die das Load Balancing beeinflussen sollen.

...
type OrcaReportType int

const (
        OrcaText OrcaReportType = iota
        OrcaBin
)

type HttpHeader struct {
        key   string
        value string
}

const (
        customUtilA = 0.2
        customUtilB = 0.4
)

func GetBinOrcaReport() HttpHeader {
        report := &pb.OrcaLoadReport{
                NamedMetrics: map[string]float64{"customUtilA": customUtilA, "customUtilB": customUtilB}}
        out, err := proto.Marshal(report)
        if err != nil {
                log.Fatalf("failed to serialize the ORCA proto: %v", err)
        }
        return HttpHeader{"endpoint-load-metrics-bin", base64.StdEncoding.EncodeToString(out)}
}

func GetHttpOrcaReport() HttpHeader {
        return HttpHeader{
                "endpoint-load-metrics",
                fmt.Sprintf("TEXT named_metrics.customUtilA=%.2f,named_metrics.customUtilB=%.2f",
                        customUtilA, customUtilB)}
}

func GetOrcaReport(t OrcaReportType) HttpHeader {
        switch t {
        case OrcaText:
                return GetHttpOrcaReport()
        case OrcaBin:
                return GetBinOrcaReport()
        default:
                return HttpHeader{"", ""}
        }
}
...

Load-Balancer für die Verwendung benutzerdefinierter Messwerte konfigurieren

Damit der Load Balancer diese benutzerdefinierten Messwerte bei der Auswahl eines Back-Ends verwendet, müssen Sie den Balancing-Modus für jedes Back-End auf CUSTOM_METRICS festlegen. Wenn die benutzerdefinierten Messwerte auch die Endpunktauswahl beeinflussen sollen, legen Sie die Load-Balancing-Richtlinie für den Ort auf WEIGHTED_ROUND_ROBIN fest.

Bei den in diesem Abschnitt beschriebenen Schritten wird davon ausgegangen, dass Sie bereits einen Load Balancer mit zonalen NEG-Backends bereitgestellt haben. Sie können jedoch dieselben --custom-metrics-Flags verwenden, die hier gezeigt werden, um ein vorhandenes Back-End mit dem Befehl gcloud compute backend-services update zu aktualisieren.

  1. Sie können den Balancing-Modus eines Back-Ends auf CUSTOM_METRICS festlegen, wenn Sie das Back-End dem Back-End-Dienst hinzufügen. Mit dem Flag --custom-metrics geben Sie den benutzerdefinierten Messwert und den Schwellenwert an, der für Load-Balancing-Entscheidungen verwendet werden soll.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --network-endpoint-group-zone=NEG_ZONE \
        [--global | region=REGION] \
        --balancing-mode=CUSTOM_METRICS \
        --custom-metrics='name="BACKEND_METRIC_NAME_1",maxUtilization=MAX_UTILIZATION_FOR_METRIC_1' \
        --custom-metrics='name="BACKEND_METRIC_NAME_2",maxUtilization=MAX_UTILIZATION_FOR_METRIC_2'
    

    Ersetzen Sie Folgendes:

    • BACKEND_SERVICE_NAME: der Name des Backend-Dienstes
    • NEG_NAME: Der Name der zonalen oder hybriden NEG.
    • NEG_ZONE: die Zone, in der die NEG erstellt wurde
    • REGION: Bei regionalen Load-Balancern die Region, in der der Load-Balancer erstellt wurde
    • BACKEND_METRIC_NAME: Die hier verwendeten Namen benutzerdefinierter Messwerte müssen mit den Namen benutzerdefinierter Messwerte übereinstimmen, die im ORCA-Bericht des Backends angegeben werden.
    • MAX_UTILIZATION_FOR_METRIC: die maximale Auslastung, die die Load-Balancing-Algorithmen für jeden Messwert anstreben müssen.

    Wenn Ihre Backends beispielsweise zwei benutzerdefinierte Messwerte, customUtilA und customUtilB, melden (wie im Abschnitt Backends für das Melden von Messwerten an den Load-Balancer konfigurieren beschrieben), verwenden Sie den folgenden Befehl, um Ihren Load-Balancer für die Verwendung dieser Messwerte zu konfigurieren:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --network-endpoint-group-zone=NEG_ZONE \
        [--global | region=REGION] \
        --balancing-mode=CUSTOM_METRICS \
        --custom-metrics='name="customUtilA",maxUtilization=0.8' \
        --custom-metrics='name="customUtilB",maxUtilization=0.9'
    

    Alternativ können Sie eine Liste benutzerdefinierter Messwerte in einer strukturierten JSON-Datei angeben:

    {
    "name": "METRIC_NAME_1",
    "maxUtilization": MAX_UTILIZATION_FOR_METRIC_1,
    "dryRun": true
    }
    {
    "name": "METRIC_NAME_2",
    "maxUtilization": MAX_UTILIZATION_FOR_METRIC_2,
    "dryRun": false
    }

    Hängen Sie die Messwertdatei im JSON-Format dann so an das Backend an:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --network-endpoint-group-zone=NEG_ZONE \
        [--global | region=REGION] \
        --balancing-mode=CUSTOM_METRICS \
        --custom-metrics-file='BACKEND_METRIC_FILE_NAME'
    

    Wenn Sie testen möchten, ob die Messwerte erfasst werden, ohne den Load Balancer zu beeinträchtigen, können Sie das Flag dryRun beim Konfigurieren des Messwerts auf true setzen:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --network-endpoint-group-zone=NEG_ZONE \
        [--global | region=REGION] \
        --balancing-mode=CUSTOM_METRICS \
        --custom-metrics 'name="BACKEND_METRIC_NAME",maxUtilization=MAX_UTILIZATION_FOR_METRIC,dryRun=true'
    

    Wenn ein Messwert mit dryRun auf true konfiguriert ist, wird er an Monitoring gemeldet, aber nicht vom Load-Balancer verwendet.

    Wenn Sie dies rückgängig machen möchten, aktualisieren Sie den Backend-Dienst so, dass das Flag dryRun auf false gesetzt ist.

    gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --network-endpoint-group-zone=NEG_ZONE \
        [--global | region=REGION] \
        --balancing-mode=CUSTOM_METRICS \
        --custom-metrics 'name="BACKEND_METRIC_NAME",maxUtilization=MAX_UTILIZATION_FOR_METRIC_,dryRun=false'
    

    Wenn alle Ihre benutzerdefinierten Messwerte mit dryRun auf true konfiguriert sind, hat das Festlegen des Balancing-Modus auf CUSTOM_METRICS oder der Load-Balancing-Richtlinie für den Ort auf WEIGHTED_ROUND_ROBIN keine Auswirkungen auf den Load Balancer.

  2. Wenn Sie den Load Balancer so konfigurieren möchten, dass die Auswahl von Endpunkten durch die benutzerdefinierten Messwerte beeinflusst wird, legen Sie die Load-Balancing-Richtlinie für den Ort des Backend-Dienstes auf WEIGHTED_ROUND_ROBIN fest.

    Wenn Sie beispielsweise einen Backend-Dienst haben, der bereits mit den entsprechenden Backends konfiguriert ist, konfigurieren Sie die Load-Balancing-Richtlinie für den Ort so:

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        [--global | region=REGION] \
        --custom-metrics='name=BACKEND_SERVICE_METRIC_NAME,dryRun=false' \
        --locality-lb-policy=WEIGHTED_ROUND_ROBIN
    

    Wie bereits für die Messwerte auf Backend-Ebene gezeigt, können Sie auch eine Liste benutzerdefinierter Messwerte in einer strukturierten JSON-Datei auf Backend-Dienstebene bereitstellen. Verwenden Sie das Feld --custom-metrics-file, um die Messwertdatei an den Backend-Dienst anzuhängen.

Nächste Schritte