14.2. 创建代理集群


您可以通过在应加入集群的每个代理中配置集群连接来创建代理集群。以太网连接定义了代理应该如何连接到其他代理。

您可以创建一个使用静态发现或动态发现(UDP 多播或 JGroups)的代理集群。

先决条件

14.2.1. 使用静态发现创建代理集群

您可以通过指定静态代理列表来创建代理集群。如果您在网络上无法使用 UDP 多播或 JGroups,可使用此静态发现方法。

流程

  1. 打开 & lt;broker_instance_dir> /etc/broker.xml 配置文件。
  2. 在 & lt;core > 元素中添加以下连接器:

    • 定义其他代理如何连接这个连接器
    • 定义此代理如何连接到集群中的其他代理的一个或多个连接器
    <configuration>
        <core>
            ...
            <connectors>
                <connector name="netty-connector">tcp://localhost:61617</connector>  1
                <connector name="broker2">tcp://localhost:61618</connector>  2
                <connector name="broker3">tcp://localhost:61619</connector>
            </connectors>
            ...
        </core>
    </configuration>
    1
    此连接器定义了其他代理可以用来连接这个连接的连接信息。这些信息将在发现过程中发送到集群中的其他代理。
    2
    broker2broker3 连接器定义此代理如何连接到集群中的两个其他代理,其中一个将始终可用。如果集群中有其他代理,则在进行初始连接时,这些连接器之一将发现它们。

    有关连接器的详情请参考 第 2.3 节 “关于连接器”

  3. 添加集群连接,并将其配置为使用静态发现。

    默认情况下,集群连接将负载均衡对称拓扑中所有地址的信息。

    <configuration>
        <core>
            ...
            <cluster-connections>
                <cluster-connection name="my-cluster">
                    <connector-ref>netty-connector</connector-ref>
                    <static-connectors>
                        <connector-ref>broker2-connector</connector-ref>
                        <connector-ref>broker3-connector</connector-ref>
                    </static-connectors>
                </cluster-connection>
            </cluster-connections>
            ...
        </core>
    </configuration>
    cluster-connection
    使用 name 属性指定集群状态的名称。
    connector-ref
    定义其他代理如何连接这个连接器的连接器。
    static-connectors
    此代理可用于向集群中的另一个代理进行初始连接的一个或多个连接器。在进行此初始连接后,代理将发现集群中的其他代理。只有在集群使用静态发现时,才需要配置此属性。
  4. 为集群连接配置任何其他属性。

    这些额外的集群连接属性具有适用于大多数常见用例的默认值。因此,如果不需要默认行为,您只需要配置这些属性。更多信息请参阅 附录 C, Cluster Connection Configuration Elements

  5. 创建集群用户和密码。

    AMQ Broker 附带默认集群凭证,但您应该更改它们,以防止未经授权的远程客户端使用这些默认凭证连接到代理。

    重要

    在集群的每个代理中,集群密码必须相同。

    <configuration>
        <core>
            ...
            <cluster-user>cluster_user</cluster-user>
            <cluster-password>cluster_user_password</cluster-password>
            ...
        </core>
    </configuration>
  6. 在每个附加代理中重复此步骤。

    您可以将集群配置复制到每个附加代理。但是,不要复制任何其他 AMQ Broker 数据文件(如绑定、日志和大型消息目录)。这些文件必须在集群中的节点之间唯一,否则集群将无法正确形成。

其他资源

14.2.2. 使用基于 UDP 的动态发现创建代理集群

您可以创建一个代理集群,该集群代理通过 UDP 多播动态发现彼此。

