[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [artemis] Dynamically add cluster connection using JMX/Jolokia?


As Justin says there is currently no way to add a cluster connection
dynamically.  However, I also have a use case where it would be nice to be
able to dynamically add or destroy a cluster connection.  I will probably
take a look when I get some time to see if there's a way that the behavior
can be supported but it probably won't be easy to do with the current
design.

On Thu, Jun 7, 2018 at 10:09 AM Justin Bertram <jbertram@xxxxxxxxxx> wrote:

> There is no programmatic way to add a cluster-connection.  The
> cluster-connection is such a fundamental piece of the broker's
> configuration it really has to be there when the broker starts.  Also,
> there is no mechanism to persist a cluster-connection configuration other
> than in the XML (unlike addresses and queues which can be created at
> runtime and are persisted, if necessary, in the bindings journal).
>
> As for the actual clustering mechanism, have you tried using a JGroups
> configuration with KUBE_PING [1]?
>
>
> Justin
>
> [1] https://github.com/jgroups-extras/jgroups-kubernetes
>
> On Thu, Jun 7, 2018 at 1:53 AM, Victor <victor.romero@xxxxxxxxx> wrote:
>
> > Hi all,
> >
> > I'm having some fun trying to figure out the ideal way to deploy an
> > ActiveMQ Artemis cluster in Kubernetes.
> >
> > I started by creating a Helm Chart (think of it as a deb/rpm package for
> > Kubernetes) where I can just install a Symmetric cluster of 8 nodes with
> > the following commands:
> >
> >   helm repo add activemq-artemis https://vromero.github.io/
> > activemq-artemis-helm/
> >   helm install vromero/activemq-artemis --set replicas=8
> >
> > It works pretty well but I'm creating static-connectors for the cluster
> > connection at the install time. Meaning that if later the user wants to
> > scale up or down his cluster it won't work.
> >
> > I have been exploring these two ideas to overcome it:
> >
> > - ActiveMQ Artemis Plugin to enable auto-discover by connecting to the
> > Artemis to the Kubernetes api
> > - To have an external minimal agent written in Go (given that it has the
> > best client library for k8s and it has a very small binary / memory
> > footprint) that connects to k8s and let know Artemis from the outside
> which
> > other nodes are available for the cluster.
> >
> > After a quick look at the first option, the one of the plugin, I decided
> to
> > keep it as plan B given that a hypothetically big cluster might end up
> > pounding too hard the Kubernetes API and especially given that the
> > Kubernetes client would bring a not too big but neither too small number
> of
> > transitive dependencies to Artemis.
> >
> > So off I went with the external agent to now realize that at least at a
> > quick glance at the JMX/Jolokia API I see no method to add new
> > cluster-connections. So my question would be:
> >
> > Is there any way to add externally cluster-connections to Artemis?
> >
> > I'm hoping that this belongs to the dev list as it is kind-of advanced if
> > it actually belongs to user I apologise
> >
> > Thanks
> >
>