Freigeben über


Lernprogramm: Migrieren von Oracle WebLogic Server zu Azure Kubernetes Service (AKS) mit KEDA-Scaler basierend auf Prometheus-Metriken

In diesem Tutorial erfahren Sie, wie Sie Oracle WebLogic Server (WLS) zu Azure Kubernetes Service (AKS) migrieren und die automatische horizontale Skalierung basierend auf Prometheus-Metriken konfigurieren.

Sie führen in diesem Tutorial die folgenden Aufgaben durch:

  • Erfahren Sie, welche WebLogic-Anwendungsmetriken Sie mit dem WebLogic Monitoring Exporter exportieren können.
  • Stellen Sie eine WebLogic-Anwendung in AKS mithilfe eines Azure Marketplace-Angebots bereit.
  • Aktivieren Sie den verwalteten Azure Monitor-Dienst für Prometheus mithilfe eines Azure Marketplace-Angebots.
  • Geben Sie WLS-Metriken in einem Azure Monitor-Arbeitsbereich mithilfe eines Azure Marketplace-Angebots ein.
  • Integrieren Sie Kubernetes Event-driven Autoscaling (KEDA) in einen AKS-Cluster mit einem Azure Marketplace-Angebot.
  • Erstellen Sie eine KEDA-Skalierung basierend auf Prometheus-Metriken.
  • Überprüfen Sie die Skalierungskonfiguration.

Das folgende Diagramm veranschaulicht die von Ihnen erstellte Architektur:

Diagramm der Lösungsarchitektur von WLS auf AKS mit KEDA-Skalierung basierend auf Prometheus-Metriken.

Das Angebot Oracle WebLogic Server in AKS führt einen WLS-Operator und eine WLS-Domäne in AKS aus. Der WLS-Operator verwaltet eine WLS-Domäne, die mit einem Model-in-Image-Domänenquelltyp bereitgestellt wird. Weitere Informationen zum WLS-Operator finden Sie unter Oracle WebLogic Kubernetes Operator.

Der WebLogic Monitoring Exporter liest WebLogic Server-Metriken aus und leitet sie zu Prometheus weiter. Der Exporter verwendet die WebLogic Server 12.2.1.x RESTful Management Interface für den Zugriff auf Laufzeitstatus und Metriken.

Der verwaltete Azure Monitor-Dienst für Prometheus erfasst und speichert im großen Stil Metriken von WLS unter Verwendung einer mit Prometheus kompatiblen Überwachungslösung – basierend auf dem Projekt Prometheus der Cloud Native Computing Foundation. Weitere Informationen finden Sie unter Verwalteter Azure Monitor-Dienst für Prometheus.

In diesem Artikel wird KEDA in Ihren AKS-Cluster integriert, um den WLS-Cluster basierend auf Prometheus-Metriken aus dem Azure Monitor-Arbeitsbereich zu skalieren. KEDA überwacht den verwalteten Azure Monitor-Dienst für Prometheus und fügt diese Daten zu AKS und dem Horizontal Pod Autoscaler (HPA) hinzu, um eine schnelle Skalierung der WLS-Workload zu fördern.

Der folgende WLS-Zustand und die folgenden Metriken werden standardmäßig exportiert. Sie können den Exporter so konfigurieren, dass andere Metriken bei Bedarf exportiert werden. Eine detaillierte Beschreibung der Konfiguration und Verwendung von WebLogic Monitoring Exporter finden Sie unter WebLogic Monitoring Exporter.

WebLogic-Metriken.

