Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I cluster ServiceMix?

I am looking for some initial pointers on how to cluster a ServiceMix solution. Basically what I need is:

  • having 2 (or more) ServiceMix instances serving my routing needs and sharing the load
  • if one instance fails, other(s) continue to serve
  • if the failed one is brought back to life, it joins the party

Searching for information confuses me since

  • some references (eg. http://trenaman.blogspot.fi/2010/04/four-things-you-need-to-know-about-new.html) talk about "JBI cluster engine". I don't want to use JBI. Support for it is deprecated. Is there a separate "Non-JBI cluster engine" or what is going on...?
  • I see a lot of mentions about "DOSGi". Do I need to worry my simple head with all that if I want to achieve clustered ServiceMix?

My solution will probably have a few bundles that communicate with each other using JMS queues. Should I in that case just have 2 independent ServiceMix instances (who do not know of each other). Wouldn't that be the simplest option? I see some support for a failover configuration (http://servicemix.apache.org/docs/4.5.x/users-guide/failover.html) but what benefits would that really give (am I missing something)? Also this failover configuration does not help with load balancing since just one instance is serving requests.

like image 438
Janne Mattila Avatar asked Jun 03 '13 11:06

Janne Mattila


2 Answers

From what it sounds like, all you need is two ServiceMix instances running side by side with no failover specifically configured. Failover is there if you want a cluster of instances, only one of which services requests.

Ignore the JBI stuff - it's legacy. Distributed OSGi is a red herring in the use case that you have described.

As boday suggests, Cellar is used to manage the installation of your bundles uniformly across a logical group of Karaf/ServiceMix instances, so you can manage them from one location as opposed to installing new versions on each instance by hand.

like image 150
Jakub Korab Avatar answered Oct 22 '22 02:10

Jakub Korab


Fabric8 (http://fabric8.io/) can do Karaf/ServiceMix clustering and much more out of the box. It also have additional clustered Camel components such as the master and fabric endpoints

  • http://fabric8.io/gitbook/camelEndpointMaster.html
  • http://fabric8.io/gitbook/camelEndpointFabric.html

There is a clustered Camel example, that demonstrates that

  • https://github.com/fabric8io/fabric8/tree/master/fabric/fabric8-karaf/src/main/resources/distro/fabric/import/fabric/profiles/example/camel/cluster

The principle is illustrated in the image below:

enter image description here

like image 21
Claus Ibsen Avatar answered Oct 22 '22 01:10

Claus Ibsen