2

I am new to Camel (and Hawtio) and would appreciate it if anyone can advise of a solution that is already available or which of our considered solutions would be the most appropriate/best practice.

The Research

I've looked at the load balancing and clustering Camel docs but neither of them quite fit our situation. I've also done some googling and so far the closest I've found is this discussion: How to update camel properties externally? but I am not sure whether that is the same problem.

I've also checked the Hawtio issues (https://github.com/hawtio/hawtio/labels/camel) to see if this requirement has already been asked for but I don't believe it has.

The Architecture

The current system is made up of a legacy web service deployed/duplicated within several VMs. A load balancer sits in front of these VMs and manages the requests hitting them.

Our Camel application is to be deployed to a Tomcat instance within each of these VMs in front of the legacy application and behind the load balancer. The Camel applications role is initially to control the migration from the legacy web service to a new web service. In particular it will allow for the management of various A/B testing, which will include routing requests/responses to the legacy system or the new system based on payload content etc.The Camel application will be identical on each VM.

The Problem

We want to be able to update the Camel contexts across all the VMs at runtime (and persist it) in one go rather than update each context individually.

We have had a quick look at hawtio and this looks like it will give us our runtime updating (and hopefully persistance) but it appears to be for one Camel instance at a time (we can see that you can point it at multiple jolokia agents).

Ideally we would like to update one context in Hawtio, press update and it updates all the Camel contexts running in each VM. As far as I can see (and we have just started investigating) there is no way to currently do that in Hawtio.

Proposed Solutions

Solutions that have been thought of so far include:-

  1. Put one Camel context in a cross-mounted folder which all the Camel instances point at.
  2. Put the context in a database which all the Camel instances read from.
  3. Create a simple web client (or develop the Hawtio Camel Plugin) to update multiple clients over Rest/JMX.
  4. Raise an issue request in the Hawtio Camel Plugin project and run away. :)
4

1 回答 1

0

这就是fabric8 / JBoss Fuse 可以做到的。它是一个集群就绪的集成平台。因此,您可以在集群(结构)中管理您的服务器,然后从管理控制台/shell 推出升级/降级/新安装/等等。

有一些视频展示了这一点

比如这个:

于 2015-02-02T06:41:18.567 回答