Voraussetzungen

  • Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
  • Stellen Sie sicher, dass Sie im Abonnement über die Owner-Rolle oder die Contributor-Rolle und die User Access Administrator-Rolle verfügen. Sie können die Aufgabe überprüfen, indem Sie die Schritte in Auflisten von Azure-Rollenzuweisungen mithilfe des Azure-Portals befolgen.
  • Bereiten Sie einen lokalen Computer mit Windows vor, auf dem WSL, GNU/Linux oder macOS installiert ist.
  • Installieren Sie Azure CLI Version 2.54.0 oder höher, um Azure CLI-Befehle auszuführen.
  • Installieren Sie kubectl, und richten Sie es ein.
  • Installieren Sie cURL.
  • Sie benötigen Anmeldeinformationen für ein Oracle-Konto mit einmaligem Anmelden (Single Sign-On, SSO). Informationen zum Erstellen eines Kontos finden Sie unter Oracle Account erstellen.
  • Führen Sie die folgenden Schritte aus, um die Lizenzbedingungen für WLS zu akzeptieren:
    1. Besuchen Sie die Oracle Container Registry, und melden Sie sich an.
    2. Wenn Sie über eine Supportberechtigung verfügen, wählen Sie Middleware aus, suchen Sie weblogic_cpu, und wählen Sie den Eintrag aus.
    3. Wenn Sie keine Supportberechtigung von Oracle besitzen, wählen Sie Middleware aus, suchen Sie weblogic, und wählen Sie den Eintrag aus.
    4. Akzeptieren Sie den Lizenzvertrag.

Vorbereiten der Beispielanwendung

Dieser Artikel verwendet testwebapp aus dem weblogic-kubernetes-operator-Repository als Beispielanwendung.

Verwenden Sie die folgenden Befehle, um die vordefinierte Beispiel-App herunterzuladen und sie in ein Verzeichnis zu erweitern. Da in diesem Artikel mehrere Dateien geschrieben werden, erstellen diese Befehle ein Verzeichnis der obersten Ebene, um alles zu enthalten.

export BASE_DIR=$PWD/wlsaks
mkdir $BASE_DIR && cd $BASE_DIR
curl -L -o testwebapp.war https://aka.ms/wls-aks-testwebapp
unzip -d testwebapp testwebapp.war

Ändern der Beispielanwendung

In diesem Artikel wird die Metrik openSessionsCurrentCount verwendet, um den WLS-Cluster nach oben und nach unten zu skalieren. Standardmäßig beträgt das Sitzungstimeout auf WebLogic Server 60 Minuten. Um die Skalierungsfunktion schnell zu beobachten, führen Sie die folgenden Schritte aus, um ein kurzes Timeout festzulegen:

  1. Verwenden Sie den folgenden Befehl, um ein Sitzungstimeout von 150 Sekunden mithilfe von wls:timeout-secs anzugeben. Das HEREDOC-Format wird verwendet, um die Datei unter testwebapp/WEB-INF/weblogic.xml mit dem gewünschten Inhalt zu überschreiben.

    cat <<EOF > testwebapp/WEB-INF/weblogic.xml
    <?xml version="1.0" encoding="UTF-8"?>
    
    <wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
        <wls:weblogic-version>12.2.1</wls:weblogic-version>
        <wls:jsp-descriptor>
        <wls:keepgenerated>false</wls:keepgenerated>
        <wls:debug>false</wls:debug>
      </wls:jsp-descriptor>
      <wls:context-root>testwebapp</wls:context-root>
      <wls:session-descriptor>
        <wls:timeout-secs>150</wls:timeout-secs>
     </wls:session-descriptor>
    </wls:weblogic-web-app>
    EOF
    
  2. Verwenden Sie den folgenden Befehl, um die Beispiel-App zu entpacken:

    cd testwebapp && zip -r ../testwebapp.war * && cd ..
    

Erstellen eines Azure Storage-Kontos und Hochladen der Anwendung

