Home > Software design >  ActiveMQ Artemis: Internal and external IP addresses
ActiveMQ Artemis: Internal and external IP addresses

Time:12-08

We are running an ActiveMQ Artemis cluster in a Kubernetes cluster. All of our applications (Java/Springboot/JMS) running in the Kubernetes cluster take advantage of connecting directly to the broker instances.

However, the IP addresses from the Kubernetes Pod network are unavailable outside of the cluster. Exposing the broker instances to the public network is possible — but with different IP addresses. This is similar to hiding the Artemis cluster behind a NAT configuration. When connecting to the brokers through the public IP addresses, client applications receive cluster topology information containing IP addresses (or hostnames?) that are unreachable outside of the cluster.

Is there any way to deal with “internal” and “external” IP addresses and/or hostnames and make topology discovery work for cluster-external applications?

And, related (I am not a Java developer): Is there any way to log received topology information for JMS applications?

CodePudding user response:

ActiveMQ Artemis CORE client provides the useTopologyForLoadBalancing url parameter to disable the use of the cluster topology information for load balancing, i.e.

tcp://localhost:61616?useTopologyForLoadBalancing=false

The log of the cluster topology information can be enabled setting the TRACE for the org.apache.activemq.artemis.core.protocol.core logger in the logging.properties file, see the documentation, i.e.

loggers=...,org.apache.activemq.artemis.core.protocol.core

logger.org.apache.activemq.audit.message.level=TRACE

handler.CONSOLE.level=TRACE

handler.FILE.level=TRACE

CodePudding user response:

You can't rely on topology discovery from outside clients. What you can do is either provide a list of the external ips or have a router / load-balancer in front of your cluster.

  • Related