如何解决在docker swarm
主题行:在docker swarm中设置activemq集群。
问题摘要:-无法在docker swarm中创建具有两个active-active activemq节点的设置。因此需要您的帮助进行设置。以下是我要创建的设置的详细信息。
详细信息: 尝试在docker swarm设置中创建两个节点的activemq集群(不是AMQ Artemis)。 码头工人版本是19.03.12 以下用于设置我的应用程序的虚拟机。
- node-infra-此虚拟机是群集领导者,具有“ activemq”容器
- node-infra2-此虚拟机是另一个集群领导者,具有“ activemq”容器。
- node-app-该虚拟机是运行我的应用程序的工作程序节点。
root @ node-infra:〜#docker节点ls
ID主机名状态可用性管理器状态引擎版本
ypzb7jmys3qzyea5r4r1te5b6节点应用就绪就绪12.03.12
byuar7z0uphd01zlujy9iy0n1 *节点下就绪Active leader 19.03.12
tvjzzlamc29gzrsnq3xn3e58w node-infra2 Ready Active Reachable 19.03.12
在此设置中创建了以下叠加docker网络。 docker network create --driver = overlay --subnet = 192.168.1.0 / 24 --attachable mynetwork
使用以下命令在两个节点基础节点中启动activemq容器。 docker run -d-重新启动,除非停止--net mynetwork --log-opt模式=非阻塞--log-opt max-buffer-size = 4m -p 61616:61616 -p 8161:8161 --name activemq rmohr / activemq:5.15.3-alpine
其余条目均为默认设置,但以下条目已更改。
activemq.xml条目如下所示,用于节点下节点
<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&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&wireFormat.maxFrameSize=104857600" rebalanceClusterClients="true" updateClusterClients="true" discoveryUri="multicast://default"/>
</transportConnectors>
当我在node-infra上启动容器activemq并在node-infra2上启动activemq时。 尽管我已启用多播发现,但是两个容器都无法彼此建立连接。日志中没有错误,但没有感觉到存在另一个启用了多播发现的activemq容器。
当我直接在不带容器的vm上进行此设置时,它可以按预期工作,两个activemq实例共享通过多播网络发送的消息。但不会在Docker容器中发生。
有人可以帮忙吗?让我知道是否需要更多信息才能重现。
解决方法
Docker覆盖网络不支持多播。看来您的经纪人依赖组播来查找其他活动节点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。