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. Deploying to a Fabric
4.2.1. Create a Fabric リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Overview リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Figure 4.2 shows an overview of a sample fabric that you will create. The Fabric Ensemble consists of just one Fabric Server (making this fabric suitable only for experimental use) and two managed child containers.
Figure 4.2. A Sample Fabric with Child Containers
Fabric server リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
A Fabric Server (or servers) forms the backbone of a fabric. It hosts a registry service, which maintains a replicable database of information about the state of the fabric. Initially, when you create the fabric, there is just a single Fabric Server.
Child containers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Creating one or more child containers is the simplest way to extend a fabric. As shown in Figure 4.2, “A Sample Fabric with Child Containers”, the first container in the fabric is a root container, and both child containers are descended from it.
Each child container is an independent Red Hat JBoss Fuse container instance, which runs in its own JVM instance. The data files for the child containers are stored under the
InstallDir/instances
directory.
Make Quickstart Examples Available リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
The default behavior is that profiles for quickstart examples are not available in a new fabric. To create a fabric in which you can run the quickstart examples, edit the
$FUSE_HOME/fabric/io.fabric8.import.profiles.properties
file by uncommenting the line that starts with the following:
# importProfileURLs =
If you create a fabric without doing this and you want to run the quickstart examples, follow these steps to make them available:
- Edit the
$FUSE_HOME/quickstarts/pom.xml
file to add a fabric I/O plugin, for example:<plugin> <groupId>io.fabric8</groupId> <artifactId>fabric8-maven-plugin</artifactId> <version>1.2.0.redhat-630187</version> </plugin>
<plugin> <groupId>io.fabric8</groupId> <artifactId>fabric8-maven-plugin</artifactId> <version>1.2.0.redhat-630187</version> </plugin>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - In the
$FUSE_HOME/quickstarts
directory, change to the directory for the quickstart example you want to run, for example:cd beginner
- In that directory, execute the following command:
mvn fabric8:deploy
You would need to run this command in each directory that contains a quickstart example that you want to run.
Steps to create the fabric リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
To create the simple fabric shown in Figure 4.2, “A Sample Fabric with Child Containers”, follow these steps:
- (Optional) Customise the name of the root container by editing the
InstallDir/etc/system.properties
file and specifying a different name for this property:karaf.name=root
karaf.name=root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteFor the first container in your fabric, this step is optional. But at some later stage, if you want to join a root container to the fabric, you must customise the new container's name to prevent it from clashing with any existing root containers in the fabric. - To create the first fabric container, which acts as the seed for the new fabric, enter this console command:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The current container, namedroot
by default, becomes a Fabric Server with a registry service installed. Initially, this is the only container in the fabric. The--new-user
,--new-user-password
, and--new-user-role
options specify the credentials for a new administrator user. The Zookeeper password is used to protect sensitive data in the Fabric registry service (all of the nodes under/fabric
).NoteMost of the time, you are not prompted to enter the Zookeeper password when accessing the registry service, because it is cached in the current session. When you join a container to a fabric, however, you must provide the fabric's Zookeeper password.NoteIt is recommended that you assign a static IP address to the machine that hosts a Fabric server and that you specify this port explicitly using the--resolver
and--manual-ip
options when you create the fabric. For simple tests and demonstrations, you can specify the loopback address,127.0.0.1
(as here). For more details, see chapter "Creating a New Fabric" in "Fabric Guide". - Create two child containers. Assuming that your root container is named
root
, enter this console command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you are prompted to enter a JMX username and password, enter one of the username/password combinations that you defined in step 2. - Invoke the
fabric:container-list
command to see a list of all containers in your new fabric. You should see a listing something like this:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Shutting down the containers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Because the child containers run in their own JVMs, they do not automatically stop when you shut down the root container. To shut down a container and its children, first stop its children using the
fabric:container-stop
command. For example, to shut down the current fabric completely, enter these console commands:
JBossFuse:karaf@root> fabric:container-stop child1 JBossFuse:karaf@root> fabric:container-stop child2 JBossFuse:karaf@root> shutdown
JBossFuse:karaf@root> fabric:container-stop child1
JBossFuse:karaf@root> fabric:container-stop child2
JBossFuse:karaf@root> shutdown
After you restart the root container, you must explicitly restart the children using the
fabric:container-start
console command.
4.2.2. Create Fabric Profiles リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Overview リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
A profile is the basic unit of deployment in a fabric. You can deploy one or more profiles to a container, and the content of those deployed profiles determines what is installed in the container.
Contents of a profile リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
A profile encapsulates the following kinds of information:
- The URL locations of features repositories
- A list of features to install
- A list of bundles to install (or, more generally, any suitable JAR package—including OSGi bundles, Fuse Application Bundles, and WAR files)
- A collection of configuration settings for the OSGi Config Admin service
- Java system properties that affect the Apache Karaf container (analogous to editing
etc/config.properties
) - Java system properties that affect installed bundles (analogous to editing
etc/system.properties
)
Base profile リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Profiles support inheritance. This can be useful in cases where you want to deploy a cluster of similar servers—for example, where the servers differ only in the choice of TCP port number. For this, you would typically define a base profile, which includes all of the deployment data that the servers have in common. Each individual server profile would inherit from the common base profile, but add configuration settings specific to its server instance.
Create a base profile リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
To create the
gs-cxf-base
profile, follow these steps:
- Create the
gs-cxf-base
profile by entering this console command:JBossFuse:karaf@root> fabric:profile-create --parent feature-cxf gs-cxf-base
JBossFuse:karaf@root> fabric:profile-create --parent feature-cxf gs-cxf-base
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
get-started
features repository (see Define a Feature for the Application) to thegs-cxf-base
profile by entering this console command:JBossFuse:karaf@root> profile-edit -r mvn:org.fusesource.example/get-started/1.0-SNAPSHOT/xml/features gs-cxf-base
JBossFuse:karaf@root> profile-edit -r mvn:org.fusesource.example/get-started/1.0-SNAPSHOT/xml/features gs-cxf-base
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
cxf-http-jetty
feature (which provides support for the HTTP Jetty endpoint) to thegs-cxf-base
profile. Enter the following console command:JBossFuse:karaf@root> profile-edit --feature cxf-http-jetty gs-cxf-base
JBossFuse:karaf@root> profile-edit --feature cxf-http-jetty gs-cxf-base
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
get-started-cxf
feature (which provides the Web service example server) to thegs-cxf-base
profile. Enter the following console command:JBossFuse:karaf@root> profile-edit --feature get-started-cxf gs-cxf-base
JBossFuse:karaf@root> profile-edit --feature get-started-cxf gs-cxf-base
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Add the
cxf-commands
feature (which makes the CXF console commands available) to thegs-cxf-base
profile. Enter the following console command:JBossFuse:karaf@root> profile-edit --feature cxf-commands gs-cxf-base
JBossFuse:karaf@root> profile-edit --feature cxf-commands gs-cxf-base
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Create the derived profiles リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
You create two derived profiles,
gs-cxf-01
and gs-cxf-02
, which configure different TCP ports for the Web service. To do so, follow these steps:
- Create the
gs-cxf-01
profile—which derives fromgs-cxf-base
—by entering this console command:JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-01
JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create the
gs-cxf-02
profile—which derives fromgs-cxf-base
—by entering this console command:JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-02
JBossFuse:karaf@root> profile-create --parent gs-cxf-base gs-cxf-02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - In the
gs-cxf-01
profile, set theportNumber
configuration property to 8185, by entering this console command:JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8185 gs-cxf-01
JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8185 gs-cxf-01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - In the
gs-cxf-02
profile, set theportNumber
configuration property to 8186, by entering this console command:JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8186 gs-cxf-02
JBossFuse:karaf@root> profile-edit -p org.fusesource.example.get.started/portNumber=8186 gs-cxf-02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3. Deploy the Profiles リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Deploy profiles to the child containers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Having created the child containers, as described in Section 4.2.1, “Create a Fabric”, and the profiles, as described in Section 4.2.2, “Create Fabric Profiles”, you can now deploy the profiles. To do so, follow these steps:
- Deploy the
gs-cxf-01
profile into thechild1
container by entering this console command:JBossFuse:karaf@root> fabric:container-change-profile child1 gs-cxf-01
JBossFuse:karaf@root> fabric:container-change-profile child1 gs-cxf-01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Deploy the
gs-cxf-02
profile into thechild2
container by entering this console command:JBossFuse:karaf@root> fabric:container-change-profile child2 gs-cxf-02
JBossFuse:karaf@root> fabric:container-change-profile child2 gs-cxf-02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Check that the Web service is running リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
To check that the Web service has successfully launched on the
child
container, perform the following steps:
- If the child container is not already running, start it by entering the following command:
JBossFuse:karaf@root> container-start child1
JBossFuse:karaf@root> container-start child1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Wait until the
child1
container has finished starting up. You can observe the provisioning status using thewatch
command, as follows:JBossFuse:karaf@root> watch container-list
JBossFuse:karaf@root> watch container-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Connect to the child container, as follows:
JBossFuse:karaf@root> container-connect child1
JBossFuse:karaf@root> container-connect child1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - After connecting to the
child
container, list the active CXF endpoints, by entering the following command:JBossFuse:admin@child1> cxf:list-endpoints Name State Address BusID [HelloWorldImplPort ] [Started ] [http://0.0.0.0:8185/cxf/HelloWorld ] [org.fusesource.example.cxf-basic-cxf481246446]
JBossFuse:admin@child1> cxf:list-endpoints Name State Address BusID [HelloWorldImplPort ] [Started ] [http://0.0.0.0:8185/cxf/HelloWorld ] [org.fusesource.example.cxf-basic-cxf481246446]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4. Update a Profile リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Upgrading containers atomically リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Normally, when you edit a profile that is already deployed in a container, the modification takes effect immediately. This is so because the Fabric Agent in the affected container (or containers) actively monitors the fabric registry in real time.
In practice, however, immediate propagation of profile modifications is often undesirable. In a production system, you typically want to roll out changes incrementally: for example, initially trying out the change on just one container to check for problems, before you make changes globally to all containers. Moreover, sometimes several edits must be made together to reconfigure an application in a consistent way.
Profile versioning リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
For quality assurance and consistency, it is typically best to modify profiles atomically, where several modifications are applied simultaneously. To support atomic updates, fabric implements profile versioning. Initially, the container points at version 1.0 of a profile. When you create a new profile version (for example, version 1.1), the changes are invisible to the container until you upgrade it. After you are finished editing the new profile, you can apply all of the modifications simultaneously by upgrading the container to use the new version 1.1 of the profile.
Upgrade to a new profile リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
For example, to modify the
gs-cxf-01
profile, when it is deployed and running in a container, follow the recommended procedure:
- Create a new version, 1.1, to hold the pending changes by entering this console command:
JBossFuse:karaf@root> fabric:version-create Created version: 1.1 as copy of: 1.0
JBossFuse:karaf@root> fabric:version-create Created version: 1.1 as copy of: 1.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The new version is initialised with a copy of all of the profiles from version 1.0. - Use the
fabric:profile-edit
command to change theportNumber
ofgs-cxf-01
to the value 8187 by entering this console command:JBossFuse:karaf@root> fabric:profile-edit -p org.fusesource.example.get.started/portNumber=8187 gs-cxf-01 1.1
JBossFuse:karaf@root> fabric:profile-edit -p org.fusesource.example.get.started/portNumber=8187 gs-cxf-01 1.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Remember to specify version1.1
to thefabric:profile-edit
command, so that the modifications are applied to version 1.1 of thegs-cxf-01
profile. - Upgrade the
child1
container to version 1.1 by entering this console command:JBossFuse:karaf@root> fabric:container-upgrade 1.1 child1
JBossFuse:karaf@root> fabric:container-upgrade 1.1 child1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Roll back to an old profile リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
You can easily roll back to the old version of the
gs-cxf-01
profile, using the fabric:container-rollback
command like this:
JBossFuse:karaf@root> fabric:container-rollback 1.0 child1
JBossFuse:karaf@root> fabric:container-rollback 1.0 child1