9.2. 代理集群的配置方式

您可以通过为集群的每个成员 创建一个代理实例 来配置代理集群,然后将集群设置添加到每个代理实例中。

集群设置由以下内容组成:

发现组
对于动态发现,发现组定义代理实例如何发现集群中的其他成员。发现可以使用 UDP 或 JGroups。
广播组
为了与动态发现搭配使用,广播组定义代理实例如何将群集相关信息传输到群集中的其他成员。广播可以使用 UDP 或 JGroups,但它必须与对应的发现组匹配。
集群连接
代理实例应如何与群集的其他成员连接。您可以指定发现组或群集成员的静态列表。您还可以指定消息重新发布和最大跃点属性。

9.2.1. 创建代理集群

此流程演示了如何创建带有静态发现的基本双broker 集群。

流程

  1. 使用 artemis create 命令创建第一个代理实例。

    这个示例创建一个名为 broker1 的新代理实例。

    $ sudo INSTALL_DIR/bin/artemis create broker1 --user user --password pass --role amq
  2. 为群集的第二个成员创建第二个代理实例。

    对于每个额外的代理实例,您应该使用 --port-offset 参数以避免与之前的代理实例冲突。

    这个示例创建了第二个代理实例,名为 broker2

    $ sudo INSTALL_DIR/bin/artemis create broker2 --port-offset 100 --user user --password pass --role amq
  3. 对于第一个代理实例,打开 BROKER_INSTANCE_DIR/etc/broker.xml 配置文件并添加集群设置。

    对于静态发现,您必须添加一个连接器和静态集群连接。这个示例将 broker1 配置为连接到 broker2

    <!-- Connectors -->
    <connectors>
        <connector name="netty-connector">tcp://localhost:61616</connector>
        <!-- connector to broker2 -->
        <connector name="broker2-connector">tcp://localhost:61617</connector>
    </connectors>
    
    <!-- Clustering configuration -->
    <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>1</max-hops>
            <static-connectors>
                <connector-ref>broker2-connector</connector-ref>
            </static-connectors>
        </cluster-connection>
    </cluster-connections>
  4. 对于第二个代理实例,打开 BROKER_INSTANCE_DIR/etc/broker.xml 配置文件并添加集群设置。

    这个示例将 broker2 配置为连接到 broker1

    <!-- Connectors -->
    <connectors>
        <connector name="netty-connector">tcp://localhost:61617</connector>
        <!-- connector to broker1 -->
        <connector name="broker1-connector">tcp://localhost:61616</connector>
    </connectors>
    
    <!-- Clustering configuration -->
    <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>1</max-hops>
            <static-connectors>
                <connector-ref>broker1-connector</connector-ref>
            </static-connectors>
        </cluster-connection>
    </cluster-connections>

相关信息