流程

  1. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  2. 在 & lt;core > 元素中添加连接器。

    此连接器定义了其他代理可以用来连接这个连接的连接信息。这些信息将在发现过程中发送到集群中的其他代理。

    <configuration>
        <core>
            ...
            <connectors>
                <connector name="netty-connector">tcp://localhost:61617</connector>
            </connectors>
            ...
        </core>
    </configuration>
  3. 添加 UDP 广播组。

    广播组可让代理将有关其集群连接的信息推送到集群中的其他代理。这个广播组使用 UDP 来广播连接设置:

    <configuration>
        <core>
            ...
            <broadcast-groups>
                <broadcast-group name="my-broadcast-group">
                    <local-bind-address>172.16.9.3</local-bind-address>
                    <local-bind-port>-1</local-bind-port>
                    <group-address>231.7.7.7</group-address>
                    <group-port>9876</group-port>
                    <broadcast-period>2000</broadcast-period>
                    <connector-ref>netty-connector</connector-ref>
                </broadcast-group>
            </broadcast-groups>
            ...
        </core>
    </configuration>

    除非另有说明,否则需要以下参数:

    broadcast-group
    使用 name 属性指定广播组的唯一名称。
    local-bind-address
    UDP 套接字绑定到的地址。如果您在代理上有多个网络接口,您应该指定要用于广播的哪些网络接口。如果没有指定此属性,套接字将绑定到操作系统选择的 IP 地址。这是特定于 UDP 的属性。
    local-bind-port
    数据报报套接字绑定到的端口。在大多数情况下,使用默认值 -1,它指定匿名端口。这个参数用于与 local-bind-address 的连接。这是特定于 UDP 的属性。
    group-address
    数据将广播的多播地址。它是范围 224.0.0.0 - 239.255.255.255 中的类 D IP 地址。地址 224.0.0.0 被保留,不可用。这是特定于 UDP 的属性。
    group-port
    用于广播的 UDP 端口号。这是特定于 UDP 的属性。
    广播期间 (可选)
    连续广播间隔(以毫秒为单位)。默认值为 2000 毫秒。
    connector-ref
    之前配置的群集连接器应该被广播。
  4. 添加 UDP 发现组。

    discovery 组定义了此代理如何接收其他代理的连接器信息。代理维护一个连接器列表(每个代理一个条目)。当它从代理广播时,它会更新其条目。如果它没有从代理收到一个长度的广播,它将删除该条目。

    此发现组使用 UDP 发现集群中的代理:

    <configuration>
        <core>
            ...
            <discovery-groups>
                <discovery-group name="my-discovery-group">
                    <local-bind-address>172.16.9.7</local-bind-address>
                    <group-address>231.7.7.7</group-address>
                    <group-port>9876</group-port>
                    <refresh-timeout>10000</refresh-timeout>
                </discovery-group>
            <discovery-groups>
            ...
        </core>
    </configuration>

    除非另有说明,否则需要以下参数:

    discovery-group
    使用 name 属性指定 discovery 组的唯一名称。
    local-bind-address (可选)
    如果运行代理的机器使用多个网络接口,您可以指定发现组应侦听的网络接口。这是特定于 UDP 的属性。
    group-address
    要侦听的组的多播地址。它应该与您要侦听的广播组中的 group-address 匹配。这是特定于 UDP 的属性。
    group-port
    多播组的 UDP 端口号。它应该与您要 侦听的 广播组中的组端口匹配。这是特定于 UDP 的属性。
    refresh-timeout (可选)

    在从特定代理收到最后一次广播后,发现组在从特定代理收到最后一次广播后等待的时间长度(以毫秒为单位),然后从它列表中删除该代理的连接器对条目。默认值为 10000 毫秒(10 秒)。

    把它设置为高于 broadcast-period 在 broadcast-period 范围内的值。否则,代理可能会定期从列表中消失,即使它们仍然在广播(因为计时中的差别不同)。

  5. 创建集群连接,并将其配置为使用动态发现。

    默认情况下,集群连接将负载均衡对称拓扑中所有地址的信息。

    <configuration>
        <core>
            ...
            <cluster-connections>
                <cluster-connection name="my-cluster">
                    <connector-ref>netty-connector</connector-ref>
                    <discovery-group-ref discovery-group-name="my-discovery-group"/>
                </cluster-connection>
            </cluster-connections>
            ...
        </core>
    </configuration>
    cluster-connection
    使用 name 属性指定集群状态的名称。
    connector-ref
    定义其他代理如何连接这个连接器的连接器。
    discovery-group-ref
    此代理应使用的 discovery 组来查找集群的其他成员。只有集群使用动态发现时,才需要配置此属性。
  6. 为集群连接配置任何其他属性。

    这些额外的集群连接属性具有适用于大多数常见用例的默认值。因此,如果不需要默认行为,您只需要配置这些属性。更多信息请参阅 附录 C, Cluster Connection Configuration Elements

  7. 创建集群用户和密码。

    AMQ Broker 附带默认集群凭证,但您应该更改它们,以防止未经授权的远程客户端使用这些默认凭证连接到代理。

    重要

    在集群的每个代理中,集群密码必须相同。

    <configuration>
        <core>
            ...
            <cluster-user>cluster_user</cluster-user>
            <cluster-password>cluster_user_password</cluster-password>
            ...
        </core>
    </configuration>
  8. 在每个附加代理中重复此步骤。

    您可以将集群配置复制到每个附加代理。但是,不要复制任何其他 AMQ Broker 数据文件(如绑定、日志和大型消息目录)。这些文件必须在集群中的节点之间唯一,否则集群将无法正确形成。

其他资源

14.2.3. 使用基于 JGroups 的动态发现创建代理集群

如果您已在环境中使用 JGroups,则可使用它创建一个代理集群来动态发现每个代理。

先决条件

