简体   繁体   English

如何在 ActiveMQ Artemis 中使用发现组形成 3 个节点的对称集群?

[英]How to form a symmetric cluster of 3 nodes with discovery-groups in ActiveMQ Artemis?

I have created a StatefulSet in Kubernetes with three replicas.我在 Kubernetes 中创建了一个包含三个副本的 StatefulSet。 The override-broker XML file is as follows -覆盖代理 XML 文件如下 -

<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" xsi:schemaLocation="urn:activemq:core ">

        <cluster-user>admin</cluster-user>

        <cluster-password>admin</cluster-password>

        <acceptors>
            <acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true;stompConsumerCredits=1;stompEnableMessageId=true</acceptor>
        </acceptors>

        <connectors>
            <connector name="$HOSTNAME">tcp://$HOSTNAME.<service>.<namespace>.<domain>:61616</connector>
        </connectors>


        <broadcast-groups>
            <broadcast-group name="my-broadcast-group">
                <group-address>231.7.7.7</group-address>
                <group-port>9876</group-port>
                <broadcast-period>100</broadcast-period>
                <connector-ref>$HOSTNAME</connector-ref>
            </broadcast-group>
        </broadcast-groups>

        <discovery-groups>
            <discovery-group name="my-discovery-group">
                <group-address>231.7.7.7</group-address>
                <group-port>9876</group-port>
                <refresh-timeout>10000</refresh-timeout>
            </discovery-group>
        </discovery-groups>

        <cluster-connections>
            <cluster-connection name="my-artemis-cluster">
                <address></address>
                <connector-ref>$HOSTNAME</connector-ref>
                <check-period>1000</check-period>
                <connection-ttl>5000</connection-ttl>
                <min-large-message-size>50000</min-large-message-size>
                <call-timeout>5000</call-timeout>
                <retry-interval>500</retry-interval>
                <retry-interval-multiplier>1.0</retry-interval-multiplier>
                <max-retry-interval>5000</max-retry-interval>
                <initial-connect-attempts>-1</initial-connect-attempts>
                <reconnect-attempts>-1</reconnect-attempts>
                <use-duplicate-detection>true</use-duplicate-detection>
                <message-load-balancing>ON_DEMAND</message-load-balancing>
                <max-hops>1</max-hops>
                <confirmation-window-size>32000</confirmation-window-size>
                <call-failover-timeout>30000</call-failover-timeout>
                <notification-interval>1000</notification-interval>
                <notification-attempts>10</notification-attempts>
                <discovery-group-ref discovery-group-name="my-discovery-group"/>
            </cluster-connection>
        </cluster-connections>

        <address-settings>
            <address-setting match="/queue/#">
                <default-address-routing-type>ANYCAST</default-address-routing-type>
                <default-queue-routing-type>ANYCAST</default-queue-routing-type>
            </address-setting>
            <address-setting match="/topic/#">
                <default-address-routing-type>MULTICAST</default-address-routing-type>
                <default-queue-routing-type>MULTICAST</default-queue-routing-type>
            </address-setting>
            <address-setting match="#">
                <auto-delete-queues>false</auto-delete-queues>
                <auto-delete-jms-queues>false</auto-delete-jms-queues>
                <auto-delete-jms-topics>false</auto-delete-jms-topics>
                <auto-delete-addresses>false</auto-delete-addresses>
                <max-delivery-attempts>100</max-delivery-attempts>
                <expiry-delay>86400000</expiry-delay>
                <redelivery-delay>3000</redelivery-delay>
                <redelivery-delay-multiplier>1</redelivery-delay-multiplier>
                <redelivery-collision-avoidance-factor>0.15</redelivery-collision-avoidance-factor>
                <max-redelivery-delay>50000</max-redelivery-delay>
                <default-consumer-window-size>0</default-consumer-window-size>
                <redistribution-delay>3000</redistribution-delay>
            </address-setting>
        </address-settings>
        <wildcard-addresses>
            <routing-enabled>true</routing-enabled>
            <delimiter>/</delimiter>
            <any-words>#</any-words>
            <single-word>*</single-word>
        </wildcard-addresses>
    </core>
</configuration>

The problem that I observed is that in spite of setting max-hops=1 , the Diagram tab shows only two nodes connected with each other.我观察到的问题是,尽管设置了max-hops=1 ,但图表选项卡只显示了两个相互连接的节点。 The diagram in each node is something like -每个节点中的图表类似于 -

  • node-0 : node-0 connected-with node-1 node-0 : node-0 与 node-1 相连
  • node-1 : node-1 connected with node-0 node-1 : node-1 与 node-0 相连
  • node-2 : node-2 connected with node-0 node-2 : node-2 与 node-0 相连

Although, the expectation is that in all nodes the diagram should be as follows -虽然,期望是在所有节点中,图表应如下所示 -

  • node-<i> : node-0 connected-with node-1; node-<i> : node-0 与 node-1 相连; node-1 connected-with node-2;节点 1 与节点 2 相连; node-0 connected-with node-2节点 0 与节点 2 相连

I could solve this problem by creating a new connector -我可以通过创建一个新的连接器来解决这个问题 -

<acceptors>
            <acceptor name="netty">tcp://$HOSTNAME.<service>.<namespace>.<domain>:61617</acceptor>
</acceptors>
<connectors>
            <connector name="netty">tcp://$HOSTNAME.<service>.<namespace>.<domain>:61617</connector>
