4.2. Bereitstellen an einen Fabric


4.2.1. Einen Fabric erstellen

4.2.1.1. Überblick

Abbildung 4.2 zeigt die Übersicht eines Beispiel-Fabric, den Sie erstellen werden. Das Fabric Ensemble besteht aus nur einem Fabric Server (wodurch sich dieser Fabric nur zum Experimentieren eignet) und zwei untergeordneten Containern.

Abbildung 4.2. Ein Beispiel-Fabric mit untergeordneten Containern

Ein Beispiel-Fabric mit untergeordneten Containern

4.2.1.2. Fabric Server

Ein Fabric Server (oder Server) bildet die Grundlage eines Fabric. Er beinhaltet einen Registry-Dienst, der eine replizierbare Datenbank mit Informationen zum Status des Fabric verwahrt. Wenn Sie den Fabric zu Beginn erstellen, existiert nur ein einzelner Fabric Server.

4.2.1.3. Untergeordnete Container

Das Erstellen von einem oder mehreren untergeordneten Containern ist die einfachste Weise einen Fabric zu erweitern. Wie in Abbildung 4.2, »Ein Beispiel-Fabric mit untergeordneten Containern« gezeigt ist der erste Container im Fabric ein »root«-Container, und beide untergeordnete Container sind von ihm abgeleitet.
Jeder untergeordnete Container ist eine unabhängige Red Hat JBoss Fuse Container Instanz, die ihre eigene JVM Instanz betreibt. Die Daten-Dateien für die untergeordneten Container sind im InstallDir/instances Verzeichnis gespeichert.

4.2.1.4. Schritte beim Erstellen des Fabric

Um den einfachen Fabric zu erstellen, der in Abbildung 4.2, »Ein Beispiel-Fabric mit untergeordneten Containern« dargestellt ist, befolgen Sie diese Schritte:
  1. (Optional) Passen Sie den Namen des »root« Containers an, indem Sie die InstallDir/etc/system.properties Datei bearbeiten und einen anderen Namen für diese Eigenschaft festlegen:
    karaf.name=root
    Anmerkung
    Beim ersten Container in Ihrem Fabric ist dieser Schritt optional. Wenn Sie jedoch zu einem späteren Zeitpunkt einen »root« Container mit dem Fabric verbinden wollen, so müssen Sie den Namen des neuen Containers anpassen, damit es nicht zu Konflikten mit bestehenden »root« Containern im Fabric kommt.
  2. Um den ersten Fabric Container zu erstellen, der als Basis für den neuen Fabric dient, geben Sie den folgenden Konsolebefehl ein:
    JBossFuse:karaf@root> fabric:create --new-user AdminUser
      --new-user-password AdminPass
      --new-user-role Administrator
      --resolver manualip
      --manual-ip 127.0.0.1
      --zookeeper-password ZooPass
      --wait-for-provisioning
    Der aktuelle Container, der standardmäßig den Namen root trägt, wird zu einem Fabric Server mit einem installierten Registry-Dienst. Dies ist anfangs der einzige Container im Fabric. Die --new-user, --new-user-password und --new-user-role Optionen legen die Berechtigungen für einen neuen Administrator-Benutzer fest. Das Zookeeper Passwort wird zur Sicherung vertraulicher Daten im Fabric Registry-Dienst verwendet (alle Knoten unter /fabric).
    Anmerkung
    Sie werden meist nicht zur Eingabe des Zookeeper Passworts aufgefordert, wenn Sie auf den Registry-Dienst zugreifen, weil es in der aktuellen Sitzung zwischengespeichert wird. Wenn Sie jedoch einen Container mit einem Fabric verbinden, so müssen Sie das Zookeeper Passwort des Fabric eingeben.
    Anmerkung
    Es wird empfohlen, dass Sie dem Rechner, der als Host für einen Fabric Server fungiert, eine statische IP-Adresse zuweisen und dass Sie diesen Port explizit mit den --resolver und --manual-ip Optionen festlegen, wenn Sie den Fabric erstellen. Für einfache Tests und Demonstrationen können Sie die Loopback-Adresse 127.0.0.1 festlegen (wie hier). Weitere Informationen finden Sie im Kapitel »Einen neuen Fabric erstellen« im »Fabric Handbuch«.
  3. Erstellen Sie zwei untergeordnete Container. Heißt Ihr root-Container root, so geben Sie den folgenden Konsolenbefehl ein:
    JBossFuse:karaf@root> fabric:container-create-child root child 2
    Creating new instance on SSH port 8102 and RMI ports 1100/44445 at: /home/fbolton/Programs/JBossFuse/jboss-fuse-6.2.0.redhat-123/instances/child2
    Creating new instance on SSH port 8103 and RMI ports 1101/44446 at: /home/fbolton/Programs/JBossFuse/jboss-fuse-6.2.0.redhat-123/instances/child
    The following containers have been created successfully:
    	Container: child2.
    	Container: child.
    Falls Sie zur Eingabe eines JMX Benutzernamens und Passworts aufgefordert werden, so geben Sie die Kombination von Benutzernamen/Passwort ein, die Sie in Schritt 2 definiert haben.
  4. Rufen Sie mit dem fabric:container-list Befehl eine Liste aller Container in Ihrem neuen Fabric auf. Die Liste sollte ungefähr so aussehen:
    JBossFuse:karaf@root> fabric:container-list
    [id]      [version]  [type]  [connected]  [profiles]              [provision status]
    root*     1.0        karaf   yes          fabric                  success           
                                              fabric-ensemble-0000-1                    
                                              jboss-fuse-full                           
      child   1.0        karaf   yes          default                 success           
      child2  1.0        karaf   yes          default                 success

4.2.1.5. Herunterfahren der Container

Da die untergeordneten Container in ihren eigenen JVMs laufen, stoppen Sie nicht automatisch, wenn der root-Container heruntergefahren wird. Um einen Container und dessen untergeordnete Container herunterzufahren, stoppen Sie zuerst die untergeordneten Container mit dem fabric:container-stop Befehl. Um zum Beispiel den aktuellen Fabric komplett zu stoppen, geben Sie diese Konsolenbefehle ein:
JBossFuse:karaf@root> fabric:container-stop child
JBossFuse:karaf@root> fabric:container-stop child2
JBossFuse:karaf@root> shutdown
Nach dem Neustart des root-Containers müssen Sie explizit die untergeordneten Container mit dem fabric:container-start Konsolenbefehl neu starten.

4.2.2. Fabric Profile erstellen

4.2.2.1. Überblick

Ein Profil ist die Grundeinheit der Bereitstellung in einem Fabric. Sie können eines oder mehrere Profile einem Container bereitstellen und der Inhalt dieser bereitgestellten Profile entscheidet, was in dem Container installiert wird.

4.2.2.2. Inhalte eines Profils

Ein Profil beinhaltet die folgenden Arten von Informationen:
  • Die URL Speicherorte von Features Repositorys
  • Eine Liste der zu installierenden Funktionen
  • Eine Liste zu installierender Bündel (oder - allgemeiner - jedes passende JAR-Paket—einschließlich OSGi Bündel, Fuse Application Bündel und WAR-Dateien)
  • Eine Sammlung von Konfigurationseinstellungen für den OSGi Config Admin Dienst
  • Java Systemeigenschaften, die den Apache Karaf Container beeinflussen etc/system.properties)
  • Java Systemeigenschaften, die installierte Bündel beeinflussen etc/system.properties)

4.2.2.3. Basisprofil

Profile unterstützen Vererbung. Dies kann von Nutzen sein, wenn Sie einen Cluster an ähnlichen Servern bereitstellen möchten—etwa wenn sich Server nur in der Wahl der TCP-Port-Nummer unterscheiden. Für diesen Fall würden Sie in der Regel ein Basisprofil definieren, das alle den Servern gemeinsamen Bereitstellungsdaten enthält. Jedes einzelne Serverprofil würde vom gemeinsamen Basisprofil erben, aber Konfigurationseinstellungen entsprechend seiner Serverinstanz hinzufügen.

4.2.2.4. Ein Basisprofil erstellen

