3

我即将为 Websphere MQ 生产环境准备一个部署规范。一如既往,我讨厌重新发明轮子,因此提出了一个问题:在部署和维护 Webshpere MQ 生产环境时,是否有文章说明最佳实践?

以下是我更具体的疑问:

  • 配置版本控制(MQSC、dmpmqcfg 等)。
  • 部署新对象(MQSC 还是手动说明?)
  • 部署自动化(可能基于 dmpmqcfg 的差异?)。
  • 部署和版本控制配置更改。

目前我只是手动创建 MQ 对象并对 dmpmqcfg 的输出进行版本控制。然而,在一段时间内会有太多的部署来处理它。

4

1 回答 1

3

这是一个非常广泛的问题,所以我会尝试在版主删除它之前做出回应。:-)

答案取决于很多事情,例如是否使用 MQ 集群、高可用性和灾难恢复的方法、安全要求、QMgrs 是配置为专用还是共享基础架构等。但是,我有一些模式我认为几乎在所有情况下都遵循,包括非生产。这是因为如果没有在 Dev 中进行测试并且在 Prod 中无法按预期工作,那么监控和安全性之类的东西往往会在部署时被丢弃。

  • 我使用脚本在生产环境中创建 QMgrs,以确保生成 X.509 证书(或 CSR)等基本操作始终按照标准完成,确保存在任何退出或退出 parm 文件,确保某些 SupportPac 可执行文件(q如存在于/opt/mqm/bin循环队列等中。它还会检查诸如未安装 GSKit 等负面因素。
  • 我有一个针对所有 QMgrs 运行的基线脚本。此脚本设置 DLQ、监视代理的任何队列、根据需要启用事件、设置系统服务、触发监视器、侦听器等。B2B 网关 QMgrs 例外,它们在一个类中单独处理并具有非常具体的配置不用于内部网络。簇。
  • 我有几类具有特定配置要求的 QMgr。其中包括集群存储库(其中主要和次要是不同的子类型)、服务提供者 QMgrs 和服务消费者 QMgrs。这些都有针对它们运行的​​辅助脚本。
  • 在使用集群的情况下,我有每个集群的脚本来加入或暂停 QMgr(自 v7.1 以来,这对我来说几乎是 100%)。

这些设置了 QMgr 的基础设施。然后我为每个应用程序维护脚本。因此,例如,如果有一个 Payroll 应用程序,我将有队列和可能的主题,其名称包含一个PAY节点,例如PAY.EMPLOYEE.UPDT.REQ.V032.PRD. PAY.**与此相对应的是所有队列的单个脚本。曾经也是setmqaut命令之一,但现在这些与对象在同一个脚本中。我只有一个版本的脚本并保留脚本更改的历史记录。这样,当我需要重新创建 QMgr 时,我只需为其运行所有脚本。同样,如果我需要PAY在另一个 QMgr 上部署对象,我只需将脚本复制到该服务器即可。

在为集群定义对象时,我总是会做一个DEFINE NOREPLACE包含所有运行时属性的操作,例如是否在集群中启用了队列。该队列始终在集群中定义为禁用并用于触发,但因为我使用NOREPLACE重新运行脚本不会改变它在一个月内的任何状态。那些是配置而不是运行时的东西,例如描述,会在ALTER之后立即处理,并且每次脚本运行时都会更新这些DEFINE内容。这里有一篇关于这个的文章。

最后,我使用的脚本是自执行的、自记录的。例如,许多人将所有 MQSC 命令放入脚本中,然后执行以下操作:

runmqsc < payroll.mqsc > payroll.out

这里有很多问题。主要的一点是它依赖于操作员的知识渊博,并且始终正确地执行脚本。例如,假设他忘记捕获输出?或者覆盖以前的输出?或者没有得到STDERR,因为(s)他需要2>&1在最后做并且不知道重定向那么好?

所以我的脚本都是用ksh处理所有输出的捕获,完成时间和日期标记,并且STDERR可以自由地将 MQSC 与操作系统命令等混合编写的。你所要做的就是转到该 QMgr 的脚本目录并. ./*ksh构建/重建一个质量管理器。

我当然也会定期进行配置转储,但这些更多用于运行查询和报告,例如“有多少 QMgrs 定义了这个通道,它们在哪里?” 之类的事情。

此外,在进行备份时,几乎没有充分的理由在某个时间点备份 QMgr。但是,如果需要,请务必先停止 QMgr。此外,请仔细考虑如何在备份中捕获证书。许多人擅长锁定证书目录,因此只能mqm读取它,但备份通常不受保护。只要您不尝试在 Production 上恢复,许多商店都允许您将 Production/var/mqm/*文件恢复到您自己的沙箱中。如果包含 QMgr 的 KDB 文件,您只是丢失了它们。另一种方法是将证书放在/etc受保护但未与 QMgr 的目录一起备份的其他目录中。

于 2013-01-05T20:12:34.600 回答