Führen Sie die folgenden Schritte, um ein Speicherkonto und einen Container zu erstellen. Bei einigen Schritten werden Sie zu anderen Anleitungen weitergeleitet. Nachdem Sie die Schritte ausgeführt haben, können Sie eine Beispielanwendung hochladen, die in WLS bereitgestellt werden soll.

  1. Melden Sie sich beim Azure-Portal an.
  2. Erstellen Sie ein Speicherkonto, indem Sie die Schritte unter Erstellen eines Speicherkontos ausführen. Verwenden Sie die folgenden Spezialisierungen für die Werte in diesem Artikel:
    • Erstellen Sie eine neue Ressourcengruppe für das Speicherkonto.
    • Wählen Sie als Region die Option USA, Osten aus.
    • Verwenden Sie für Speicherkontoname denselben Wert wie für den Namen der Ressourcengruppe.
    • Wählen Sie für Leistung die Option Standard aus.
    • Die verbleibenden Registerkarten benötigen keine Spezialisierungen.
  3. Fahren Sie mit der Überprüfung und Erstellung des Kontos fort, und kehren Sie zu diesem Artikel zurück.
  4. Erstellen Sie einen Speichercontainer innerhalb des Kontos, indem Sie die Schritte im Abschnitt Erstellen eines Containers der Schnellstartanleitung: Hochladen, Herunterladen und Auflisten von Blobs mit dem Azure-Portal ausführen.
  5. Führen Sie im selben Artikel die Schritte im Abschnitt Hochladen eines Block-Bobs auf, um die Datei testwebapp.war hochzuladen. Kehren Sie dann zu diesem Artikel zurück.

Bereitstellen von WLS auf AKS mithilfe des Azure Marketplace-Angebots

In diesem Abschnitt erstellen Sie einen WLS-Cluster auf AKS mit dem Oracle-Angebot WebLogic Server im AKS. Das Angebot bietet einen vollständigen Funktionssatz für die einfache Bereitstellung von WebLogic Server auf AKS. Dieser Artikel konzentriert sich auf die erweiterten dynamischen Skalierungsfunktionen des Angebots. Weitere Informationen zum Angebot finden Sie unter Bereitstellen einer Java-Anwendung mit WebLogic Server in einem Azure Kubernetes Service (AKS)-Cluster. Die vollständige Referenzdokumentation für das Angebot finden Sie in der Oracle-Dokumentation.

Dieses Angebot implementiert die folgenden Optionen für die horizontale automatische Skalierung:

  • Kubernetes Metrics Server. Diese Auswahl richtet alle erforderlichen Konfigurationen zur Bereitstellungszeit ein. Ein Horizontal Pod Autoscaler (HPA) wird mit einer Auswahl von Metriken bereitgestellt. Sie können den HPA nach der Bereitstellung weiter anpassen.

  • WebLogic Monitoring Exporter. Diese Option stellt webLogic Monitoring Exporter, den verwalteten Azure Monitor-Dienst für Prometheus und KEDA automatisch zur Auswahl. Nach Abschluss der Bereitstellung des Angebots werden die WLS-Metriken exportiert und im Azure Monitor-Arbeitsbereich gespeichert. KEDA wird mit der Möglichkeit installiert, Metriken aus dem Azure Monitor-Arbeitsbereich abzurufen.

    Mit dieser Option müssen Sie nach der Bereitstellung weitere Schritte ausführen, um die Konfiguration abzuschließen.

