Sun Java System Message Queue 3.7 UR1 管理指南

管理群集

本节介绍如何将一组代理连接成一个群集,如何在现有群集中添加新代理,以及如何从群集中删除代理。

连接代理

将代理连接成群集一般有两种方法:一种方法是通过命令行(使用 -cluster 选项)来实现,一种方法是通过在群集配置文件中设置 imq.cluster.brokerlist 属性来实现。无论采用哪种方法,启动的每个代理都每隔五秒钟就尝试与其他代理连接;在主代理(如果已配置)启动后,连接就会成功。如果群集中的某个代理在主代理之前启动,它将保持暂停状态,并拒绝客户端连接,直到主代理启动为止;之后,暂停的代理将自动进入正常运行状态。

要通过命令行配置代理群集,请在启动群集中的每个代理时使用 imqbrokerd 命令的 -cluster 选项指定群集中代理的完整列表。例如,以下命令启动一个新代理,并将它连接到在 host1 默认端口 (7676) 上运行的代理、在 host2 端口 5000 上运行的代理以及在默认主机 (localhost) 端口 9876 上运行的代理:

imqbrokerd -cluster host1,host2:5000,:9876

有一种更适用于生产系统的替代方法,即创建一个群集配置文件,它使用 imq.cluster.brokerlist 属性来指定要连接的代理的列表。然后群集中的每个代理必须将其自身的 imq.cluster.url 属性设置为指向该群集配置文件。

无论使用哪种方法,必须确保给群集中任何代理分配的地址都不会解析到网络回送 IP 地址 (127.0.0.1)。任何配置了这个地址的代理将不能连接到群集中的其他代理。


注 –

某些 Linux 安装程序自动将 localhost 条目设置为网络回送地址。在这些系统上,您必须修改系统 IP 地址,以便为群集中的所有代理设置正确的地址。

在设置群集的过程中,应针对加入群集的所有 Linux 系统检查 /etc/hosts 文件。如果系统使用静态 IP 地址,请编辑 /etc/hosts 文件以指定 localhost 的正确地址。如果地址已向域名服务 (Domain Name Service, DNS) 注册,请编辑 /etc/nsswitch.conf 文件以更改条目的顺序,使系统在查阅本地 hosts 文件前先执行 DNS 查找。/etc/nsswitch.conf 文件中的行应显示为如下顺序:

hosts:dns files

如果要在群集中的代理之间以安全加密的方式传送消息,请配置 cluster 连接服务以使用基于 SSL 的传输协议。请按照消息加密中的说明,为群集中的各个代理设置基于 SSL 的连接服务。然后,将每个代理的 imq.cluster.transport 属性设置为 ssl。可以在群集配置文件中进行此设置,也可以为每个代理单独进行此设置。

在群集中添加代理

在群集中添加新代理的步骤取决于该群集是否使用群集配置文件。

Procedure向使用群集配置文件的群集添加新代理

  1. 将新代理添加到群集配置文件中的 imq.cluster.brokerlist 属性。

  2. 对群集中的任一代理执行以下命令:


    imqcmd reload cls

    该命令强制每个代理重新加载群集配置,从而确保群集中代理的所有持久性信息都是最新的。注意,不必对群集中的每个代理都执行此命令;对任一代理执行此命令都会使所有代理重新加载群集配置。

  3. (可选)在代理的 config.properties 文件中将 imq.cluster.url 属性的值设置为指向群集配置文件。

  4. 启动新代理。

    如果未执行在群集中添加代理,请使用 imqbrokerd 命令行中的 -D 选项设置 imq.cluster.url 的值。

向未使用群集配置文件的群集添加新代理

通过编辑 config.properties 文件或者使用 imqbrokerd 命令行中的 -D 选项设置以下属性的值:

从群集中删除代理

从群集中删除代理的方法取决于群集最初是通过命令行创建的,还是通过中央群集配置文件来创建的。

使用命令行删除代理

如果群集是通过在命令行中使用 imqbrokerd 命令由代理连接而成的,则必须停止每个代理,然后通过在命令行中指定一组新的群集成员来重新启动它们。过程如下所述:

Procedure使用命令行从群集中删除代理

  1. 使用 imqcmd 命令停止群集中的每个代理。

  2. 重新启动仍然保留在群集中的代理(使用 imqbrokerd 命令的 -cluster 选项,并仅仅指定那些要保留的代理)。

    例如,假设最初创建的群集包括代理 A、B、C,而且这三个代理是通过以下命令启动的:


    imqbrokerd -cluster A,B, C
    

    要从群集中删除代理 A,请使用以下命令重新启动代理 BC


    imqbrokerd -cluster B,C
    

使用群集配置文件删除代理

如果群集最初是通过在中央群集配置文件中使用 imq.cluster.brokerlist 属性指定其成员代理来创建的,则不必停止这些代理即可删除其中的某个代理。只需编辑配置文件来排除要删除的代理,强制群集中的其他代理成员重新加载群集配置,并重新配置被排除的代理,使它不再指向原来的群集配置文件。过程如下:

Procedure使用群集配置文件从群集中删除代理

  1. 编辑群集配置文件,从为 imq.cluster.brokerlist 属性指定的列表中删除要排除的代理。

  2. 对保留在群集中的每个代理执行以下命令:


    imqcmd reload cls

    该命令强制代理重新加载群集配置。

  3. 停止要从群集中删除的代理。

  4. 编辑该代理的 config.properties 文件,删除 imq.cluster.url 属性或为该属性指定其他值。