Cluster zur Bereitstellung für Liberty-Elastizität konfigurieren

Sie können einen Verbund so konfigurieren, dass er die Liberty-Elastizität unterstützt. Bei Nutzung der Liberty-Elastizität kann der Skalierungscontroller Liberty-Software auf einem registrierten Host installieren und einen neuen Server erstellen. Da die Unterstützung für die Liberty-Elastizität auch Unterstützung für die JVM-Elastizität umfasst, kann der Skalierungscontroller Liberty-Server ausgehend von der Ressourcennutzung und von optionalen Skalierungsrichtlinien starten oder stoppen. Die Zahl von verfügbaren Servern steigt, wenn die Anwendungsnachfrage hoch ist, und sinkt, wenn die Anwendungsnachfrage niedrig ist.

Vorbereitende Schritte

Legen Sie die Zielhosts fest, auf denen Sie die Liberty-Software installieren möchten, und wählen Sie die zu installierenden Liberty-Softwarekomponenten aus. Der Skalierungscontroller muss mindestens die folgenden installierbaren Dateien und Paketdateien auf einem Zielhost installieren:

  • Ein Paket, das einen eigenständigen Liberty-Server mit einer einzigen Anwendung enthält. In Schritt 5c ist beschrieben, wie das Serverpaket erstellt wird.
  • Eine installierbare Datei, die einen Liberty-Server bereitstellt, der das Verzeichnis wlp, aber nicht das Verzeichnis usr enthält. In Schritt 5a ist beschrieben, wie die installierbare Archivdatei für die Liberty-Laufzeitumgebung erstellt wird.

Auf jedem Zielhost muss RXA oder SSH und eine Java Runtime Environment (JRE) installiert sein, die die Mindestvoraussetzungen des Liberty-Servers erfüllt. Weitere Informationen finden Sie in den Abschnitten RXA für Operationen des Liberty-Verbunds einrichten und Variable JAVA_HOME für Liberty-Verbundmember und -Controller setzen.

Wenn auf einem Zielhost keine JRE installiert ist, für die die Variable JAVA_HOME und die Systemvariable PATH einen Pfad zur JRE angeben, kann der Skalierungscontroller die JRE auf dem Zielhost installieren. In Schritt 5b ist beschrieben, wie eine JRE-Archivdatei und eine installierbare JRE-Datei erstellt werden.

Multimedia Hinweis: Im Video Configuring an auto-scalable cluster for Liberty elasticity wird gezeigt, wie ein bereitstellbarer Cluster konfiguriert wird. [Transkript]