In diesem Artikel wird die zweite Option beschrieben. Verwenden Sie die folgenden Schritte, um die Konfiguration abzuschließen:

  1. Öffnen Sie das Angebot Oracle WebLogic Server auf AKS in Ihrem Browser, und wählen Sie Erstellen aus. Der Bereich Grundeinstellungen des Angebots sollte angezeigt werden.

  2. Führen Sie die folgenden Schritte aus, um den Bereich Grundeinstellungen auszufüllen:

    1. Stellen Sie sicher, dass der für Abonnement angezeigte Wert mit dem Wert übereinstimmt, der die im Abschnitt „Voraussetzungen“ aufgeführten Rollen enthält.
    2. Sie müssen das Angebot in einer leeren Ressourcengruppe bereitstellen. Wählen Sie im Feld Ressourcengruppe die Option Neu erstellen aus, und geben Sie einen eindeutigen Wert für die Ressourcengruppe ein, z. B. wlsaks-eastus-20240109.
    3. Wählen Sie unter Instanzdetails für Region die Option USA, Osten aus.
    4. Geben Sie unter Anmeldeinformationen WebLogic ein Passwort für WebLogic-Administrator und WebLogic-Modellverschlüsselung ein. Speichern Sie den Benutzernamen und das Kennwort für WebSphere Administrator.
    5. Wählen Sie neben Optionale Basiskonfiguration die Option Nein aus.
    6. Legen Sie unter Optionale Basiskonfiguration die Option Maximale dynamische Cluster-Größe auf 10 fest. Mit diesem Wert können Sie das Verhalten der automatischen Skalierung beobachten.

    Screenshot des Azure-Portals, das den Bereich „Oracle WebLogic Server auf AKS Basics“ anzeigt.

  3. Wählen Sie Weiter aus, und navigieren Sie zur Registerkarte AKS.

  4. Führen Sie unter Image-Auswahl die folgenden Schritte aus:

    1. Geben Sie für Benutzername für Oracle Single Sign-On-Authentifizierung Ihren Oracle SSO-Benutzernamen aus den Vorbedingungen ein.
    2. Geben Sie für Kennwort für Oracle Single Sign-On-Authentifizierung Ihre Oracle SSO-Anmeldeinformationen aus den Vorbedingungen ein.

    Screenshot des Azure-Portals, das den Bereich „Oracle WebLogic Server auf AKS – Image-Auswahl“ anzeigt.

  5. Führen Sie unter Anwendung die folgenden Schritte aus:

    1. Wählen Sie im Abschnitt Anwendung neben Anwendung bereitstellen? die Option „Ja“ aus.

    2. Wählen Sie neben Anwendungspaket (WAR, EAR, JAR) die Option Durchsuchen aus.

    3. Beginnen Sie mit der Eingabe des Speicherkontonamens aus dem vorherigen Abschnitt. Wenn das gewünschte Speicherkonto angezeigt wird, wählen Sie es aus.

    4. Wählen Sie den Speichercontainer aus dem vorherigen Abschnitt aus.

    5. Aktivieren Sie das Kontrollkästchen neben testwebapp.war, das Sie im vorherigen Abschnitt hochgeladen haben. Wählen Sie Auswählen aus.

    6. Wählen Sie Weiter aus.

      Screenshot des Azure-Portals, das den Bereich „Oracle WebLogic Server auf AKS – App-Auswahl“ anzeigt.

  6. Behalten Sie die Standardwerte im Bereich TLS/SSL-Konfiguration bei. Wählen Sie Weiter aus, um zum Bereich Load Balancing zu navigieren. Verwenden Sie dann die folgenden Schritte:

    1. Behalten Sie die Standardwerte für alle Optionen außer Erstellen Sie einen Eingang für die Administrationskonsole. Stellen Sie sicher, dass keine Anwendung den Pfad /console* hat, da dies zu Konflikten mit dem Pfad der Administrationskonsole führen würde. bei. Wählen Sie für diese Option Ja aus.
    2. Verwenden Sie in den restlichen Feldern die Standardwerte.
    3. Wählen Sie Weiter aus.

    Screenshot des Azure-Portals, in dem der Bereich „Oracle WebLogic Server-Cluster on AKS – Load Balancing“ angezeigt wird.

  7. Behalten Sie die Standardwerte für den DNS-Bereich bei, und wählen Sie dann Weiter aus, um zum Bereich Datenbank zu wechseln.

  8. Behalten Sie die Standardwerte für den Bereich Datenbank bei, wählen Sie Weiter aus, um zum Bereich Automatische Skalierung zu navigieren. Führen Sie dann die folgenden Schritte aus:

    1. Wählen Sie neben Ressourcen für horizontale automatische Skalierung bereitstellen? die Option Ja aus.
    2. Wählen Sie unter Horizontale automatische Skalierung neben Wählen Sie Optionen für die automatische Skalierung aus. die Option WebLogic Monitor Exporter (erweiterte automatische Skalierung) aus.
    3. Klicken Sie auf Überprüfen + erstellen.

    Screenshot des Azure-Portals mit dem Bereich „Oracle WebLogic Server Cluster auf AKS – Horizontale automatische Skalierung“.

  9. Warten Sie, bis Abschließende Überprüfung wird ausgeführt... erfolgreich abgeschlossen ist. Wählen Sie dann Erstellen aus. Nach einiger Zeit sollte die Seite Bereitstellung angezeigt werden, auf der Bereitstellung wird ausgeführt angezeigt wird.

