簡體   English   中英

在 docker swarm 中設置 activemq 集群

[英]setup activemq cluster in docker swarm

主題行:在 docker swarm 中設置 activemq 集群。

問題摘要: - 無法在 docker 群中創建具有兩個主動-主動 activemq 節點的設置。 所以需要你的幫助來設置它。 以下是我正在嘗試創建的設置的詳細信息。

詳細信息:嘗試在 docker 集群設置中創建兩個節點的 activemq 集群(不是 AMQ Artemis)。 docker 版本是 19.03.12 以下用於設置我的應用程序的 vms。

  1. node-infra - 這個 vm 是 swarm leader 並且有“activemq”容器
  2. node-infra2 - 這個 vm 是另一個 swarm 領導者,並且有“activemq”容器。
  3. node-app - 這個 vm 是運行我的應用程序的工作節點。

root@node-infra:~# docker 節點 ls

ID 主機名狀態可用性管理器狀態引擎版本

ypzb7jmys3qzyea5r4r1te5b6 節點應用就緒活動 19.03.12

byuar7z0uphd01zlujy9iy0n1 * node-infra Ready Active Leader 19.03.12

tvjzzlamc29gzrsnq3xn3e58w node-infra2 Ready Active Reachable 19.03.12

在此設置中創建以下覆蓋 docker 網絡。 docker 網絡創建 --driver=overlay --subnet=192.168.1.0/24 --attachable mynetwork

使用以下命令在兩個 node-infra 節點中啟動 activemq 容器。 docker run -d --restart unless-stopped --net mynetwork --log-opt mode=non-blocking --log-opt max-buffer-size=4m -p 61616:61616 -p 8161:8161 --name activemq rmohr/activemq:5.15.3-alpine

條目的 rest 是默認的,但以下條目已更改。

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&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>

當我在 node-infra 上啟動容器 activemq 和在 node-infra2 上啟動 activemq 時。 即使我啟用了多播發現,兩個容器都無法相互建立連接。 日志中沒有錯誤,但感覺不到還有另一個啟用了多播發現的 activemq 容器。

當我直接在沒有容器的 vm 上進行此設置時,它按預期工作,兩個 activemq 實例通過多播網絡共享消息。 但 docker 容器沒有發生。

有人可以幫忙嗎? 讓我知道是否需要更多信息才能重現。

Docker 覆蓋網絡不支持組播。 看起來您的代理依賴多播來查找其他活動節點。

另請參見使用 Docker 群和覆蓋網絡的組播

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM