ActiveMQ Cluster in Docker Swarm

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

ActiveMQ Cluster in Docker Swarm

Nick Stolwijk
Hi,

We are just starting with Docker Swarm and we have 2 services that need to
talk to each other asynchronously. The messages need to be confirmed that
they have been processed. So that when a container goes down, another will
pick it up.

With these requirements I thought to use an MQ and with my experiences with
ActiveMQ in the past, that seemed the logical choice.

After using my Google Fuu for some while, I couldn't find a working example
to run an ActiveMQ cluster in Docker Swarm. I was wondering if there is
someone that got this to work and would share their experiences.

FYI, We have looked at Kubernetes instead of Docker Swarm. We found out
that Docker Swarm is easier to use and configure, although Kubernetes is
more complete. We thought it wisely to start simple and once we mastered
that and need more we can switch to Kubernetes.

With regards,

Nick Stolwijk

~~~ Try to leave this world a little better than you found it and, when
your turn comes to die, you can die happy in feeling that at any rate you
have not wasted your time but have done your best ~~~

Lord Baden-Powell
Reply | Threaded
Open this post in threaded view
|

Re: ActiveMQ Cluster in Docker Swarm

Tim Bain
Since you're looking for clustered operation, ActiveMQ Artemis sounds like
a better fit for your needs than ActiveMQ 5.x would be.

Tim

On Sep 27, 2017 3:49 PM, "Nick Stolwijk" <[hidden email]> wrote:

> Hi,
>
> We are just starting with Docker Swarm and we have 2 services that need to
> talk to each other asynchronously. The messages need to be confirmed that
> they have been processed. So that when a container goes down, another will
> pick it up.
>
> With these requirements I thought to use an MQ and with my experiences with
> ActiveMQ in the past, that seemed the logical choice.
>
> After using my Google Fuu for some while, I couldn't find a working example
> to run an ActiveMQ cluster in Docker Swarm. I was wondering if there is
> someone that got this to work and would share their experiences.
>
> FYI, We have looked at Kubernetes instead of Docker Swarm. We found out
> that Docker Swarm is easier to use and configure, although Kubernetes is
> more complete. We thought it wisely to start simple and once we mastered
> that and need more we can switch to Kubernetes.
>
> With regards,
>
> Nick Stolwijk
>
> ~~~ Try to leave this world a little better than you found it and, when
> your turn comes to die, you can die happy in feeling that at any rate you
> have not wasted your time but have done your best ~~~
>
> Lord Baden-Powell
>
Reply | Threaded
Open this post in threaded view
|

Re: ActiveMQ Cluster in Docker Swarm

Nick Stolwijk
Thanks.
I am looking now at Artemis and got it running through Rancher and Docker
Swarm.

Has anyone got information about service discovery for Artemis with Docker
Swarm?

Looking at the Kubernetes example I need to use some XSLT templates at
deployment to create the right override configuration. Is that possible
with Docker Swarm and Docker Compose?

With regards,

Nick Stolwijk

~~~ Try to leave this world a little better than you found it and, when
your turn comes to die, you can die happy in feeling that at any rate you
have not wasted your time but have done your best ~~~

Lord Baden-Powell

On Thu, Sep 28, 2017 at 4:05 AM, Tim Bain <[hidden email]> wrote:

> Since you're looking for clustered operation, ActiveMQ Artemis sounds like
> a better fit for your needs than ActiveMQ 5.x would be.
>
> Tim
>
> On Sep 27, 2017 3:49 PM, "Nick Stolwijk" <[hidden email]> wrote:
>
> > Hi,
> >
> > We are just starting with Docker Swarm and we have 2 services that need
> to
> > talk to each other asynchronously. The messages need to be confirmed that
> > they have been processed. So that when a container goes down, another
> will
> > pick it up.
> >
> > With these requirements I thought to use an MQ and with my experiences
> with
> > ActiveMQ in the past, that seemed the logical choice.
> >
> > After using my Google Fuu for some while, I couldn't find a working
> example
> > to run an ActiveMQ cluster in Docker Swarm. I was wondering if there is
> > someone that got this to work and would share their experiences.
> >
> > FYI, We have looked at Kubernetes instead of Docker Swarm. We found out
> > that Docker Swarm is easier to use and configure, although Kubernetes is
> > more complete. We thought it wisely to start simple and once we mastered
> > that and need more we can switch to Kubernetes.
> >
> > With regards,
> >
> > Nick Stolwijk
> >
> > ~~~ Try to leave this world a little better than you found it and, when
> > your turn comes to die, you can die happy in feeling that at any rate you
> > have not wasted your time but have done your best ~~~
> >
> > Lord Baden-Powell
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: ActiveMQ Cluster in Docker Swarm

Lachezar Dobrev
  Hm.
  I have had experience with running (embedded) Artemis (in
Springframework) in a Docker Swarm. Most of what I had tried failed.
The main reason was that the virtual network adapters that are
available (sans any commercial and third-party ones) do not support
broadcast/multicast so dynamic discovery fails. The ones that did
support broadcast/multicast did not work properly when the swarm was
distributed over multiple nodes.

  I can not provide any code due to the commercial nature of the application.
  I can tell you how I solved it eventually: when running inside a
docker swarm instance doing an 'nslookup tasks.service-name' (replace
service-name with the actual service name) returns the IPs of all the
(current) instances of the service. Using that information (and
excluding the 127.*.*.*) I got the IPs of the other nodes in the
service. With that information and using a dedicated
ArtemisConfigurationCustomizer (from Springframework) I declared
static connectors to all the other nodes, and built the cluster using
static connectors only.
  Notice: I do not use XML configuration for Artemis, rather I use
Springframework for configuration.

  Parse tcp://x.x.x.x:yyyy/
  ...artemis.uri.ConnectorTransportConfigurationParser.newObject(URI, ?)

  Declare static connectors:
  ...artemis.core.config.Configuration.addConnectorConfiguration(String,
TransportConfiguration)

  Declare static connectors as cluster backbone:
  ...artemis.core.config.ClusterConnectionConfiguration.setStaticConnectors(List<String>)

  Add the static cluster configuration:
  ...artemis.core.config.Configuration.addClusterConfiguration(ClusterConnectionConfiguration)

  That's admittedly a lot of work, in many places: docker for set-up,
bash for lookup, Springframework for configuration, Artemis for
configuration. I believe it *could* be done more concisely, but I did
not see any interest in continuing that (and I still don't).


2017-09-28 11:27 GMT+03:00 Nick Stolwijk <[hidden email]>:

> Thanks.
> I am looking now at Artemis and got it running through Rancher and Docker
> Swarm.
>
> Has anyone got information about service discovery for Artemis with Docker
> Swarm?
>
> Looking at the Kubernetes example I need to use some XSLT templates at
> deployment to create the right override configuration. Is that possible
> with Docker Swarm and Docker Compose?
>
> With regards,
>
> Nick Stolwijk
>
> ~~~ Try to leave this world a little better than you found it and, when
> your turn comes to die, you can die happy in feeling that at any rate you
> have not wasted your time but have done your best ~~~
>
> Lord Baden-Powell
>
> On Thu, Sep 28, 2017 at 4:05 AM, Tim Bain <[hidden email]> wrote:
>
>> Since you're looking for clustered operation, ActiveMQ Artemis sounds like
>> a better fit for your needs than ActiveMQ 5.x would be.
>>
>> Tim
>>
>> On Sep 27, 2017 3:49 PM, "Nick Stolwijk" <[hidden email]> wrote:
>>
>> > Hi,
>> >
>> > We are just starting with Docker Swarm and we have 2 services that need
>> to
>> > talk to each other asynchronously. The messages need to be confirmed that
>> > they have been processed. So that when a container goes down, another
>> will
>> > pick it up.
>> >
>> > With these requirements I thought to use an MQ and with my experiences
>> with
>> > ActiveMQ in the past, that seemed the logical choice.
>> >
>> > After using my Google Fuu for some while, I couldn't find a working
>> example
>> > to run an ActiveMQ cluster in Docker Swarm. I was wondering if there is
>> > someone that got this to work and would share their experiences.
>> >
>> > FYI, We have looked at Kubernetes instead of Docker Swarm. We found out
>> > that Docker Swarm is easier to use and configure, although Kubernetes is
>> > more complete. We thought it wisely to start simple and once we mastered
>> > that and need more we can switch to Kubernetes.
>> >
>> > With regards,
>> >
>> > Nick Stolwijk
>> >
>> > ~~~ Try to leave this world a little better than you found it and, when
>> > your turn comes to die, you can die happy in feeling that at any rate you
>> > have not wasted your time but have done your best ~~~
>> >
>> > Lord Baden-Powell
>> >
>>