Wenn bei Abschließende Überprüfung wird ausgeführt... Probleme auftreten, beheben Sie diese, und versuchen Sie es erneut.

Herstellen einer Verbindung mit dem AKS-Cluster

In den folgenden Abschnitten ist ein Terminal mit kubectl installiert, um den WLS-Cluster zu verwalten. Um kubectl lokal zu installieren, verwenden Sie den Befehl az aks install-cli.

Führen Sie die folgenden Schritte aus, um eine Verbindung zum AKS-Cluster herzustellen:

  1. Öffnen Sie das Azure-Portal, und wechseln Sie zu der Ressourcengruppe, die Sie im Abschnitt Bereitstellen von WLS auf AKS mithilfe des Azure Marketplace-Angebots bereitgestellt haben.
  2. Wählen Sie die Ressource des Typs Kubernetes service aus der Ressourcenliste aus.
  3. Wählen Sie Verbinden. Anleitungen zum Verbinden des AKS-Clusters werden angezeigt.
  4. Wählen Sie Azure CLI aus, und befolgen Sie die Schritte, um eine Verbindung zum AKS-Cluster in Ihrem lokalen Terminal herzustellen.

Abrufen von Metriken aus dem Azure Monitor-Arbeitsbereich

Führen Sie die folgenden Schritte aus, um Metriken im Azure Monitor-Arbeitsbereich mithilfe von Prometheus Query Language-Abfragen (PromQL)anzuzeigen:

  1. Zeigen Sie im Azure-Portal die Ressourcengruppe an, die Sie im Abschnitt Bereitstellen von WLS auf AKS mithilfe des Azure Marketplace-Angebots verwendet haben.

  2. Wählen Sie die Ressource des Typs Azure Monitor-Arbeitsbereich aus.

  3. Wählen Sie unter Managed Prometheus die Option Prometheus explorer aus.

  4. Geben Sie webapp_config_open_sessions_current_count an, um das aktuelle Konto geöffneter Sitzungen abzufragen, wie im folgenden Screenshot dargestellt:

    Screenshot des Azure-Portals mit dem Prometheus-Explorer.

Hinweis

Sie können den folgenden Befehl verwenden, um auf die Metriken zuzugreifen, indem Sie den WebLogic Monitoring Exporter verfügbar machen:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: sample-domain1-cluster-1-exporter
  namespace: sample-domain1-ns
spec:
  ports:
  - name: default
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    weblogic.domainUID: sample-domain1
    weblogic.clusterName: cluster-1
  sessionAffinity: None
  type: LoadBalancer
EOF

kubectl get svc -n sample-domain1-ns -w

Warten Sie auf die EXTERNAL-IP-Spalte in der Zeile für sample-domain1-cluster-1-exporter darauf, dass diese von <pending> zu einer IP-Adresse wechselt. Öffnen Sie dann die URL http://<exporter-public-ip>:8080/metrics in einem Browser, und melden Sie sich mit den Anmeldeinformationen an, die Sie beim Bereitstellen des Angebots angegeben haben. Hier finden Sie alle verfügbaren Metriken. Sie können alle diese Werte in das PromQL-Fenster eingeben, um sie in Azure Monitor anzuzeigen. heap_free_percent zeigt beispielsweise ein interessantes Diagramm an. Um den Speicherdruck zu beobachten, während die Last auf die Anwendung angewendet wird, legen Sie Auto refresh und Time range auf das kleinstmögliche Intervall fest und lassen Sie die Registerkarte geöffnet.

Erstellen der KEDA-Skalierung

Skalierungsmodule definieren, wie und wann KEDA eine Bereitstellung skalieren soll. In diesem Artikel wird der Prometheus Scaler zum Abrufen von Prometheus-Metriken aus dem Azure Monitor-Arbeitsbereich verwendet.

