在dockerswarm中设置activemq集群


主题行:在docker swarm中设置activemq集群。

问题摘要:-无法在docker swarm中创建具有两个活动activemq节点的设置。所以需要你的帮助来设置。以下是我试图创建的设置的详细信息。

详细信息:尝试在docker swarm设置中创建两个节点的activemq集群(而不是AMQ Artemis(。docker版本为19.03.12以下vm用于设置我的应用程序。

  1. node infra-这个vm是群领导者;activemq";集装箱
  2. node-infra2-这个vm是另一个集群领导者;activemq";集装箱
  3. node-app-这个vm是运行我的应用程序的工作节点

root@node-infra:~#docker节点ls

ID主机名状态可用性管理器状态引擎版本

ypzb7jmys3qzyea5r4r1te5b6节点应用程序就绪活动19.03.12

byuar7z0uphd01zluj9iy0n1*节点基础设施就绪活动领导者19.03.12

tvjzzlamc29gzrsnq3xn3e58w node-infra2 Ready Active Reachable 19.03.12

在此设置中创建了以下覆盖docker网络。docker网络创建--驱动程序=覆盖--子网=192.168.1.0/24--可连接的mynetwork

使用以下命令在两个节点基础节点中启动activemq容器。docker run-d--除非停止,否则重新启动--net mynetwork--日志选择模式=非阻塞--日志选择最大缓冲区大小=4m-p 61616:61616-p 8161:8161--名称activemq rmohr/activemq:5.15.3-alpine

其余条目为默认条目,但以下条目已更改。

activemq.xml条目如下所示,用于node infra node

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="master_infra" brokerId="master_id_infra" dataDirectory="${activemq.data}" schedulerSupport="true">
<networkConnectors>
<networkConnector name="default-nc" prefetchSize="10" uri="multicast://default" />
</networkConnectors>
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"  rebalanceClusterClients="true" updateClusterClients="true" discoveryUri="multicast://default"/>
</transportConnectors>

与node-infra2类似,下面是activemq.xml条目。

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="master_infra2" brokerId="master_id_infra2" dataDirectory="${activemq.data}" schedulerSupport="true">
<networkConnectors>
<networkConnector name="default-nc" prefetchSize="10" uri="multicast://default" />
</networkConnectors>
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"  rebalanceClusterClients="true" updateClusterClients="true" discoveryUri="multicast://default"/>
</transportConnectors>

当我在nodeinfra上启动容器activemq,在node-infra2上启动activemq时。尽管我启用了多播发现,但两个容器都无法相互建立连接。日志中没有错误,但它并不意味着还有另一个启用了多播发现的activemq容器。

当我在没有容器的vm上直接进行此设置时,它可以像预期的那样工作,两个activemq实例都通过多播网络共享消息。但docker集装箱却没有。

有人能帮忙吗。如果需要复制更多信息,请告诉我。

Docker覆盖网络不支持多播。看起来您的代理依赖于多播来查找其他活动节点。

另请参阅Docker Swarm和覆盖网络的多播

最新更新