我正试图在Docker环境中设置由2个ActiveMQ Artemis代理组成的简单集群。
堆栈配置
version: "3.7"
services:
broker_1:
image: broker-local
build:
context: ./activemq
dockerfile: Dockerfile-centos
ports:
- "8161:8161" # Embedded web server
- "61616:61616" # Main Artemis acceptor
networks:
artemis-cluster-network:
environment:
EXTRA_ARGS: "--http-host 0.0.0.0 --relax-jolokia"
ANONYMOUS_LOGIN: "true"
configs:
- source: broker_1_config
target: /run/config/broker.xml
broker_2:
image: broker-local
depends_on:
- "broker_1"
build:
context: ./activemq
dockerfile: Dockerfile-centos
ports:
- "8162:8161" # Embedded web server
- "61617:61617" # Main Artemis acceptor
networks:
artemis-cluster-network:
environment:
EXTRA_ARGS: "--http-host 0.0.0.0 --relax-jolokia"
configs:
- source: broker_2_config
target: /run/config/broker.xml
networks:
artemis-cluster-network:
driver: overlay
attachable: true
configs:
broker_1_config:
file: ./broker_1.xml
broker_2_config:
file: ./broker_2.xmlBroker_1配置
<configuration xmlns="urn:activemq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd">
<core xmlns="urn:activemq:core">
<name>broker_1</name>
<bindings-directory>./data/bindings</bindings-directory>
<journal-directory>./data/journal</journal-directory>
<large-messages-directory>./data/largemessages</large-messages-directory>
<paging-directory>./data/paging</paging-directory>
<!-- Connectors -->
<connectors>
<connector name="netty-connector">tcp://0.0.0.0:61616</connector>
<!-- connector to the server1 -->
<connector name="server2-connector">tcp://broker_2:61617</connector>
</connectors>
<!-- Acceptors -->
<acceptors>
<acceptor name="netty-acceptor">tcp://0.0.0.0:61616</acceptor>
</acceptors>
<cluster-connections>
<cluster-connection name="my-cluster">
<connector-ref>netty-connector</connector-ref>
<retry-interval>500</retry-interval>
<use-duplicate-detection>true</use-duplicate-detection>
<message-load-balancing>STRICT</message-load-balancing>
<max-hops>5</max-hops>
<static-connectors allow-direct-connections-only="true">
<connector-ref>server2-connector</connector-ref>
</static-connectors>
</cluster-connection>
</cluster-connections>
<!-- Other config -->
<security-settings>
<!--security for example queue-->
<security-setting match="exampleQueue">
<permission roles="guest" type="createDurableQueue"/>
<permission roles="guest" type="deleteDurableQueue"/>
<permission roles="guest" type="createNonDurableQueue"/>
<permission roles="guest" type="deleteNonDurableQueue"/>
<permission roles="guest" type="consume"/>
<permission roles="guest" type="send"/>
</security-setting>
</security-settings>
<addresses>
<address name="exampleQueue">
<anycast>
<queue name="exampleQueue"/>
</anycast>
</address>
</addresses>
<broker-plugins>
<broker-plugin class-name="org.apache.activemq.artemis.core.server.plugin.impl.LoggingActiveMQServerPlugin">
<property key="LOG_ALL_EVENTS" value="true"/>
<property key="LOG_CONNECTION_EVENTS" value="true"/>
<property key="LOG_SESSION_EVENTS" value="true"/>
<property key="LOG_CONSUMER_EVENTS" value="true"/>
<property key="LOG_DELIVERING_EVENTS" value="true"/>
<property key="LOG_SENDING_EVENTS" value="true"/>
<property key="LOG_INTERNAL_EVENTS" value="true"/>
</broker-plugin>
</broker-plugins>
</core>
</configuration>Broker_2配置
<configuration xmlns="urn:activemq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd">
<core xmlns="urn:activemq:core">
<name>broker_2</name>
<bindings-directory>./data/bindings</bindings-directory>
<journal-directory>./data/journal</journal-directory>
<large-messages-directory>./data/largemessages</large-messages-directory>
<paging-directory>./data/paging</paging-directory>
<!-- Connectors -->
<connectors>
<connector name="netty-connector">tcp://0.0.0.0:61617</connector>
<!-- connector to the server0 -->
<connector name="server1-connector">tcp://broker_1:61616</connector>
</connectors>
<!-- Acceptors -->
<acceptors>
<acceptor name="netty-acceptor">tcp://0.0.0.0:61617</acceptor>
</acceptors>
<cluster-connections>
<cluster-connection name="my-cluster">
<connector-ref>netty-connector</connector-ref>
<retry-interval>500</retry-interval>
<use-duplicate-detection>true</use-duplicate-detection>
<message-load-balancing>STRICT</message-load-balancing>
<max-hops>5</max-hops>
<static-connectors allow-direct-connections-only="true">
<connector-ref>server1-connector</connector-ref>
</static-connectors>
</cluster-connection>
</cluster-connections>
<!-- Other config -->
<security-settings>
<!--security for example queue-->
<security-setting match="exampleQueue">
<permission roles="guest" type="createDurableQueue"/>
<permission roles="guest" type="deleteDurableQueue"/>
<permission roles="guest" type="createNonDurableQueue"/>
<permission roles="guest" type="deleteNonDurableQueue"/>
<permission roles="guest" type="consume"/>
<permission roles="guest" type="send"/>
</security-setting>
</security-settings>
<addresses>
<address name="exampleQueue">
<anycast>
<queue name="exampleQueue"/>
</anycast>
</address>
</addresses>
<broker-plugins>
<broker-plugin class-name="org.apache.activemq.artemis.core.server.plugin.impl.LoggingActiveMQServerPlugin">
<property key="LOG_ALL_EVENTS" value="true"/>
<property key="LOG_CONNECTION_EVENTS" value="true"/>
<property key="LOG_SESSION_EVENTS" value="true"/>
<property key="LOG_CONSUMER_EVENTS" value="true"/>
<property key="LOG_DELIVERING_EVENTS" value="true"/>
<property key="LOG_SENDING_EVENTS" value="true"/>
<property key="LOG_INTERNAL_EVENTS" value="true"/>
</broker-plugin>
</broker-plugins>
</core>
</configuration>在运行这两个服务之后,什么都不会发生。没有什么有趣的记录。
我尝试了UDP发现方法,但发现这是不可能的码头覆盖网络。
然后,我尝试了JGroups方法,但它也不起作用。有人试图建立连接,但每次尝试都超时了。并对容器ID表示的主机进行了尝试,这种方法可能很有趣,但是JGRoups所使用的共享ping目录对于群集方法是无效的。在本地机器上,在两个容器之间共享它是没有问题的。
另外,我使用的是Fiddler,所以像broker_1这样的名称被翻译到本地主机。
发布于 2022-03-15 22:46:47
名为“connector”的netty_connector不应该使用0.0.0.0。这是将被发送到集群中的其他节点的地址,以告诉它们如何连接到发送它的节点。在这种情况下,地址0.0.0.0将是毫无意义的。它需要是代理侦听网络连接的实际IP地址或主机名。
https://stackoverflow.com/questions/71425384
复制相似问题