We are still getting these errors on the external clients even when useTopologyForLoadBalancing is disabled and using (tcp://external-cluster-dns-1:61616,tcp://external-cluster-dns-2:61616)
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector: AMQ214033: Cannot resolve host java.net.UnknownHostException: internal-cluster-dns-1 The error is show 2 times every time the external consumer is started. The connection works until we power down cluster-dns-1 machine. Then the consumer just stops receiving messages and never reconnects to cluster-dns-2 node. When using the same consumer internally everything works as expected. -- Vilius -----Original Message----- From: Domenico Francesco Bruscino <bruscin...@gmail.com> Sent: Tuesday, January 4, 2022 8:02 PM To: users@activemq.apache.org Subject: Re: Artemis cluster topology and external clients Hi Vilius, the clients should disable topology for load balancing and use static connectors, i.e. (tcp://external-cluster-dns-1:61616,tcp://external-cluster-dns-2:61616)?ha=true&reconnectAttempts=30&useTopologyForLoadBalancing=false Regards, Domenico On Mon, 3 Jan 2022 at 10:00, Vilius Šumskas <v.sums...@advantes.tech.invalid> wrote: > Hello list, > > we are trying to use Artemis HA shared storage cluster which our SaaS > application. In addition to consumers/producers internal to SaaS > application itself, we also have thousands of external > consumers/producers which are installed on client’s premises . > > As broadcast is not possible on Google Cloud we are using static > discovery configuration with these connectors: > > <connectors> > <!-- Connector used to be announced through cluster > connections and notifications --> > <connector > name="artemis-master">tcp://internal-cluster-dns-1:61616</connector> > <connector > name="artemis-slave">tcp://internal-cluster-dns2:61616</connector> > </connectors> > > Our acceptors are also configured to use internal DNS of the hosts on > both cluster nodes: > > <acceptor > name="artemis">tcp://internal-cluster-dns-1:61616?tcpSendBufferSize=10 > 48576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;prot > ocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits= > 10 > > 00;amqpLowCredits=300;amqpDuplicateDetection=true;supportAdvisory=fals > e;suppressInternalManagementObjects=false</acceptor> > > We don’t have issues with internal consumers/producers, however when > we try to connect external consumers (via external IP), they are > trying to connect via internal DNS which is probably set in the > cluster topology packet. > > This is probably expected and by design, but my question is how do we > correctly handle such case? We obviously do not want internal clients > to be served via external IP because external traffic is expensive in > the cloud and the performance would decrease dramatically. Even with > static discovery we would like to have a possibility to expand our > cluster in the future, i.e. use the topology so that clients are configured > automatically. > > Do we need to have a split-DNS server so that external and internal > clients will see different IP addresses? Or maybe it is possible to > have the same node serving different acceptors on different ports and > different DNS names? > > Any pointers are much appreciated. > > -- > Best Regards, > > Vilius Šumskas > Advantes technologies > IT manager > +370 614 75713 > >