In diesem Artikel wird openSessionsCurrentCount als Trigger verwendet. Die Regel für diese Metrik wird wie folgt beschrieben. Wenn die durchschnittliche Anzahl der geöffneten Sitzungen mehr als 10 beträgt, skalieren Sie den WLS-Cluster, bis sie die maximale Replikatgröße erreicht. Skalieren Sie andernfalls den WLS-Cluster nach unten, bis sie die minimale Replikatgröße erreicht. In der folgenden Tabelle sind die wichtigsten Parameter aufgeführt:

Parametername Wert
serverAddress Der Abfrageendpunkt Ihres Azure Monitor-Arbeitsbereichs.
metricName webapp_config_open_sessions_current_count
query sum(webapp_config_open_sessions_current_count{app="app1"})
threshold 10
minReplicaCount 1
maxReplicaCount Der Standardwert ist 5. Wenn Sie die maximale Clustergröße während der Bereitstellung des Angebots geändert haben, ersetzen Sie diese durch Ihre maximale Clustergröße.

Da Sie WebLogic Monitoring Exporter zur Bereitstellungszeit ausgewählt haben, kann eine KEDA-Skalierung bereitgestellt werden. Die folgenden Schritte zeigen, wie Sie die KEDA-Skalierung für die Verwendung mit Ihrem AKS-Cluster konfigurieren:

  1. Öffnen Sie das Azure-Portal, und wechseln Sie zu der Ressourcengruppe, die Sie im Abschnitt Bereitstellen von WLS auf AKS mithilfe des Azure Marketplace-Angebots bereitgestellt haben.

  2. Wählen Sie im linken Navigationsbereich im Abschnitt Einstellungen die Option Bereitstellungen aus. Es wird eine sortierte Liste der Bereitstellungen für diese Ressourcengruppe angezeigt, wobei die neueste Bereitstellung zuerst aufgeführt wird.

  3. Scrollen Sie zum ältesten Eintrag in dieser Liste. Dieser Eintrag entspricht der Bereitstellung, die Sie im vorherigen Abschnitt gestartet haben. Wählen Sie die älteste Bereitstellung aus, deren Name mit einem ähnlichen Namen wie oracle.20210620-wls-on-aks beginnt.

  4. Klicken Sie auf Ausgaben. Diese Option zeigt die Liste der Ausgaben aus der Bereitstellung an.

  5. Der kedaScalerServerAddress-Wert ist die die Serveradresse, die die WLS-Metriken speichert. KEDA kann auf Metriken von der Adresse zugreifen und diese abrufen.

  6. Der ShellCmdtoOutputKedaScalerSample-Wert ist die base64-Zeichenfolge eines Skalierungsbeispiels. Kopieren Sie den Wert, und führen Sie ihn in Ihrem Terminal aus. Der Befehl sollte in etwa wie im folgenden Beispiel aussehen:

    echo -e YXBpVm...XV0aAo= | base64 -d > scaler.yaml
    

    Dieser Befehl erzeugt eine scaler.yaml-Datei im aktuellen Verzeichnis.

  7. Ändern Sie die Zeilen metric: und query: in scaler.yaml wie im folgenden Beispiel dargestellt:

    metricName: webapp_config_open_sessions_current_count
    query: sum(webapp_config_open_sessions_current_count{app="app1"})
    

    Hinweis

    Wenn Sie eine App mit dem Angebot bereitstellen, wird sie standardmäßig app1 genannt. Mit den folgenden Schritten können Sie auf die WLS-Verwaltungskonsole zugreifen, um den Anwendungsnamen abzurufen:

    1. Führen Sie die vorstehenden Schritte aus, um die Bereitstellungsausgaben anzuzeigen.
    2. Der Wert "adminConsoleExternalUrl " ist der vollqualifizierte, öffentliche Internetlink zur WLS-Verwaltungskonsole. Wählen Sie das Kopiersymbol neben dem Feldwert aus, um den Link in die Zwischenablage zu kopieren.
    3. Fügen Sie den Wert in Ihren Browser ein, und öffnen Sie die WLS-Verwaltungskonsole.
    4. Melden Sie sich mit dem WLS-Administratorkonto an, das Sie im Abschnitt Bereitstellen von WLS auf AKS mithilfe des Azure Marketplace-Angebots gespeichert haben.
    5. Wählen Sie unter Domänenstruktur die Option Bereitstellungen aus. app1 wird aufgeführt.
    6. Wählen Sie app1 aus, um zu ermitteln, dass der Name-Wert für die Anwendung app1 ist. Verwenden Sie app1 als Anwendungsname in der Abfrage.
  8. Ändern Sie bei Bedarf die Zeile maxReplicaCount: in scaler.yaml, wie im folgenden Beispiel dargestellt. Es ist ein Fehler, diesen Wert höher festzulegen als das, was Sie zur Bereitstellungszeit auf der Registerkarte AKS angegeben haben.

    maxReplicaCount: 10
    
  9. Verwenden Sie den folgenden Befehl, um die KEDA-Skalierungsregel zu erstellen, indem Sie scaler.yaml anwenden:

    kubectl apply -f scaler.yaml
    

    Es dauert mehrere Minuten, bis KEDA Metriken aus dem Azure Monitor-Arbeitsbereich abruft. Sie können den Status der Skalierung mit dem folgenden Befehl überwachen:

    kubectl get hpa -n sample-domain1-ns -w
    

    Nachdem die Skalierung einsatzbereit ist, sieht die Ausgabe ähnlich wie der folgende Inhalt aus. Der Wert in der Spalte TARGETS wechselt von <unknown> zu 0.

    NAME                                       REFERENCE                          TARGETS              MINPODS   MAXPODS   REPLICAS   AGE
    keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   0/10 (avg)           1         5         2          15s
    

