![]() | |
Sun Java System Message Queue 3.5 SP1 管理指南 |
第 5 章
启动与配置代理安装 Sun Java System Message Queue 以后,可以使用 imqbrokerd 命令来启动代理。代理实例的配置由一组配置文件和使用 imqbrokerd 命令传送的选项共同控制,这些选项会覆盖配置文件中相应的属性。
本章说明了 imqbrokerd 命令的语法,以及如何使用命令行选项和配置文件来配置代理实例。此外,本章还介绍了如何执行以下操作:
关于如何启动代理并将其用作 Windows 服务的说明,请参见“使用代理作为 Windows 服务”。
配置文件已安装代理的配置文件模板用于配置代理,这些模板所在目录随操作系统的不同而有所不同,如附录 A“Message Queue 数据的位置”所示。
该目录存储以下文件:
实例配置文件
首次运行一个代理时,系统将创建一个实例配置文件,用于指定该代理的实例的配置属性。实例配置文件存储在一个目录中,该目录用与此配置文件相关联的代理实例的名称 (instanceName) 标识(请参见附录 A“Message Queue 数据的位置”):
…/instances/instanceName/props/config.properties
实例配置文件由代理实例维护。使用管理工具更改配置时,此文件也将被修改。您还可以手动编辑实例配置文件来更改配置(请参见“编辑实例配置文件”)。要完成此操作,您必须是 …/instances/instanceName 目录的拥有者,或者以超级用户身份登录以便更改目录权限。
如果连接群集中的代理实例(请参见“多代理群集(企业版)”),那么可能还需要使用群集配置文件来指定群集配置信息。有关详细信息,请参见“群集配置属性”。
合并属性值
启动时,系统会合并不同配置文件中的属性值。它将使用在安装配置文件和实例配置文件中设置的值来覆盖默认配置文件中指定的值。您可以用 imqbrokerd 命令选项来覆盖得到的值。图 5-1 所示为以上说明的图解。
图 5-1 代理配置文件
属性命名语法
配置文件中的所有 Message Queue 属性定义均使用以下命名语法:
propertyName=value[[,value1]]
例如,下面的条目指定:在拒绝其他消息前,代理可以在内存和持久性存储器中最多保留 50,000 条消息:
imq.system.max_count=50000
下面的条目指定:将每天(86400 秒)创建一个新日志文件:
imq.log.file.rolloversecs=86400
表 5-1 按字母顺序列出了代理配置属性及其默认值。
编辑实例配置文件
首次运行代理实例时,系统将自动创建一个 config.properties 文件。您可以编辑该实例配置文件,以自定义相应代理实例的行为和资源使用。
代理实例仅在启动时读取 config.properties 文件。要永久更改 config.properties 文件,您可以:
- 使用管理工具。关于可以使用 imqcmd 设置的属性的信息,请参见表 6-4。
- 在代理实例关闭时编辑 config.properties 文件,然后重新启动实例。(在 Solaris 和 Linux 平台中,只有第一个启动代理实例的用户具有编辑 config.properties 文件的权限。)
表 5-1 按字母顺序列出了代理配置属性及其默认值。关于各个属性的含义和用法的更多信息,请参考指定的交叉参考的小节。
启动代理要启动代理实例,请使用 imqbrokerd 命令。
要覆盖一个或多个属性值,请指定有效的 imqbrokerd 命令行选项。命令行选项覆盖代理配置文件中的值,但仅对当前代理会话有效:命令行选项不会被写入到实例配置文件中。
imqbrokerd 命令的语法
imqbrokerd 命令的语法如下所示(选项与变量之间以一个空格分隔):
启动示例
下面的示例说明如何使用 imqbrokerd 命令。有关 imqbrokerd 命令行选项的更多详细信息,请参见表 5-2。
启动使用默认代理名称和配置的代理实例
使用以下命令:
imqbrokerd
该命令启动一个位于本地计算机上的代理(名为 imqbroker)的默认实例,且其端口映射器的端口号是 7676。
启动具有企业版试用许可证的代理实例
如果您具有平台版许可证,但希望试用企业版功能 90 天,那么您可以使用 -license 命令行选项并将 try 作为要使用的许可证进行传送,即可启用企业版试用许可证:
imqbrokerd -license try
每次启动代理实例时都必须使用此选项,否则默认情况下将回退到基本的平台版许可证。
启动具有插入持久性的已命名代理实例
要启动使用插入数据存储(请参见 附录 B“设置插入的持久性”)的名为 myBroker 的代理,并且此代理要求用户名和密码,请使用以下命令:
imqbrokerd -name myBroker -dbuser myName -dbpassword myPassword
imqbrokerd 选项概述
表 5-2 说明了 imqbrokerd 命令的选项以及受到各个选项影响的配置属性(如果存在)。
表 5-2 imqbrokerd 选项
选项
所影响的属性
说明
-backup fileName
不影响任何属性。
仅适用于代理群集。将主管代理的配置更改记录备份到指定的文件。请参见备份配置更改记录。
-cluster[broker1][[,broker2]]
其中 broker 可以是
将 imq.cluster.brokerlist 设置为要连接的代理的列表。
仅适用于代理群集。连接至指定的主机和端口上的所有代理。该列表将与 imq.cluster.brokerlist 属性中的列表合并。如果没有指定 host 的值,将使用 localhost。如果没有指定 port 的值,将使用值 7676。关于如何使用该选项连接多个代理的详细信息,请参见“使用群集(企业版)”。
-dbpassword password
将 imq.persist.jdbc.password 设置为指定密码
指定插入的 JDBC 兼容数据存储的密码。请参见附录 B“设置插入的持久性”.
-dbuser userName
将 imq.persist.jdbc.user 设置为指定的用户名
指定插入的 JDBC 兼容数据存储的用户名。请参见附录 B“设置插入的持久性”.
-Dproperty=value
设置系统属性。覆盖实例配置文件中的相关属性值。
将指定属性设置为指定值。关于代理配置属性,请参见表 5-1。
注意:请仔细检查使用 D 选项设置的属性的拼写和格式。如果传送了不正确的值,系统不会向您发出警告,Message Queue 将无法对这些属性进行设置。
-force
不影响任何属性。
执行操作,而无需用户确认。此选项仅用于-remove instance 和 -upgrade-store-nobackup 选项,通常要求确认。
-h|-help
不影响任何属性。
显示帮助。不执行命令行上的其他选项。
-javahome path
不影响任何属性。
指定替代 Java 2 兼容 JDK 的路径。默认使用捆绑的运行时。
-ldappasswordpassword
将 imq.user_repository.ldap.password 设置为指定的密码
指定访问 LDAP 用户信息库的密码。请参见“使用 LDAP 服务器管理用户信息库”。
-license [licenseName]
不影响任何属性。
指定装入一个与 Message Queue 产品版本的默认许可证不同的许可证。如果不指定许可证名称,该选项将列出系统中安装的所有许可证。根据所安装的 Message Queue 版本的不同,licenseName 的取值也不同:pe(平台版,只具有基本功能)、try(平台版的 90 天试用企业功能)和 unl(企业版)。请参见“产品版本”。
-loglevel level
将 imq.broker.log.level 设置为指定级别。
将日志记录级别指定为下列四项之一:NONE、ERROR、WARNING 或 INFO。默认值是 INFO。有关详细信息,请参见“日志记录器”。
-metrics interval
将 imq.metrics.interval 设置为指定秒数。
指定代理度量依据写入日志记录器的时间间隔(以秒为单位)。
-name instanceName
将 imq.instancename 设置为指定名称。
指定该代理的实例名称,并使用相应的实例配置文件。如果不指定代理名称,实例名将设置为 imqbroker。注:如果在同一台主机上运行了多个代理实例,每个实例必须具有唯一的名称。
-passfile fileName
将 imq.passfile.enabled 设置为 true。将 jmq.passfile.dirpath 设置为包含文件的路径。将 imq.passfile.name 设置为该文件名。
指定文件名,从该文件中可以读取 SSL 密钥存储、LDAP 用户信息库或 JDBC 兼容数据库的密码。有关详细信息,请参见“使用密码文件”。
-password keypassword
将 imq.keystore.password 设置为指定密码。
指定 SSL 证书密钥存储的密码。有关详细信息,请参见“安全性管理器”。
-port number
将 imq.portmapper.port 设置为指定端口号。
指定代理的端口映射器的端口号。默认情况下,该端口号设置为 7676。要在同一台服务器上运行两个代理实例,每个代理的端口映射器必须拥有不同的端口号。Message Queue 客户机使用此端口号连接到代理实例。
-remove instance
不影响任何属性。
导致代理实例被删除:删除与实例相关联的实例配置文件、日志文件、持久性存储库与其他文件和目录。除非指定 -force 选项,否则需要用户确认。
-reset store| messages|durables|props
不影响任何属性。
根据给定变量,重置代理实例的数据存储(或数据存储的子集)或配置属性。
重置数据存储将清除所有的持久性数据,包括持久性消息、长期订阅和事务信息。这使您可以启动一个完全清空的代理实例。也可以仅清除所有的持久性消息或仅清除所有的长期订阅。(如果不希望下次重新启动代理实例时重置持久性存储库,请勿使用 -reset 选项重新启动代理实例。)有关详细信息,请参见“持久性管理器”。
重置代理的属性,用一个空文件代替现有的实例配置文件 (config.properties):所有的属性将使用默认值。
-restore fileName
不影响任何属性。
仅适用于代理群集。用指定的备份文件替换主管代理的配置更改记录。该文件必须是原来用 -backup 选项创建的那个备份文件。请参见恢复配置更改记录。
-shared
将 imq.jms.threadpool_model 设置为 shared。
指定使用共享线程池模型来实现 jms 连接服务。在该模型中,连接之间共享线程,以增加代理实例支持的连接数量。有关详细信息,请参见“连接服务”。
-silent|-s
将 imq.log.console.output 设置为 NONE。
停止向控制台记录日志信息。
-tty
将 imq.log.console.output 设置为 ALL
指定在控制台上显示所有消息。默认情况下,只显示 WARNING 和 ERROR 级别的消息。
-upgrade-store-nobackup
不影响任何属性。
指定从不兼容版本升级到 Message Queue 3.5 或 Message Queue 3.5 SPx 将自动删除原有的数据存储。有关其他详细信息,请参见《Message Queue 安装指南》。
-version
不影响任何属性。
显示所安装产品的版本号。
-vmargs arg1 [[arg2]]
不影响任何属性。
指定传送到 Java VM 的变量。变量之间用空格分隔。如要传送多个变量,或是变量内包含空格,请使用闭合的引号。例如:imqbrokerd -tty -vmargs -Xmx128m -Xincgc
使用群集(企业版)本节介绍用于配置多代理群集的属性,并介绍了连接代理的两种方法,并说明如何管理群集。关于群集的介绍,请参见“多代理群集(企业版)”。
使用群集时,请确保同一个群集中所有代理的主机时钟处于同步状态(请参见“系统时钟设置”)。
群集配置属性
将代理连接到群集时,所有连接的代理必须指定为群集配置属性集。这些属性说明了群集中代理的合作。表 5-3 概述了与群集相关的配置属性。对于群集中的所有代理,标有星号 (*) 的属性必须具有相同值。
表 5-3 群集配置属性
属性名称
说明
imq.cluster.brokerlist*
指定群集中的所有代理。由 host:port 条目的列表(用逗号分隔各条目)组成,其中 host 是每个代理的主机名,port 是其端口映射器的端口号。例如: host1:3000, host2:8000, ctrhost
imq.cluster.masterbroker*
指定群集中哪个代理为记录状态更改的主管代理(如果存在)。该属性由 host:port 组成,其中 host 是主管代理的主机名,port 是其端口映射器的端口号。对生产环境设置该属性。例如,ctrhost:7676
imq.cluster.url*
指定代理配置文件的位置。此属性的适用情况:多个代理引用一个中心配置文件,而不是分别配置每个代理。由 URL 字符串组成:如果是在 Web 服务器上,可以使用标准的 http:URL 来访问。如果是在共享的驱动器上,可以使用 file:URL 来访问。
例如:http://webserver/imq/cluster.propertiesfile:/net/mfsserver/imq/cluster.properties
imq.cluster.port
用于为群集中的每个代理指定 cluster 连接服务的端口号。cluster 连接服务用于群集中代理之间的内部通信。 默认值:0(动态分配端口)
imq.cluster.hostname
对于群集中的每个代理,如果有多个主机可用(例如,一台计算机中安装了多个网络接口卡),cluster 连接服务将绑定到该属性指定的主机(主机名或 IP 地址)。cluster 连接服务用于群集中代理之间的内部通信。默认值:继承 imq.hostname 的值(请参见表 2-3)
imq.cluster.transport*
指定 cluster 连接服务要在群集中的代理之间进行内部通信所使用的网络传输。为了在代理之间传送安全、加密的消息,请将群集中所有代理的此属性设置为 ssl。默认值:tcp
可以使用以下两种方法之一来设置群集属性:
以下代码样例显示了群集配置文件的内容。host1 和 ctrlhost 都是在默认端口上运行。这些属性指定 host1、host2 和 ctrlhost 连接到一个群集中,并指定 ctrlhost 作为主管代理。
连接到此群集中的每个代理的实例配置文件都必须包含群集配置文件的 URL,例如:
连接代理
本节介绍如何将代理连接至群集以及如何配置群集,以在群集中的代理之间传送安全、加密的消息。
连接方法
将代理连接到群集一般有两种方法:使用群集配置文件连接,或不使用群集配置文件连接。
无论使用哪种方法,启动的每个代理将每隔五秒钟就尝试一次连接到其他代理。主管代理启动后,该尝试就会成功。如果群集中的某个代理在主管代理之前启动,该代理将保持暂停状态,拒绝客户机连接。主管代理启动后,暂停的代理将自动进入正常运行状态。
方法 1:不使用群集配置文件连接
将代理连接到群集
方法 2:使用群集配置文件连接
也可以创建一个群集配置文件,来指定要连接的代理列表(可选:指定主管代理的地址)。这种定义群集的方法更适合生产系统。如果使用此方法,必须将群集中的每个代理的 imq.cluster.url 属性值设置为指向群集配置文件。
安全的交叉代理连接
如果希望在群集的代理之间传送安全、加密的消息,您需要按照下面的步骤配置 cluster 连接服务,以使用基于 SSL 的传输协议。
配置群集内安全连接
- 对于群集中的各个代理,请设置基于 SSL 的连接服务。
请参见“设置通过 TCP/IP 的基于 SSL 的服务”中的说明。
- 将 imq.cluster.transport 群集配置属性设置为 ssl。
如果未使用群集配置文件,您需要为群集中的各个代理设置此属性。
管理群集中的代理
设置代理群集后,可能需要添加新代理、重新启动群集中原有的代理,或者从群集中删除代理。
将代理添加到群集
将新代理添加到现有群集
重新启动群集中的代理
如果群集中的代理因某种原因崩溃或关闭,您需要将其作为群集的成员重新启动。
重新启动现有群集的现有代理
从群集中删除代理
从现有群集中删除代理
管理主管代理的配置更改记录
每个群集都可以拥有一个主管代理,它将记录群集的持久性状态的所有更改。此状态包括长期订阅和管理员创建的物理目标等有关信息。所有的代理在启动时都会咨询主管代理(代理主管依次查询其配置更改记录),以同步关于这些持久性对象的信息。因此,主管代理的故障将使得类似同步变得不可能。其结果是,如果主管代理失败,那么您就无法创建或删除物理目标或长期订阅。
因为主管代理的配置更改记录包含着重要的信息,所以定期对其进行备份,并在出现故障时予以恢复,这一点非常重要。
以下几节介绍如何备份和恢复配置更改记录。
备份配置更改记录
备份配置更改记录
使用 imqbrokerd 命令的 -backup 选项。例如,
imqbrokerd -backup mybackuplog
请及时进行如上的备份操作,这很重要。恢复一个很旧的备份可能会导致丢失信息:最后一次完成备份后对物理目标或长期订阅的所有更改都将丢失。
恢复配置更改记录
万一发生故障时恢复主管代理
恢复代理将不可避免地导致某些过时的数据重新装入到代理的配置更改记录中。不过,只要经常进行前一小节所介绍的定期备份,可以将这个问题的影响减到最小。
因为主管代理记录对持久性对象的所有更改的历史记录,所以每过一段时间其数据库就会有显著的扩充。备份和恢复操作有利于压缩和优化该数据库。
日志记录本节介绍了代理的默认日志记录配置,并说明了如何更改该配置,从而将日志信息重定向到替代输出通道以及如何更改日志文件转移标准。关于日志记录的介绍,请参见“日志记录器”。有关使用日志记录报告代理度量依据的信息,请参见“监视工具”。
默认日志记录配置
启动代理时,系统自动将其配置为将日志输出保存到位于特定目录中的一组滚动生成的日志文件中,该目录的名称由与此日志文件相关联的代理实例的名称 (instanceName) 标识(请参见附录 A“Message Queue 数据的位置”):
/instances/instanceName/log/
日志文件是纯文本文件。它们的名称如下(从最早生成到最近生成):
log.txtlog_1.txtlog_2.txtlog_9.txt
默认情况下,日志文件每星期转移一次;系统维护九个备份文件。
代理支持三种日志种类:ERROR、WARNING 和 INFO(请参见表 2-7)。设置日志记录级别后,将收集所有高于和等于该级别的消息。默认日志级别是 INFO。这表示默认情况下将记录所有 ERROR、WARNING 和 INFO 消息。
日志消息格式
已记录的消息由时间戳(请参见表 2-9 了解如何更改时间戳时区)、消息代码和消息本身组成。信息的大小取决于所设置的日志级别。以下是一个 INFO 消息的示例。
[13/Sep/2000:16:13:36 PDT] B1004 Starting the broker service using tcp [ 25374,100] with min threads 50 and max threads of 500
更改日志记录器配置
表 2-9 说明了所有的日志记录器属性。
更改代理的日志记录器配置
可以通过设置日志记录器属性完成上述步骤。可以使用以下两种方法之一来进行设置:
在命令行上传送的选项将覆盖代理实例配置文件中指定的属性。表 5-4 列出了影响日志记录的 imqbrokerd 选项。
表 5-4 imqbrokerd 日志记录器选项及相应的属性
imqbrokerd 选项
说明
-metrics interval
指定度量依据信息写入日志记录器的时间间隔(以秒为单位)。
-loglevel level
设置日志级别为以下三项之一:ERROR、WARNING 或 INFO。
-silent
停止向控制台记录日志信息。
-tty
将所有消息发送到控制台。默认情况下,只显示 WARNING 和 ERROR 级别的消息。
以下小节介绍了如何更改默认配置,以执行以下操作:
更改输出通道
默认情况下,错误和警告消息除了记录到日志文件中以外,还会显示在终端上。(在 Solaris 中,错误消息还会写入到系统的 syslog 守护程序中。)
可以用以下方式更改日志消息的输出通道:
- 要在屏幕上显示所有的日志种类(对于给定的级别)输出,请在 imqbrokerd 命令中使用 -tty 选项。
- 要阻止在屏幕上显示日志输出,请在 imqbrokerd 命令中使用 -silent 选项。
- 使用 imq.log.file.output 属性指定将哪些种类的日志记录信息写入到日志文件。例如,
imq.log.file.output=ERROR
- 使用 imq.log.console.output 属性指定将哪些种类的日志记录信息写入到控制台。例如,
imq.log.console.output=INFO
- 在 Solaris 中,使用 imq.log.syslog.output 属性指定将哪些种类的日志记录信息写入到 Solaris syslog 中。例如,
imq.log.syslog.output=NONE
更改日志文件转移标准
转移日志文件有两个标准:时间和大小。默认是使用时间标准,每七天转移一次文件。
如果同时设置与时间相关和与大小相关的转移属性,首先达到的限制将触发转移。如前所述,代理最多维护九个转移文件。