可通过为群集中的每个成员代理指定群集配置属性来定义群集。可以为群集中的每个代理单独设置这些属性,但是,通常较为方便的一种做法是将这些属性收集到所有代理均引用的一个中央群集配置文件中。这样可防止设置出现不一致的情况,并确保群集中的所有代理都共享相同、一致的配置信息。
表 14–9 中详细介绍了群集配置属性。其中包括以下内容:
imq.cluster.hostname 给出 cluster 连接服务(用于群集中代理之间的内部通信)的主机名或 IP 地址。 如果有多个主机可用,该设置会很有用:例如,如果一台计算机中安装了多个网络接口卡。
可以为每个代理单独设置 hostname 和 port 属性,但群集中所有代理的 brokerlist、masterbroker、url 和 transport 值必须相同。
以下部分介绍了如何设置代理的群集配置属性。可以对群集中的每个代理单独进行设置,也可以使用群集配置文件来集中进行设置。
可以在代理的实例配置文件(或在启动代理时的命令行)中设置代理的群集配置属性。例如,要创建由 host1 端口 9876 上的代理、host2 端口 5000 上的代理以及 ctrlhost 默认端口 (7676) 上的代理组成的群集,应在这三个代理的实例配置文件中包含以下属性:
imq.cluster.brokerlist=host1:9876,host2:5000,ctrlhost
请注意,如果采用此方法,则当群集配置需要更改时,您必须更新群集中每个代理的实例配置文件。
为保持一致性和易维护性,建议将所有共享群集配置属性收集到一个群集配置文件中,而不是分别为每个代理设置这些属性。采用此方法时,每个代理的实例配置文件必须将 imq.cluster.url 属性设置为指向该群集配置文件的位置:例如,
imq.cluster.url=file:/home/cluster.properties
然后群集配置文件定义群集中所有代理的共享配置属性,例如要连接的代理的列表 (imq.cluster.brokerlist)、用于 cluster 连接服务的传输协议 (imq.cluster.transport) 以及(可选)主代理的地址 (imq.cluster.masterbroker)。以下代码定义了与前面的示例相同的群集,其中在 ctrlhost 上运行的代理充当主代理:
imq.cluster.brokerlist=host1:9876,host2:5000,ctrlhost imq.cluster.masterbroker=ctrlhost