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
我们是 运行 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