ActiveMQ Artemis:内部和外部 IP 地址

ActiveMQ Artemis: Internal and external IP addresses

我们是 运行 Kubernetes 集群中的 ActiveMQ Artemis 集群。我们在 Kubernetes 集群中的所有应用程序 (Java/Springboot/JMS) 运行 都利用了直接连接到代理实例的优势。

但是,来自 Kubernetes Pod 网络的 IP 地址在集群外部不可用。将代理实例暴露给 public 网络是可能的——但使用不同的 IP 地址。这类似于将 Artemis 集群隐藏在 NAT 配置后面。当通过 public IP 地址连接到代理时,客户端应用程序会收到集群拓扑信息,其中包含在集群外部无法访问的 IP 地址(或主机名?)。

有没有办法处理“内部”和“外部”IP 地址and/or 主机名并使拓扑发现适用于集群外部应用程序?

并且,相关的(我不是 Java 开发人员):有什么方法可以记录收到的 JMS 应用程序的拓扑信息吗?

您不能依赖外部客户端的拓扑发现。您可以做的是提供外部 ips 列表或在集群前面安装路由器/负载均衡器。

ActiveMQ Artemis CORE客户端提供useTopologyForLoadBalancing url参数禁止使用集群拓扑信息进行负载均衡,即

tcp://localhost:61616?useTopologyForLoadBalancing=false

logging.properties文件中为org.apache.activemq.artemis.core.protocol.core记录器设置TRACE可以启用集群拓扑信息的日志,见documentation,即

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

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

handler.CONSOLE.level=TRACE

handler.FILE.level=TRACE