Testen der automatischen Skalierung

Jetzt können Sie die automatische Skalierungsfunktion beobachten. In diesem Artikel werden neue Sitzungen mithilfe von curl geöffnet, um auf die Anwendung zuzugreifen. Nachdem die durchschnittliche Sitzungsanzahl größer als 10 ist, erfolgt die Skalierungsaktion. Die Sitzungen dauern 150 Sekunden, und die Anzahl der geöffneten Sitzungen sinkt, während die Sitzungen ablaufen. Nachdem die durchschnittliche Sitzungsanzahl kleiner als 10 ist, erfolgt die Aktion zum Herunterskalieren. Führen Sie die folgenden Schritte aus, um die Aktionen zum Hoch- oder Herunterskalieren auszulösen:

  1. Verwenden Sie die folgenden Schritte, um die Anwendungs-URL zu erhalten:

    1. Führen Sie die vorstehenden Schritte aus, um die Bereitstellungsausgaben anzuzeigen.
    2. Der clusterExternalUrl-Wert ist der vollqualifizierte, im öffentlichen Internet sichtbare Link zur Beispiel-App, die in WLS auf diesem AKS-Cluster bereitgestellt wird. Um den Link in Ihre Zwischenablage zu kopieren, wählen Sie das Symbol „Kopieren“ neben dem Feldwert aus.
    3. Die URL für den Zugriff auf testwebapp.war lautet ${clusterExternalUrl}testwebapp – z. B. http://wlsgw202403-wlsaks0314-domain1.eastus.cloudapp.azure.com/testwebapp/.
  2. Führen Sie den curl-Befehl aus, um auf die Anwendung zuzugreifen und neue Sitzungen auszulösen. Im folgenden Beispiel werden 22 neue Sitzungen geöffnet. Die Sitzungen sind nach 150 Sekunden abgelaufen. Ersetzen Sie den WLS_CLUSTER_EXTERNAL_URL-Wert durch Ihre Werte.

    COUNTER=0
    MAXCURL=22
    WLS_CLUSTER_EXTERNAL_URL="http://wlsgw202403-wlsaks0314-domain1.eastus.cloudapp.azure.com/"
    APP_URL="${WLS_CLUSTER_EXTERNAL_URL}testwebapp/"
    
    while [ $COUNTER -lt $MAXCURL ]; do curl ${APP_URL}; let COUNTER=COUNTER+1; sleep 1;done
    
  3. Verwenden Sie in zwei separaten Shells die folgenden Befehle:

    • Verwenden Sie den folgenden Befehl, um die Skalierung zu beobachten:

      kubectl get hpa -n sample-domain1-ns -w
      

      Dieser Befehl erzeugt eine Ausgabe ähnlich wie im folgenden Beispiel:

      $ kubectl get hpa -n sample-domain1-ns -w
      NAME                                       REFERENCE                          TARGETS          MINPODS   MAXPODS   REPLICAS   AGE
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   0/10 (avg)       1         10         1         24m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   0/10 (avg)       1         10         1         24m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   5/10 (avg)       1         10         1         26m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   22/10 (avg)      1         10         1         27m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   7334m/10 (avg)   1         10         3         29m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   14667m/10 (avg)  1         10         3         48m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   0/10 (avg)       1         10         3         30m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   0/10 (avg)       1         10         3         35m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   0/10 (avg)       1         10         1         35m
      keda-hpa-azure-managed-prometheus-scaler   Cluster/sample-domain1-cluster-1   0/10 (avg)       1         10         5         53m
      
    • Verwenden Sie in einer separaten Shell den folgenden Befehl, um die WLS-Pods zu beobachten:

      kubectl get pod -n sample-domain1-ns -w
      

      Dieser Befehl erzeugt eine Ausgabe ähnlich wie im folgenden Beispiel:

      $ kubectl get pod -n sample-domain1-ns -w
      NAME                             READY   STATUS              RESTARTS   AGE
      sample-domain1-admin-server      2/2     Running             0          28h
      sample-domain1-managed-server1   2/2     Running             0          28h
      sample-domain1-managed-server1   2/2     Running             0          28h
      sample-domain1-managed-server2   0/2     Pending             0          0s
      sample-domain1-managed-server2   0/2     Pending             0          0s
      sample-domain1-managed-server2   0/2     ContainerCreating   0          0s
      sample-domain1-managed-server3   0/2     Pending             0          0s
      sample-domain1-managed-server3   0/2     Pending             0          0s
      sample-domain1-managed-server3   0/2     ContainerCreating   0          0s
      sample-domain1-managed-server3   1/2     Running             0          1s
      sample-domain1-admin-server      2/2     Running             0          95m
      sample-domain1-managed-server1   2/2     Running             0          94m
      sample-domain1-managed-server2   2/2     Running             0          56s
      sample-domain1-managed-server3   2/2     Running             0          55s
      sample-domain1-managed-server4   1/2     Running             0          9s
      sample-domain1-managed-server5   1/2     Running             0          9s
      sample-domain1-managed-server5   2/2     Running             0          37s
      sample-domain1-managed-server4   2/2     Running             0          42s
      sample-domain1-managed-server5   1/2     Terminating         0          6m46s
      sample-domain1-managed-server5   1/2     Terminating         0          6m46s
      sample-domain1-managed-server4   1/2     Running             0          6m51s
      sample-domain1-managed-server4   1/2     Terminating         0          6m53s
      sample-domain1-managed-server4   1/2     Terminating         0          6m53s
      sample-domain1-managed-server3   1/2     Running             0          7m40s
      sample-domain1-managed-server3   1/2     Terminating         0          7m45s
      sample-domain1-managed-server3   1/2     Terminating         0          7m45s
      

Das Diagramm im Azure Monitor-Arbeitsbereich ähnelt dem folgenden Screenshot:

Screenshot des Azure-Portals mit dem Prometheus-Explorer-Diagramm.

Bereinigen von Ressourcen

Zum Vermeiden von Azure-Gebühren sollten Sie nicht benötigte Ressourcen bereinigen. Wenn Sie den Cluster nicht mehr benötigen, verwenden Sie den Befehl az group delete. Mit den folgenden Befehlen werden die Ressourcengruppe, der Containerdienst, die Containerregistrierung und alle zugehörigen Ressourcen entfernt:

az group delete --name <wls-resource-group-name> --yes --no-wait
az group delete --name <ama-resource-group-name> --yes --no-wait

Nächste Schritte

Weitere Optionen zum Erstellen von automatischen Skalierungslösungen und Ausführen von WLS in Azure werden in den folgenden Referenzen beschrieben: