14.2. 创建代理集群
您可以通过在应参与集群的每个代理上配置集群连接来创建代理集群。集群连接定义代理应如何连接到其他代理。
您可以创建一个使用静态发现或动态发现(UDP 多播或 JGroups)的代理集群。
先决条件
您应该已确定代理集群的大小。
更多信息请参阅 第 14.1.7 节 “集群大小注意事项”。
14.2.1. 使用静态发现创建代理集群 复制链接链接已复制到粘贴板!
您可以通过指定静态代理列表来创建代理集群。如果您无法在网络上使用 UDP 多播或 JGroups,请使用这个静态发现方法。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 在 <
;core&
gt; 元素中,添加以下连接器:- 定义其他代理如何连接这个连接器
- 定义此代理如何连接到集群中的其他代理的一个或多个连接器
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关连接器的更多信息,请参阅 第 2.3 节 “关于连接器”。
添加集群连接并将其配置为使用静态发现。
默认情况下,集群连接将对对称拓扑中所有地址进行负载平衡。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-connection
-
使用
name
属性指定集群连接的名称。 connector-ref
- 定义其他代理如何连接这个连接器的连接器。
static-connectors
- 此代理可用于进行初始连接到集群中的另一个代理的一个或多个连接器。在进行初始连接后,代理会发现集群中的其他代理。只有集群使用静态发现时,才需要配置此属性。
配置集群连接的任何其他属性。
这些额外的集群连接属性具有适合大多数常见用例的默认值。因此,如果您不希望默认行为,您只需要配置这些属性。更多信息请参阅 附录 C, 集群连接配置元素。
创建集群用户和密码。
AMQ Broker 附带默认集群凭证,但您应该更改它们以防止未经授权的远程客户端使用这些默认凭证来连接到代理。
重要在集群的每个代理上集群密码必须相同。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个额外代理上重复此步骤。
您可以将集群配置复制到每个额外代理中。但是,不要复制任何其他 AMQ Broker 数据文件(如绑定、日志和大型消息目录)。这些文件必须在集群中的节点之间唯一,否则集群不会正确组成。
其他资源
-
有关使用静态发现的代理集群示例,请参阅 cluster
-static-discovery
示例。
14.2.2. 使用基于 UDP 的动态发现创建代理集群 复制链接链接已复制到粘贴板!
您可以创建一个代理集群,代理通过 UDP 多播动态发现它们。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 在 <
;core>
; 元素中,添加一个连接器。此连接器定义其他代理可用于连接到这个连接的连接信息。在发现过程中,此信息将发送到集群中的其他代理。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 UDP 广播组。
broadcast 组可让代理将集群连接的信息推送到集群中的其他代理。这个广播组使用 UDP 广播连接设置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 除非另有说明,否则需要以下参数:
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.255.255.255
范围中的类 D IP 地址。地址224.0.0.0
保留且不可用。这是特定于 UDP 的属性。 group-port
- 用于广播的 UDP 端口号。这是特定于 UDP 的属性。
broadcast-period
(可选)- 连续广播之间的间隔(毫秒)。默认值为 2000 毫秒。
connector-ref
- 之前配置的集群连接器应该广播。
添加 UDP 发现组。
发现组定义此代理如何从其他代理接收连接器信息。代理维护一个连接器列表(每个代理一个条目)。当它从代理接收广播时,它会更新其条目。如果它没有从代理接收广播时间,它会删除该条目。
这个发现组使用 UDP 来发现集群中的代理:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 除非另有说明,否则需要以下参数:
discovery-group
-
使用
name
属性为发现组指定唯一名称。 local-bind-address
(可选)- 如果运行代理的机器使用多个网络接口,您可以指定发现组应该侦听的网络接口。这是特定于 UDP 的属性。
group-address
-
要侦听的组的多播地址。它应匹配您要侦听的广播组中的
group-address
。这是特定于 UDP 的属性。 group-port
-
多播组的 UDP 端口号。它应匹配您要侦听的广播组中的
group-port
。这是特定于 UDP 的属性。 refresh-timeout
(可选)发现组从特定代理接收最后一次广播后等待的时间(以毫秒为单位),然后再从其列表中删除该代理的连接器对条目。默认值为 10000 毫秒(10 秒)。
把它设置为比 broadcast 组中的
broadcast-period
高的值。否则,代理可能会定期从列表中消失,即使它们仍然被广播(因为时间上的差别)。
创建群集连接并将其配置为使用动态发现。
默认情况下,集群连接将对对称拓扑中所有地址进行负载平衡。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-connection
-
使用
name
属性指定集群连接的名称。 connector-ref
- 定义其他代理如何连接这个连接器的连接器。
discovery-group-ref
- 此代理应该用来查找集群的其他成员的发现组。只有集群使用动态发现功能时才需要配置此属性。
配置集群连接的任何其他属性。
这些额外的集群连接属性具有适合大多数常见用例的默认值。因此,如果您不希望默认行为,您只需要配置这些属性。更多信息请参阅 附录 C, 集群连接配置元素。
创建集群用户和密码。
AMQ Broker 附带默认集群凭证,但您应该更改它们以防止未经授权的远程客户端使用这些默认凭证来连接到代理。
重要在集群的每个代理上集群密码必须相同。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个额外代理上重复此步骤。
您可以将集群配置复制到每个额外代理中。但是,不要复制任何其他 AMQ Broker 数据文件(如绑定、日志和大型消息目录)。这些文件必须在集群中的节点之间唯一,否则集群不会正确组成。
其他资源
-
有关在 UDP 中使用动态发现的代理集群配置示例,请参阅 cluster
-queue
示例。
14.2.3. 使用基于 JGroups 的动态发现创建代理集群 复制链接链接已复制到粘贴板!
如果您已在您的环境中使用 JGroups,可以使用它来创建一个代理集群,代理会互相动态发现。
先决条件
必须安装并配置 JGroups。
有关 JGroups 配置文件的示例,请参见 cluster
-jgroups
示例。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 在 <
;core>
; 元素中,添加一个连接器。此连接器定义其他代理可用于连接到这个连接的连接信息。在发现过程中,此信息将发送到集群中的其他代理。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 <
;core&
gt; 元素中,添加 JGroups 广播组。broadcast 组可让代理将集群连接的信息推送到集群中的其他代理。这个广播组使用 JGroups 来广播连接设置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 除非另有说明,否则需要以下参数:
broadcast-group
-
使用
name
属性为广播组指定唯一名称。 JGroups-file
- 用于初始化 JGroups 通道的 JGroups 配置文件的名称。该文件必须位于 Java 资源路径中,以便代理可以加载它。
jgroups-channel
- 要连接到的 JGroups 通道的名称,以进行广播。
broadcast-period
(可选)- 连续广播之间的间隔(以毫秒为单位)。默认值为 2000 毫秒。
connector-ref
- 之前配置的集群连接器应该广播。
添加 JGroups 发现组。
发现组定义如何接收连接器信息。代理维护一个连接器列表(每个代理一个条目)。当它从代理接收广播时,它会更新其条目。如果它没有从代理接收广播时间,它会删除该条目。
此发现组使用 JGroups 来发现集群中的代理:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 除非另有说明,否则需要以下参数:
discovery-group
-
使用
name
属性为发现组指定唯一名称。 JGroups-file
- 用于初始化 JGroups 通道的 JGroups 配置文件的名称。该文件必须位于 Java 资源路径中,以便代理可以加载它。
jgroups-channel
- 要连接到的 JGroups 频道的名称,以接收广播。
refresh-timeout
(可选)发现组从特定代理接收最后一次广播后等待的时间(以毫秒为单位),然后再从其列表中删除该代理的连接器对条目。默认值为 10000 毫秒(10 秒)。
把它设置为比 broadcast 组中的
broadcast-period
高的值。否则,代理可能会定期从列表中消失,即使它们仍然被广播(因为时间上的差别)。
创建群集连接并将其配置为使用动态发现。
默认情况下,集群连接将对对称拓扑中所有地址进行负载平衡。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-connection
-
使用
name
属性指定集群连接的名称。 connector-ref
- 定义其他代理如何连接这个连接器的连接器。
discovery-group-ref
- 此代理应该用来查找集群的其他成员的发现组。只有集群使用动态发现功能时才需要配置此属性。
配置集群连接的任何其他属性。
这些额外的集群连接属性具有适合大多数常见用例的默认值。因此,如果您不希望默认行为,您只需要配置这些属性。更多信息请参阅 附录 C, 集群连接配置元素。
创建集群用户和密码。
AMQ Broker 附带默认集群凭证,但您应该更改它们以防止未经授权的远程客户端使用这些默认凭证来连接到代理。
重要在集群的每个代理上集群密码必须相同。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个额外代理上重复此步骤。
您可以将集群配置复制到每个额外代理中。但是,不要复制任何其他 AMQ Broker 数据文件(如绑定、日志和大型消息目录)。这些文件必须在集群中的节点之间唯一,否则集群不会正确组成。
其他资源
- 有关在 JGroups 中使用动态发现的代理集群的示例,请参阅 cluster -jgroups 示例。