Vorgehensweise

  1. Konfigurieren Sie einen Verbund so, dass er die JVM-Elastizität unterstützt. Vergewissern Sie sich, dass der Verbund mindestens ein dynamisches Cluster-Member enthält.

    Detaillierte Angaben zum Konfigurieren von Skalierungscontrollern mit dynamischen Cluster-Membern finden Sie unter Automatisch skalierbare Cluster für JVM-Elastizität konfigurieren.

  2. Vergewissern Sie sich, dass jedes dynamische Cluster-Member zu einem Cluster mit einem Namen gemäß der Namenskonvention Name_der_Stackgruppe.Paketname gehört.

    Vorhandene dynamische Cluster-Member und Server, die vom Skalierungscontroller bereitgestellt werden, werden zu Membern dieses Clusters. Name_der_Stackgruppe ist der Namen eines gemeinsam genutzten Verzeichnisses, das installierbare Dateien und Pakete enthält, die Zielhosts von einem Skalierungscontroller basierend auf Skalierungsrichtlinien bereitgestellt werden. Paketname ist der Name des Serverpakets, das den Zielhosts vom Skalierungscontroller bereitgestellt wird.

    Schreiben Sie die folgende Anweisung für einen Cluster mit dem Namen myStackGroup.cluster1 in die Datei server.xml jedes vorhandenen dynamischen Cluster-Members:

    <clusterMember name="myStackGroup.cluster1"/>

    Sie verwenden den Clusternamen in Schritt 5c und Schritt 7 dieses Abschnitts. Verwenden Sie cluster1.zip in Schritt 5c als Serverpaketnamen. Erstellen Sie in Schritt 7 das Verzeichnis myStackGroup für die zu implementierenden installierbaren Dateien und Pakete.

  3. Optional: Fügen Sie Skalierungsrichtlinien zum Skalierungscontroller hinzu (siehe Skalierungsrichtlinien definieren).
  4. Registrieren Sie jeden Zielhost bei einem Skalierungscontroller.

    Durch das Registrieren eines Hosts kann der Skalierungscontroller Dateien auf diesen Host übertragen und auf Dateien, Befehle und andere Ressourcen auf dem Host zugreifen. Verwenden Sie zum Registrieren eines Zielhosts den Befehl registerHost. Suchen Sie in der Datei server.xml des Skalierungscontrollers nach den Werten für die Parameter --host, --port, --user und --password. Definieren Sie mit den Parametern --rpcUser und --rpcUserPassword einen Benutzer und ein Kennwort für die Betriebssystemanmeldung, damit keine SSH-Datei mit privatem Schlüssel wie für Zielhosts mit Linux- oder Windows-Betriebssystemen verwendet werden muss. Der mit --rpcUser angegebene Benutzer muss die Betriebssystemberechtigungen für die Position des Implementierungsziels besitzen.

    wlp/bin/collective registerHost targetHost --host=controllerHost --port=controllerHTTPSPort --user=controllerAdmin --password=controllerAdminPassword --rpcUser=osUser --rpcUserPassword=osUserPassword

    Wenn Sie Dateien auf Zielhosts übertragen möchten, müssen Sie nicht den Parameter --hostWritePath in den Befehl aufnehmen. Der Stackbereitstellungscode legt Schreibpfade für Sie fest. Wenn bereits ein Host registriert ist, können Sie den Befehl updateHost verwenden, um die Registrierungsinformationen neu zu definieren. Weitere Informationen finden Sie im Artikel Host-Computer werden bei einem Liberty-Verbund registriert.

    Wenn sich der Zielhost auf demselben Computer wie der Controller-Host befindet, müssen Sie außerdem den Befehl updateHost für den Controller-Host ausführen.

  5. Erstellen und konfigurieren Sie installierbare Dateien und Pakete, die ein Skalierungscontroller auf einem registrierten Host implementieren kann.

    Eine installierbare Datei ist eine Binärdatei, die für die Ausführung der Anwendung, die Sie auf einem registrierten Host installieren möchten, erforderlich ist (z. B. eine Liberty-Laufzeitumgebung oder eine JRE). Ein Paket ist die in einer komprimierten Datei gepackte Anwendung.

    1. Erstellen Sie ein Liberty-Laufzeitarchiv, das das Verzeichnis wlp, aber nicht das Verzeichnis usr enthält. Die Namenskonvention für diese installierbare Datei ist Typ.Name.zip, z. B. wlp.855.zip. Sie haben die folgenden Möglichkeiten, ein Liberty-Laufzeitarchiv zu erstellen:
      • Führen Sie den Befehl package für den Liberty-Server mit der Option --include=wlp aus, z. B.:
        wlp/bin/server package --include=wlp

        Wenn Sie einen Dateinamen und eine Zielposition angeben möchten, fügen Sie die Option --archive=Archivpfadname hinzu. Beispiel:

        wlp/bin/server package --include=wlp --archive=c:\temp\wlp.855.zip

        Wenn Sie keinen gültigen Dateinamen oder keine gültige Zielposition mit der Option --archive angeben, erstellt der Befehl das Laufzeitarchiv wlp.zip an der Position $WLP_OUTPUT_DIR, für die standardmäßig das Verzeichnis ${wlp.install.dir}/usr/servers definiert ist. Die Zielposition muss vorhanden sein, bevor Sie den Befehl ausführen. Wenn die Zielposition beispielsweise c:\temp ist, muss das Verzeichnis C:\temp vorhanden sein und es muss Schreibberechtigung haben, damit der Befehl das Archiv in das Verzeichnis C:\temp schreiben kann.

      • Führen Sie den Befehl package mit der Option --include=all aus. Löschen Sie dann das Verzeichnis usr. Der Befehl package sieht etwa wie folgt aus:
        wlp/bin/server package myServer --include=all --archive=myArchive.zip
      • Erstellen Sie eine komprimierte Datei (.zip), die das Verzeichnis wlp ohne das Verzeichnis usr enthält.

      Stellen Sie nach Erstellung des Liberty-Laufzeitarchivs sicher, dass der Archivname der Namenskonvention wlp.Name.zip entspricht.

    2. Erstellen Sie Archive für das Java Development Kit (JDK) und alle anderen erforderlichen installierbaren Dateien oder rufen Sie diese Archive ab. Die Namenskonvention für eine installierbare Datei ist Typ.Name.zip, z. B. jre.17.zip. Gültige Typwerte für installierbare Dateien sind:
      • wlp für eine Liberty-Laufzeit
      • jre für eine Java Runtime Environment
      • other für andere Dateitypen. Dies ist der Standardwert.

      Wenn Sie beispielsweise ein Archiv für eine JRE erstellen möchten, erstellen Sie eine komprimierte Datei (.zip) mit dem Inhalt des Verzeichnisses java Ihrer IBM JRE-Installation. Schließen Sie nicht das Verzeichnis java selbst, aber alle Ordner und Dateien im Verzeichnis java ein. Halten Sie die Namenskonvention jre.Name.zip beim Festlegen des Archivnamens ein.

    3. Wenn Sie einen Liberty-Server und Anwendungen implementieren möchten, erstellen Sie eine ZIP-Datei für das Serverpaket, die den Liberty-Server und die Anwendungen enthält. Die Namenskonvention für ein Serverpaket ist Paketname.zip, z. B. cluster1.zip. Sie haben unter anderem folgende Möglichkeiten, ein Serverpaket zu erstellen:
      • Führen Sie den Befehl package aus:
        wlp/bin/server package cluster1 --include=usr
        Der Befehl erstellt beispielsweise ein Serverpaket mit dem Namen C:\wlp\usr\servers\cluster1\cluster1.zip.
      • Führen Sie den Befehl package mit der Option --include=all aus. Löschen Sie dann das Verzeichnis wlp. Der Befehl package sieht etwa wie folgt aus:
        wlp/bin/server package cluster1 --include=all --archive=cluster1.zip
      • Erstellen Sie eine komprimierte Datei (.zip), die das Verzeichnis usr ohne das Verzeichnis wlp enthält.

      Gehen Sie beispielsweise wie folgt vor, um ein Serverpaket mit dem Namen cluster1.zip zu erstellen, das einen eigenständigen Liberty-Server mit einer einzigen Anwendung enthält:

      1. Erstellen Sie einen Server:
        wlp/bin/server create cluster1
      2. Kopieren Sie eine Anwendung in das Verzeichnis dropins des Servers "cluster1".
      3. Packen Sie den Server:
        wlp/bin/server package cluster1 --include=usr
      Die Datei wlp/usr/servers/cluster1/cluster1.zip wird erstellt.
      Wichtig: Vergewissern Sie sich, dass die Umgebungseinstellungen jeder Datei server.env im Paket auf den Zielhosts gültig sind. Wenn JAVA_HOME festgelegt ist, müssen Sie die Variable auf eine Position setzen, die auf den Zielhosts vorhanden ist, um zu verhindern, dass Implementierungen fehlschlagen.
      Für Windows-PlattformenAnmerkung: Erstellen Sie für Windows-Zielhosts eine Datei server.env, die die Variable JAVA_HOME auf die JRE-Position auf den Zielhosts setzt. Legen Sie die Datei server.env nach der Ausführung des Befehls package in demselben Verzeichnis wie die Datei server.xml in der Serverpaket-ZIP-Datei ab. Beispielinhalt für server.env:
      JAVA_HOME=C:\wlp.jre\jre.17.zip\jre
  6. Legen Sie einen Benutzernamen und ein Kennwort für den Verbundcontroller oder den Stack-Manager in der Skalierungscontrollerdatei server.xml fest.
    <collectiveController user="adminUser" password="adminPassword" />
    oder
    <stackManager controllerUser="adminUser" controllerUserPassword="adminPassword" />
  7. Legen Sie die installierbaren Dateien und Pakete an der Position WLP_STACK_GROUPS_DIR ab, die standardmäßig als $WLP_USER_DIR/shared/stackGroups definiert ist.

    Skalierungscontroller überwachen Standardpositionen für installierbare Dateien und Pakete im Dateisystem und reagieren dynamisch auf Aktualisierungen. Wenn Sie die installierbaren Dateien und Pakete an den Standardpositionen ablegen, müssen Sie keines der Standardattribute ändern.

    Sie können die Standard-Stack-Gruppe defaultStackGroup verwenden. Sie können aber auch ein eigenes Unterverzeichnis für Stack-Gruppen (stackGroups) erstellen, z. B. myStackGroup, und dieses den Unterverzeichnissen installables und packages hinzufügen.

    wlp/usr
          /servers
          /shared
             ...
             /stackGroups
                /defaultStackGroup
                   /installables
                   /packages
                /myStackGroup
                   /installables
                   /packages

    Die Skalierungscontroller implementieren die installierbaren Dateien und Pakete auf dem registrierten Host und erstellen einen neuen Server.

    Tipp: Es wird nur ein neuer Server erstellt, wenn die Skalierungsrichtlinie aktiviert ist und einen neuen Server erfordert. Wenn Sie durchsetzen möchten, dass ein Skalierungscontroller einen neuen Server erstellt, passen Sie den Wert min und ggf. den Wert max der Skalierungsrichtlinie für den Skalierungscontroller an. Wenn Ihr Skalierungscontroller beispielsweise keine Skalierungsrichtlinie hat und Ihr Verbund drei Skalierungsmember enthält, fügen Sie der Skalierungscontrollerdatei server.xml eine Richtlinie hinzu, die durchsetzt, dass der Skalierungscontroller mindestens vier aktive Member hat:
    <scalingDefinitions>
       <defaultScalingPolicy enabled="true" min="4" max="6"/>
    </scalingDefinitions>

    Die Clusternamenskonvention für die Liberty-Elastizität ist StackGroupName.PackageName. Wenn ein Stack implementiert wird, wird in der Datei server.xml des implementierten Servers automatisch <clusterMember name="StackGroupname.PackageName" festgelegt. Das entsprechende Element <scalingPolicy> enthält die Anweisung <bind clusters="StackGroupName.Packagename"/>.

    Tabelle 1. Standardpositionen für installierbare Dateien und Pakete. Liberty-Umgebungsvariablen sind auf die Standardinstallationsverzeichnisse gesetzt. Wie die Standardpositionen überschrieben werden, erfahren Sie unter Liberty-Umgebung anpassen.
    Datei Standardinstallationsverzeichnis
    Installierbare Datei vom Typ wlp /wlp
    Installierbare Datei vom Typ jre /wlp/jre
    Installierbare Datei vom Typ other /wlp/other
    Paket /wlp/usr
  8. Untersuchen Sie die Konfigurationsattribute für Stackgruppen und installierbare Dateien und ändern Sie die Konfigurationen entsprechend, um festzulegen, wann und wo die Liberty-Bereitstellung erfolgen soll. Möglicherweise müssen Sie die Standardkonfigurationen überschreiben.

    Definieren Sie in den Elementen stackGroup und installable in der Datei server.xml des Skalierungscontrollers neue Werte, um die Standardkonfigurationen zu überschreiben. Informationen zu den Elementen stackGroup und installable finden Sie unter Skalierungscontroller.

    Im Folgenden sind Tipps für das Überschreiben von Standardwerten für einige Elemente aufgeführt:

    • Das Element installable definiert eine installierbare Datei für eine Stackgruppe. Das Element installable kann ein untergeordnetes Element von stackGroup sein oder ein gleichgeordnetes Element, auf das ein untergeordnetes Element installableRef von stackGroup verweist.
      Die folgenden Beispiele zeigen, wie Sie die Einstellungen in der Skalierungscontrollerdatei server.xml so ändern können, dass der Standardwert für das Attribut installable einer Stackgruppe überschrieben wird:
      <stackGroup name="myStackGroup">
         <installable name="wlp.v8555.zip" sourceDir="c:\myStackGroup\installables"/>
      </stackGroup>
      oder
      <stackGroup name="myStackGroup" installDir="/myInstallDir" installableRef="myInstallable1, myInstallable2"/>
      <installable name="wlp.v8555.zip" id="myInstallable1" sourceDir="c:\myStackGroup\installablesOne" />
      <installable name="jre.v1.6.zip" id="myInstallable2" sourceDir="c:\myStackGroup\installablesTwo"/>
    • Das untergeordnete Element deployVariable gibt eine Substitutionsvariable an, die in den implementierten Stack eingefügt wird. Sie können angeben, dass die Substitutionsvariable bei jeder Stackimplementierung automatisch erhöht wird. Verwenden Sie beispielsweise ein Attribut vom Typ deployVariable, um einen Anfangswert für die Portnummer anzugeben und den Wert bei jeder Implementierung zu erhöhen. Das Attribut deployVariable hat in diesem Fall den Zweck, Portkonflikte auf dem Zielhost zu vermeiden. Das Element deployVariable in der Datei server.xml des implementierten Servers verwendet eine arithmetische Methode, um die Laufzeitportnummer abzuleiten.

      Gehen Sie beispielsweise wie folgt vor, um einen Anfangsportwert und einen Wert festzulegen, um den der Portwert erhöht wird:

      1. Legen Sie httpPort="${http.port}" im Element httpEndpoint der gepackten Serverdatei server.xml fest:
        <httpEndpoint ... httpPort="${http.port}" />
      2. Fügen Sie der Skalierungscontrollerdatei server.xml eine Definition deployVariable hinzu, die den Anfangsport und den Wert festlegt, um den der Portwert erhöht wird:
        <stackGroup name="DefaultStackGroup" installDir="">
          <deployVariable name="http.port" value="9080" increment="1"/>
        </stackGroup>

      In diesem Fall würde der Wert von httpPort jedes Mal, wenn der Stack erneut implementiert wird, um 1 erhöht werden. Wenn der Stack zum ersten Mal auf host1 implementiert wird, sieht das Element für den HTTP-Endpunkt wie folgt aus:

      <httpEndpoint ... httpPort="9080" />

      Wird der Stack zum zweiten Mal auf host1 implementiert, sieht das Element wie folgt aus:

      <httpEndpoint ... httpPort="9081" />

      Für das Attribut deployVariable hat value den Standardwert null. Der Standardwert für increment ist 0 (null).

      Wenn deployVariable in der Skalierungscontrollerdatei server.xml angegeben ist, ist die Laufzeitportnummer eines implementierten Servers die mit value angegebene Zeichenfolge für den Anfangsport, erhöht um die mit increment angegebene ganze Zahl.

    • Wenn in der Skalierungscontrollerdatei server.xml die Stackgruppe wie folgt definiert ist, definieren Sie httpPort nicht auch in der Datei bootstrap.properties für das Serververzeichnis, mit dem Sie ein Serverpaket erstellen. Andernfalls wird der in bootstrap.properties definierte httpPort-Wert und nicht der vom Konfigurationselement deployVariable generierte Wert verwendet.
      <stackGroup name="DefaultStackGroup" installDir="">
        <deployVariable name="http.port" value="9080" increment="1"/>
      </stackGroup>
  9. Optional: Ändern Sie das Intervall, in dem der Skalierungscontroller das Dateisystem auf hinzugefügte, aktualisierte und gelöschte Stackgruppen überprüft.

    Der Skalierungscontroller scannt den Inhalt des Verzeichnisses stackGroups und seiner Unterverzeichnisse nach Änderungen. Wurden Änderungen am Inhalt vorgenommen, kann dies dazu führen, dass der Controller Cluster bereitstellt, für die zuvor keine Pakete verfügbar waren. Die Aktualisierung von Paketen führt nicht dazu, dass der Controller vorhandene Cluster erneut bereitstellt.

    Standardmäßig scannt der Controller die Position WLP_STACK_GROUPS_DIR alle 5000 Millisekunden (fünf Sekunden). Wenn Sie das Scanintervall ändern oder die Scans inaktivieren möchten, legen Sie in der Datei server.xml des Skalierungscontrollers neue Werte für die Stack-Manager-Attribute scanningInterval und scanningEnable fest. Sie können beispielsweise Scans aktivieren und das Scanintervall auf sechs Sekunden setzen, indem Sie eine Anweisung ähnlich der folgenden zur Datei server.xml des Skalierungscontrollers hinzufügen:

    <stackManager groupsDir="${wlp.install.dir}/usr/shared/stackGroups/"
                  controllerUser="adminUser" controllerUserPassword="adminPassword"
                  scanningInterval="6000" scanningEnable="true">
    </stackManager>

    Wenn Sie die Scans inaktivieren möchten, setzen Sie scanningEnable auf false.

  10. Optional: Weisen Sie den Skalierungscontroller an, das System zu scannen, um neue, aktualisierte und gelöschte Stackgruppen zu ermitteln.

    Führen Sie eine Operation der MBean "StackManager" aus, um durchzusetzen, dass der Skalierungscontroller die Position WLP_STACK_GROUPS_DIR auf hinzugefügte, aktualisierte und gelöschte Stackgruppen überprüft. Auch wenn die Datei server.xml des Skalierungscontrollers den Eintrag scanningEnable="false" enthält, können Sie eine Operation der MBean "StackManager" ausführen, um einen Scan auf hinzugefügte, aktualisierte und gelöschte Gruppen durchzusetzen.

    In der Liste der bereitgestellten MBeans finden Sie weitere Informationen zur MBean "StackManager".

  11. Optional: Starten Sie IHS, um das Routing an Server zu aktivieren.

    Damit IBM HTTP Server (IHS) Webanwendungen erkennt und an dynamisch bereitgestellte Cluster weiterleitet, müssen Sie Dynamic Routing auf dem Host aktivieren, auf dem sich der Skalierungscontroller befindet. IHS ruft die Routing-Informationen für die bereitgestellten Server vom Dynamic Routing-Service ab. Ist der Serverstatus aktiviert, können Sie die Routing-Informationen anzeigen.

    Lesen Sie die Informationen unter Dynamisches Routing für Liberty-Verbünde konfigurieren, wenn IHS nicht installiert ist. Im folgenden Video wird außerdem gezeigt, wie die Unterstützung für Dynamic Routing mit IBM Installation Manager installiert wird:

    Multimedia Video: Im Video Enabling IHS for Liberty Dynamic Routing wird gezeigt, wie Sie IHS und Web Server Plug-in for WebSphere Application Server installieren und wie der vorläufige Fix für Dynamic Routing angewendet wird. [Transkript]


Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_autoscale_configlibertyelast.html