</connectors>

Then used the netty connector as the connector-ref in the discovery-group and cluster-connection然后使用netty连接器作为discovery-groupcluster-connectionconnector-ref

<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" xsi:schemaLocation="urn:activemq:core ">

        <cluster-user>admin</cluster-user>

        <cluster-password>admin</cluster-password>

        <acceptors>
            <acceptor name="netty">tcp://$HOSTNAME.<service>.<namespace>.<domain>:61617</acceptor>
        </acceptors>

        <connectors>
            <connector name="netty">tcp://$HOSTNAME.<service>.<namespace>.<domain>:61617</connector>
        </connectors>


        <broadcast-groups>
            <broadcast-group name="my-broadcast-group">
                <group-address>231.7.7.7</group-address>
                <group-port>9876</group-port>
                <broadcast-period>100</broadcast-period>
                <connector-ref>netty</connector-ref>
            </broadcast-group>
        </broadcast-groups>

        <discovery-groups>
            <discovery-group name="my-discovery-group">
                <group-address>231.7.7.7</group-address>
                <group-port>9876</group-port>
                <refresh-timeout>10000</refresh-timeout>
            </discovery-group>
        </discovery-groups>

        <cluster-connections>
            <cluster-connection name="my-artemis-cluster">
                <address></address>
                <connector-ref>netty</connector-ref>
                <check-period>1000</check-period>
                <connection-ttl>5000</connection-ttl>
                <min-large-message-size>50000</min-large-message-size>
                <call-timeout>5000</call-timeout>
                <retry-interval>500</retry-interval>
                <retry-interval-multiplier>1.0</retry-interval-multiplier>
                <max-retry-interval>5000</max-retry-interval>
                <initial-connect-attempts>-1</initial-connect-attempts>
                <reconnect-attempts>-1</reconnect-attempts>
                <use-duplicate-detection>true</use-duplicate-detection>
                <message-load-balancing>ON_DEMAND</message-load-balancing>
                <max-hops>1</max-hops>
                <confirmation-window-size>32000</confirmation-window-size>
                <call-failover-timeout>30000</call-failover-timeout>
                <notification-interval>1000</notification-interval>
                <notification-attempts>10</notification-attempts>
                <discovery-group-ref discovery-group-name="my-discovery-group"/>
            </cluster-connection>
        </cluster-connections>

        <address-settings>
            <address-setting match="/queue/#">
                <default-address-routing-type>ANYCAST</default-address-routing-type>
                <default-queue-routing-type>ANYCAST</default-queue-routing-type>
            </address-setting>
            <address-setting match="/topic/#">
                <default-address-routing-type>MULTICAST</default-address-routing-type>
                <default-queue-routing-type>MULTICAST</default-queue-routing-type>
            </address-setting>
            <address-setting match="#">
                <auto-delete-queues>false</auto-delete-queues>
                <auto-delete-jms-queues>false</auto-delete-jms-queues>
                <auto-delete-jms-topics>false</auto-delete-jms-topics>
                <auto-delete-addresses>false</auto-delete-addresses>
                <max-delivery-attempts>100</max-delivery-attempts>
                <expiry-delay>86400000</expiry-delay>
                <redelivery-delay>3000</redelivery-delay>
                <redelivery-delay-multiplier>1</redelivery-delay-multiplier>
                <redelivery-collision-avoidance-factor>0.15</redelivery-collision-avoidance-factor>
                <max-redelivery-delay>50000</max-redelivery-delay>
                <default-consumer-window-size>0</default-consumer-window-size>
                <redistribution-delay>3000</redistribution-delay>
            </address-setting>
        </address-settings>
        <wildcard-addresses>
            <routing-enabled>true</routing-enabled>
            <delimiter>/</delimiter>
            <any-words>#</any-words>
            <single-word>*</single-word>
        </wildcard-addresses>
    </core>
</configuration>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Openshift v3 / Kubernetes上的ActiveMQ群集发现 - ActiveMQ cluster discovery on Openshift v3 / Kubernetes 如果 ActiveMQ Artemis 集群是 Kubernetes StatefulSet,HA 真的有用吗? - Is HA really useful if ActiveMQ Artemis cluster is a Kubernetes StatefulSet? 如何在 Kubernetes 中使用 Apache ActiveMQ Artemis - How to use Apache ActiveMQ Artemis in Kubernetes ActiveMQ Artemis 集群在一个实例崩溃后不会重新分发消息 - ActiveMQ Artemis cluster does not redistribute messages after one instance crash ActiveMQ Artemis 消费者在崩溃后没有重新连接到同一个集群节点 - ActiveMQ Artemis consumer does not reconnect to the same cluster node after crash 如果 ActiveMQ Artemis 集群在 Kubernetes 环境中运行,备份节点是否需要 ON_DEMAND 负载平衡才能运行? - If ActiveMQ Artemis cluster is running in a Kubernetes environment, is the ON_DEMAND load-balancing required for a backup-node to operate? ActiveMQ“经典”和 ActiveMQ Artemis 与 Prometheus 的集成 - ActiveMQ "Classic" and ActiveMQ Artemis integration with Prometheus ActiveMQ Artemis Kubernetes 多代理设置 - ActiveMQ Artemis Kubernetes multi broker setup 如何减少集群中的节点 - How to reduce nodes from a cluster ActiveMQ Artemis:内部和外部 IP 地址 - ActiveMQ Artemis: Internal and external IP addresses
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM