【问题标题】:Right configuration for HA cluster ActiveMQ ArtemisHA集群ActiveMQ Artemis的正确配置
【发布时间】:2020-02-24 15:00:15
【问题描述】:

我是 ActiveMQ Artemis 的新手,并要求社区检查我是否正确配置了 HA 代理集群,或者我应该以其他方式配置它们,因为我还没有找到关于我的案例的详细教程。所有代理都在同一台机器上运行。

场景

61617 端口上有一个主节点,6161861619 端口上有两个从节点(slave1、slave2)。如果主节点死亡,其中一个从节点变为活动状态(复制模式)。

消费者有必要将集群作为“黑盒”进行通信。我的意思是主服务器的变化(即当主服务器死亡时)不应该对消费者产生任何影响(即它连接到集群的方式)。

我设法做到了(据我了解,对于这种情况,我们应该只配置集群、接受器和连接器属性,因此我只附加了代理配置的这一部分):

主经纪人:

<connectors>
    <connector name="artemis">tcp://localhost:61617</connector> 
</connectors>

<ha-policy>
    <replication>
        <master/>
    </replication>   
</ha-policy>

<acceptors>
    <acceptor name="artemis">tcp://localhost:61617</acceptor>
</acceptors>

<cluster-user>cluster</cluster-user>
<cluster-password>cluster</cluster-password>
<broadcast-groups>
    <broadcast-group name="bg-group1">
        <group-address>231.7.7.7</group-address>
        <group-port>9876</group-port>
        <broadcast-period>5000</broadcast-period>
        <connector-ref>artemis</connector-ref>
    </broadcast-group>
</broadcast-groups>
<discovery-groups>
    <discovery-group name="dg-group1">
        <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-cluster">
        <connector-ref>artemis</connector-ref>
        <message-load-balancing>ON_DEMAND</message-load-balancing>
        <max-hops>0</max-hops>
        <discovery-group-ref discovery-group-name="dg-group1"/>
    </cluster-connection>
</cluster-connections>

slave 1 broker集群配置和master一致(通过控制台--clustered创建节点时自动配置)

<ha-policy>
    <replication>
        <slave/>
    </replication>
</ha-policy>

<connectors>
    <connector name="artemis">tcp://localhost:61618</connector>
    <connector name="netty-live-connector">tcp://localhost:61617</connector>
</connectors>

<acceptors>
    <acceptor name="artemis">tcp://localhost:61618 </acceptor>
</acceptors>

slave 2 broker集群配置和master一致(通过控制台--clustered创建节点时自动配置)

<ha-policy>
    <replication>
        <slave/>
    </replication>
</ha-policy>

<connectors>
    <connector name="artemis">tcp://localhost:61619</connector>
    <connector name="netty-live-connector">tcp://localhost:61617</connector>
</connectors>

<acceptors>
    <acceptor name="artemis">tcp://localhost:61619</acceptor>
</acceptors>

消费者中的JNDI配置:

java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
connectionFactory.ConnectionFactory=(tcp://localhost:61617?ha=true&retryInterval=1000&retryIntervalMultiplier=1.0&reconnectAttempts=10,tcp://localhost:61618?ha=true&retryInterval=1000&retryIntervalMultiplier=1.0&reconnectAttempts=10,tcp://localhost:61619?ha=true&retryInterval=1000&retryIntervalMultiplier=1.0&reconnectAttempts=10)

我的配置有效,但我不确定它是否应该是正确的方式。

我还发现了类似的question,它使用静态连接器。他们在做什么?我不明白它们是如何工作的。或者这可能是我正在寻找的正确配置方式?

【问题讨论】:

    标签: high-availability activemq-artemis


    【解决方案1】:

    首先要注意的是,将单个实时/备份对(甚至实时/备份/备份三元组)与网络复制一起使用是危险的,因为存在“脑裂”的风险。我建议您使用 1 个带共享存储的实时/备份对或 3 个带复制的实时/备份对(这将允许建立适当的仲裁)。阅读the documentation about split brain了解更多详情。

    除了脑裂的风险之外,代理配置看起来还不错。大多数(如果不是全部)配置细节都包含在clusteringHA 文档中。代理附带的还有大量示例,其中许多特定于集群和 HA。

    您可以简化连接工厂 URL。目前您有:

    (tcp://localhost:61617?ha=true&retryInterval=1000&retryIntervalMultiplier=1.0&reconnectAttempts=10,tcp://localhost:61618?ha=true&retryInterval=1000&retryIntervalMultiplier=1.0&reconnectAttempts=10,tcp://localhost:61619?ha=true&retryInterval=1000&retryIntervalMultiplier=1.0&reconnectAttempts=10)
    

    但是,您可以使用:

    (tcp://localhost:61617,tcp://localhost:61618,tcp://localhost:61619)?ha=true&retryInterval=1000&retryIntervalMultiplier=1.0&reconnectAttempts=10
    

    静态连接器通常用于不支持 UDP 多播的环境。它允许手动配置集群成员。如果您处于支持 UDP 多播的环境中,我建议您使用发现/广播组配置而不是静态发现。

    一般来说,如果一切正常,则表明您的配置正常。

    【讨论】:

    • 非常感谢您编辑和回答我的问题。我总是先阅读文档,但是由于我对 MQ 系统总体上是新手,所以我想确保我理解正确的主题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多