Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.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

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:
- (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
AnmerkungBeim 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. - 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 Namenroot
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
).AnmerkungSie 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.AnmerkungEs 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-Adresse127.0.0.1
festlegen (wie hier). Weitere Informationen finden Sie im Kapitel »Einen neuen Fabric erstellen« im »Fabric Handbuch«. - 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. - 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:
- Erstellen Sie das
gs-cxf-base
Profil durch Eingabe des Konsolenbefehls:JBossFuse:karaf@root> fabric:profile-create --parent feature-cxf gs-cxf-base
- Fügen Sie das
get-started
Features Repository (siehe Ein Feature für die Applikation definieren) mit dem folgenden Konsolenbefehl demgs-cxf-base
Profil hinzu:JBossFuse:karaf@root> profile-edit -r mvn:org.fusesource.example/get-started/1.0-SNAPSHOT/xml/features gs-cxf-base
- Fügen Sie jetzt das
cxf-http-jetty
Feature (das Support für den HTTP-Jetty-Endpunkt bietet) mit dem folgenden Konsolenbefehl demgs-cxf-base
Profil hinzu:JBossFuse:karaf@root> profile-edit --feature cxf-http-jetty gs-cxf-base
- Fügen Sie jetzt das
get-started-cxf
Feature (das den Web-Dienst Beispielserver liefert) mit dem folgenden Konsolenbefehl demgs-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:
- Erstellen Sie das
gs-cxf-01
Profil—welches sich vongs-cxf-base
ableitet—indem Sie diesen Konsolenbefehl eingeben:JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-01
- Erstellen Sie das
gs-cxf-02
Profil—welches sich vongs-cxf-base
ableitet—indem Sie diesen Konsolenbefehl eingeben:JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-02
- Stellen Sie im
gs-cxf-01
Profil dieportNumber
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
- Stellen Sie im
gs-cxf-02
Profil dieportNumber
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:
- Stellen Sie das
gs-cxf-01
Profil imchild
Container durch Eingeben dieses Konsolenbefehls bereit:JBossFuse:karaf@root> fabric:container-change-profile child gs-cxf-01
- Stellen Sie das
gs-cxf-02
Profil imchild2
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:
- Falls der untergeordnete Container nicht bereits läuft, starten Sie diesen durch Eingabe des folgenden Befehls:
JBossFuse:karaf@root> container-start child
- Warten Sie, bis der Startvorgang des
child
Containers abgeschlossen ist. Sie können den Provisioning-Status mit demwatch
Befehl wie folgt beobachten:JBossFuse:karaf@root> watch container-list
- Stellen Sie wie folgt eine Verbindung zum untergeordneten Container her:
JBossFuse:karaf@root> container-connect child
- 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:
- 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. - Verwenden Sie den
fabric:profile-edit
Befehl, um dieportNumber
vongs-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, Version1.1
beimfabric:profile-edit
Befehl festzulegen, damit die Änderungen an Version 1.1 desgs-cxf-01
Profils angewendet werden. - 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