流程

  1. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  2. 在 & lt;core > 元素中添加连接器。

    此连接器定义了其他代理可以用来连接这个连接的连接信息。这些信息将在发现过程中发送到集群中的其他代理。

    <configuration>
        <core>
            ...
            <connectors>
                <connector name="netty-connector">tcp://localhost:61617</connector>
            </connectors>
            ...
        </core>
    </configuration>
  3. 在 & lt;core > 元素中添加一个 JGroups 广播组。

    广播组可让代理将有关其集群连接的信息推送到集群中的其他代理。这个广播组使用 JGroups 广播连接设置:

    <configuration>
        <core>
            ...
            <broadcast-groups>
                <broadcast-group name="my-broadcast-group">
                    <jgroups-file>test-jgroups-file_ping.xml</jgroups-file>
                    <jgroups-channel>activemq_broadcast_channel</jgroups-channel>
                    <broadcast-period>2000</broadcast-period>
                    <connector-ref>netty-connector</connector-ref>
                </broadcast-group>
            </broadcast-groups>
            ...
        </core>
    </configuration>

    除非另有说明,否则需要以下参数:

    broadcast-group
    使用 name 属性指定广播组的唯一名称。
    jgroups-file
    用于初始化 JGroups 通道的Groups 配置文件的名称。该文件必须位于 Java 资源路径中,以便代理可以加载它。
    jgroups-channel
    要连接到 的Groups 频道的名称,用于广播。
    广播期间 (可选)
    连续广播间隔(以毫秒为单位)。默认值为 2000 毫秒。
    connector-ref
    之前配置的群集连接器应该被广播。
  4. 添加Groups 发现组。

    discovery 组定义了连接器信息是如何被接收的。代理维护一个连接器列表(每个代理一个条目)。当它从代理广播时,它会更新其条目。如果它没有从代理收到一个长度的广播,它将删除该条目。

    此发现组使用 JGroups 发现集群中的代理:

    <configuration>
        <core>
            ...
            <discovery-groups>
                <discovery-group name="my-discovery-group">
                    <jgroups-file>test-jgroups-file_ping.xml</jgroups-file>
                    <jgroups-channel>activemq_broadcast_channel</jgroups-channel>
                    <refresh-timeout>10000</refresh-timeout>
                </discovery-group>
            <discovery-groups>
            ...
        </core>
    </configuration>

    除非另有说明,否则需要以下参数:

    discovery-group
    使用 name 属性指定 discovery 组的唯一名称。
    jgroups-file
    用于初始化 JGroups 通道的Groups 配置文件的名称。该文件必须位于 Java 资源路径中,以便代理可以加载它。
    jgroups-channel
    要连接到 的Groups 频道的名称以接收广播。
    refresh-timeout (可选)

    在从特定代理收到最后一次广播后,发现组在从特定代理收到最后一次广播后等待的时间长度(以毫秒为单位),然后从它列表中删除该代理的连接器对条目。默认值为 10000 毫秒(10 秒)。

    把它设置为高于 broadcast-period 在 broadcast-period 范围内的值。否则,代理可能会定期从列表中消失,即使它们仍然在广播(因为计时中的差别不同)。

  5. 创建集群连接,并将其配置为使用动态发现。

    默认情况下,集群连接将负载均衡对称拓扑中所有地址的信息。

    <configuration>
        <core>
            ...
            <cluster-connections>
                <cluster-connection name="my-cluster">
                    <connector-ref>netty-connector</connector-ref>
                    <discovery-group-ref discovery-group-name="my-discovery-group"/>
                </cluster-connection>
            </cluster-connections>
            ...
        </core>
    </configuration>
    cluster-connection
    使用 name 属性指定集群状态的名称。
    connector-ref
    定义其他代理如何连接这个连接器的连接器。
    discovery-group-ref
    此代理应使用的 discovery 组来查找集群的其他成员。只有集群使用动态发现时,才需要配置此属性。
  6. 为集群连接配置任何其他属性。

    这些额外的集群连接属性具有适用于大多数常见用例的默认值。因此,如果不需要默认行为,您只需要配置这些属性。更多信息请参阅 附录 C, Cluster Connection Configuration Elements

  7. 创建集群用户和密码。

    AMQ Broker 附带默认集群凭证,但您应该更改它们,以防止未经授权的远程客户端使用这些默认凭证连接到代理。

    重要

    在集群的每个代理中,集群密码必须相同。

    <configuration>
        <core>
            ...
            <cluster-user>cluster_user</cluster-user>
            <cluster-password>cluster_user_password</cluster-password>
            ...
        </core>
    </configuration>
  8. 在每个附加代理中重复此步骤。

    您可以将集群配置复制到每个附加代理。但是,不要复制任何其他 AMQ Broker 数据文件(如绑定、日志和大型消息目录)。这些文件必须在集群中的节点之间唯一,否则集群将无法正确形成。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.