Deployment with Karaf and ACE
Download
Report
Transcript Deployment with Karaf and ACE
Deployment with Karaf and ACE
Jean-Baptiste Onofré, Talend
[email protected], 2011-11-11
Summary
Background
Introduction to Karaf
Introduction to ACE
ACE and Karaf
•
•
Use case 1: standalone ACE server and Karaf with
ACE agent (demo)
Use case 2: Karaf hosting ACE server
Roadmap
Q&A
My Background
Jean-Baptiste Onofré
Software Architect at Talend
ASF Member
PMC for Karaf, ServiceMix
Committer for ACE, Camel, Kalumet
Introduction to Karaf
Lightweight complete OSGi container,
abstracting the OSGi framework (Felix or
Equinox)
Comes from ServiceMix Kernel
High adoption (Geronimo, ServiceMix,
…)
Karaf overview
Enterprise (JPA, JNDI, JTA)
WebContainer (Pax Web/Jetty)
Instances
Remote &
Management
ConfigAdmin
Shell Console
Logging
Deployers
Security/JAAS WebConsole
Features
Aries Blueprint / Spring
OSGi framework (Apache Felix / Eclipse Equinox)
JVM
Karaf directory structure
/bin: startup scripts
/etc: configuration files (ConfigAdmin)
/data: working directory
/data/cache: OSGi framework bundle cache
/data/generated-bundles: temporary folder used by the deployer
/data/log: log files
/deploy: hot deploy directory
/instances: directory containing child instances
/lib: contains the bootstrap libraries
/lib/ext: directory for JRE extensions
/lib/endorsed: directory for endorsed libraries
/system: OSGi bundles repository (OBR), laid out as a Maven 2 repository
Karaf start/stop
Starting Karaf with the shell:
> ./bin/karaf
Starting Karaf without shell:
> ./bin/karaf server
Starting Karaf in background:
> ./bin/start
Stopping Karaf:
karaf@root> osgi:shutdown
> ./bin/stop
Karaf shell console
Complete Unix-like shell environment: completion,
grep, more, find, etc
Remote using SSH (Karaf uses Mina SSHd)
Contextual help on commands:
karaf@root> <tab>Display all 182 possibilities? (y or n)
*:help
addurl
admin:change-opts
admin:change-rmi-registry-port admin:change-ssh-port
admin:connect
admin:create
admin:destroy
admin:list
admin:rename
admin:start
admin:stop
bundle-level
cancel
cat
…
karaf@root> features:list --help
Karaf Logging
Powerful logging system powered by OPS4J PAX
Logging
Supports several logging API: Apache Commons
Logging, SLF4J, Apache Log4j, Java Util Logging
Karaf provides commands: log:display, log:displayexception, log:set
Use of etc/org.ops4j.pax.logging.cfg by default
(changes are dynamic)
Karaf child instances
Karaf supports multiple child instances.
A child instance is a copy that you can launch separately and
deploy applications into. An instance is not a full copy of Karaf,
but only a copy of the configuration files and data folder which
contains all the runtime information, logs and temporary files
Instances are managed by the « admin » commands:
admin:list, admin:create, admin:start, ...
The bin/admin script allows you to manipulate child instances
outside a Karaf shell environment
Karaf configuration
Karaf combines ConfigAdmin and FileInstance to be able
to propagate changes on the configuration files to the
bundles
Files in /etc folder are used to set the startup
configuration.
For dynamic configuration, Karaf provides commands to
administer the OSGi configuration service: config:edit,
config:proplist, etc
Support of commit and rollback: config:update,
config:cancel
Provides an MBean dedicated for configuration.
Karaf deployers
Karaf monitor the deploy folder by
default (FileInstall) and delegates the
polled files to the deployers
A deployer is simply a bundle, easy to
create
Karaf provides several deployer: Spring,
Feature, Kar, War, Wrap
Karaf features
Karaf provisioning is made by Features
A Karaf feature is a collection of bundles, configuration,
and others features forming an application
Features are described in a XML features descriptor
<features xmlns='http://karaf.apache.org/xmlns/features/v1.0.0'>
<feature name='my' version='1.0'>
<feature>other</feature>
<bundle>mvn:...bundleA</bundle>
<bundle>http:...bundleB</bundle>
<config></config>
<configfile></configfile>
</feature>
</features>
Introduction to ACE
Software distribution framework
providing
Handle dependency management
Deployment management
Log reporting
ACE topology
ACE server including repository, distribution, etc
A set of target system where the ACE agent is running
A client (browser or REST) to handle the ACE server console
ACE logical grouping
ACE feature is like a Karaf feature but
only handling bundles: it's a group of
bundles
ACE distribution is a group of features
ACE target is where the ACE agent is
running: it's where distributions will be
deployed
ACE and Karaf
ACE provides Karaf features
ACE agent easily deployable in Karaf
using the ace-agent feature
ACE also provides all Karaf features to
deploy the ACE server in Karaf
Use case 1
Standalone ACE server:
unzip org.apache.ace.target.devserver*.zip
cd ace-devserver
./run.sh
Install ACE agent in Karaf:
karaf@root> admin:create testing
karaf@root> admin:set-opts testing “-Didentification=testing”
karaf@root> admin:connect testing
karaf@testing> features:addurl mvn:org.apache.ace.karaf/apache-ace/0.8.1-incubatorSNAPSHOT/xml/features
karaf@testing> features:install ace-agent
Started management agent.
Target ID : testing
Server
: http://localhost:8080
Sync interval: 2000 ms
Unaffected bundles will not be stopped during deployment.
Use case 2
ACE server distribution powered by
Karaf:
root@karaf> features:addurl mvn:org.apache.ace.karaf/apache-ace/0.8.1-incubatorSNAPSHOT/xml/features
root@karaf> features:install ace-server
Will be in the ACE provided distributions
Roadmap
Extend/enhance ACE feature/distribution to be able
to directly support Karaf features
Leverage Karaf sub-projects in ACE: Karaf Cellar
clustering, Karaf Cave OBR
Embed ACE in Apache Kalumet to provide a complete
deployment platform (OSGi, J2EE, OS, etc)
Sources
Links
•
•
•
http://karaf.apache.org
http://incubator.apache.org/ace
http://Incubator.apache.org/kalumet
Contact
Jean-Baptiste (JB) Onofré
•
•
•
[email protected]
[email protected]
http://blog.nanthrax.net
Q&A