Um das gs-cxf-base Profil zu erstellen, gehen Sie wie folgt vor:
  1. Erstellen Sie das gs-cxf-base Profil durch Eingabe des Konsolenbefehls:
    JBossFuse:karaf@root> fabric:profile-create --parent feature-cxf gs-cxf-base
  2. Fügen Sie das get-started Features Repository (siehe Ein Feature für die Applikation definieren) mit dem folgenden Konsolenbefehl dem gs-cxf-base Profil hinzu:
    JBossFuse:karaf@root> profile-edit -r mvn:org.fusesource.example/get-started/1.0-SNAPSHOT/xml/features gs-cxf-base
  3. Fügen Sie jetzt das cxf-http-jetty Feature (das Support für den HTTP-Jetty-Endpunkt bietet) mit dem folgenden Konsolenbefehl dem gs-cxf-base Profil hinzu:
    JBossFuse:karaf@root> profile-edit --feature cxf-http-jetty gs-cxf-base
  4. Fügen Sie jetzt das get-started-cxf Feature (das den Web-Dienst Beispielserver liefert) mit dem folgenden Konsolenbefehl dem gs-cxf-base Profil hinzu:
    JBossFuse:karaf@root> profile-edit --feature get-started-cxf gs-cxf-base

4.2.2.5. Erstellen abgeleiteter Profile

Sie erstellen zwei abgeleitete Profile, gs-cxf-01 und gs-cxf-02, die unterschiedliche TCP-Ports für den Webdienst konfigurieren. Hierzu gehen Sie wie folgt vor:
  1. Erstellen Sie das gs-cxf-01 Profil—welches sich von gs-cxf-base ableitet—indem Sie diesen Konsolenbefehl eingeben:
    JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-01
  2. Erstellen Sie das gs-cxf-02 Profil—welches sich von gs-cxf-base ableitet—indem Sie diesen Konsolenbefehl eingeben:
    JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-02
  3. Stellen Sie im gs-cxf-01 Profil die portNumber Konfigurationseigenschaft auf 8185 ein, indem Sie diesen Konsolenbefehl eingeben:
    JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8185 gs-cxf-01
  4. Stellen Sie im gs-cxf-02 Profil die portNumber Konfigurationseigenschaft auf 8186 ein, indem Sie diesen Konsolenbefehl eingeben:
    JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8186 gs-cxf-02

4.2.3. Bereitstellen der Profile

4.2.3.1. Bereitstellen der Profile an untergeordnete Container

Nachdem Sie die untergeordneten Container wie in Abschnitt 4.2.1, »Einen Fabric erstellen« und die Profile wie in Abschnitt 4.2.2, »Fabric Profile erstellen« beschrieben erstellt haben, können Sie die Profile jetzt bereitstellen. Sie tun dies wie folgt:
  1. Stellen Sie das gs-cxf-01 Profil im child Container durch Eingeben dieses Konsolenbefehls bereit:
    JBossFuse:karaf@root> fabric:container-change-profile child gs-cxf-01
  2. Stellen Sie das gs-cxf-02 Profil im child2 Container durch Eingeben dieses Konsolenbefehls bereit:
    JBossFuse:karaf@root> fabric:container-change-profile child2 gs-cxf-02

4.2.3.2. Überprüfen Sie, ob der Webdienst läuft

