我们在Kubernetes集群中运行一个ActiveMQ Artemis集群。在Kubernetes集群中运行的所有应用程序(Java/Springboot/JMS)都利用了直接连接到代理实例的优势。
但是,来自Kubernetes Pod网络的IP地址在集群之外是不可用的。向公共网络公开代理实例是可能的--但使用不同的IP地址。这类似于将Artemis集群隐藏在NAT配置后面。当通过公共IP地址连接到代理时,客户端应用程序将接收包含IP地址(或主机名)的群集拓扑信息。在集群之外无法访问的。
是否有任何方法来处理“内部”和“外部”IP地址和/或主机名,并使群集外部应用程序的拓扑发现工作?
相关的(我不是Java开发人员):有任何方法记录JMS应用程序接收到的拓扑信息吗?
发布于 2021-12-07 12:13:24
ActiveMQ Artemis核心客户端提供useTopologyForLoadBalancing url参数,以禁用使用集群拓扑信息进行负载平衡,即
tcp://localhost:61616?useTopologyForLoadBalancing=false可以启用群集拓扑信息的日志,在TRACE文件中为org.apache.activemq.artemis.core.protocol.core记录器设置logging.properties,请参阅文档,即
loggers=...,org.apache.activemq.artemis.core.protocol.core
logger.org.apache.activemq.audit.message.level=TRACE
handler.CONSOLE.level=TRACE
handler.FILE.level=TRACE发布于 2021-12-07 12:12:29
您不能依赖外部客户端的拓扑发现。您可以做的是提供外部ips的列表,或者在集群前面有一个路由器/负载均衡器。
https://stackoverflow.com/questions/70258491
复制相似问题