Search code examples
apache-camelload-balancinghigh-availabilityfailoverapache-servicemix

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

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.


Solution

  • 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.