Um zu überprüfen, ob der Webdienst erfolgreich am child Container gestartet wurde, gehen Sie wie folgt vor:
  1. Falls der untergeordnete Container nicht bereits läuft, starten Sie diesen durch Eingabe des folgenden Befehls:
    JBossFuse:karaf@root> container-start child
  2. Warten Sie, bis der Startvorgang des child Containers abgeschlossen ist. Sie können den Provisioning-Status mit dem watch Befehl wie folgt beobachten:
    JBossFuse:karaf@root> watch container-list
  3. Stellen Sie wie folgt eine Verbindung zum untergeordneten Container her:
    JBossFuse:karaf@root> container-connect child
  4. Nach der Verbindung mit dem child Container, führen Sie eine Auflistung der aktiven CXF-Endpunkte durch, indem Sie den folgenden Befehl eingeben:
    JBossFuse:admin@child> cxf:list-endpoints 
    Name                      State      Address                                                      BusID                                   
    [HelloWorldImplPort     ] [Started ] [http://0.0.0.0:8185/cxf/HelloWorld                        ] [org.fusesource.example.cxf-basic-cxf481246446]
    [FabricResource         ] [Started ] [/fabric8                                                  ] [io.fabric8.fabric-rest-cxf1093764918  ]

4.2.4. Ein Profil aktualisieren

4.2.4.1. Atomic Container Upgrades

Normalerweise werden Änderungen an einem bereits in einem Container bereitgestellten Profil sofort wirksam. Der Grund hierfür ist, dass der Fabric Agent in dem betreffenden Container (oder Containern) die Fabric Registry in Echtzeit aktiv überwacht.
In der Praxis ist die sofortige Propagierung oftmals unerwünscht. In einem Produktionssystem etwa, sollen Änderungen in der Regel schrittweise eingeführt werden: Zum Beispiel durch anfängliches Testen der Änderungen in nur einem Container, um auf Probleme zu prüfen, ehe die Änderungen an allen Containern vorgenommen werden. Manchmal müssen auch mehrere Bearbeitungen gemeinsam durchgeführt werden, um eine Applikation auf konsistente Weise neu zu konfigurieren.

4.2.4.2. Profil Versionierung

Für die Qualitätssicherung und Konsistenz ist es in der Regel am besten, Profile atomar zu bearbeiten, wo mehrere Änderungen simultan vorgenommen werden. Um atomare Aktualisierungen zu unterstützen, implementiert Fabric Profil-Versionierung. Anfangs weist der Container auf Version 1.0 eines Profils. Wenn Sie eine neue Profilversion erstellen (zum Beispiel Version 1.1), so sind die Änderungen für den Container unsichtbar, bis Sie ein Upgrade durchführen. Nachdem Sie mit dem Bearbeiten des neuen Profils fertig sind, können Sie alle Änderungen simultan anwenden, indem Sie ein Uprade des Containers zur Verwendung der neuen Version 1.1 des Profils durchführen.

4.2.4.3. Upgrade auf ein neues Profil

Um zum Beispiel das gs-cxf-01 Profil zu bearbeiten, wenn es bereitgestellt ist und in einem Container läuft, gehen Sie wie folgt vor:
  1. Erstellen Sie eine neue Version 1.1, die die ausstehenden Änderungen enthält, indem Sie den folgenden Konsolenbefehl eingeben:
    JBossFuse:karaf@root> fabric:version-create
    Created version: 1.1 as copy of: 1.0
    Die neue Version wird mit einer Kopie aller Profile von Version 1.0 initialisiert.
  2. Verwenden Sie den fabric:profile-edit Befehl, um die portNumber von gs-cxf-01 in den Wert 8187 zu ändern, indem Sie den folgenden Befehl eingeben:
    JBossFuse:karaf@root> fabric:profile-edit -p org.fusesource.example.get.started/portNumber=8187 gs-cxf-01 1.1
    Denken Sie daran, Version 1.1 beim fabric:profile-edit Befehl festzulegen, damit die Änderungen an Version 1.1 des gs-cxf-01 Profils angewendet werden.
  3. Führen Sie ein Upgrade des child1 Containers auf Version 1.1 durch, indem Sie den folgenden Konsolenbefehl eingeben:
    JBossFuse:karaf@root> fabric:container-upgrade 1.1 child1

4.2.4.4. Zurücksetzen auf ein altes Profil

Sie können ganz einfach auf die alte Version des gs-cxf-01 Profils zurücksetzen, indem Sie den fabric:container-rollback Befehl wie folgt verwenden:
JBossFuse:karaf@root> fabric:container-rollback 1.0 child1
Red Hat logoGithubRedditYoutubeTwitter

Lernen

Testen, kaufen und verkaufen

Communitys

Über Red Hat Dokumentation

Wir helfen Red Hat Benutzern, mit unseren Produkten und Diensten innovativ zu sein und ihre Ziele zu erreichen – mit Inhalten, denen sie vertrauen können.

Mehr Inklusion in Open Source

Red Hat hat sich verpflichtet, problematische Sprache in unserem Code, unserer Dokumentation und unseren Web-Eigenschaften zu ersetzen. Weitere Einzelheiten finden Sie in Red Hat Blog.

Über Red Hat

Wir liefern gehärtete Lösungen, die es Unternehmen leichter machen, plattform- und umgebungsübergreifend zu arbeiten, vom zentralen Rechenzentrum bis zum Netzwerkrand.

© 2024 Red Hat, Inc.