了解如何部署一个 App Connect 工具包集成,使其与私有网络中的 IBM® MQ 队列管理器进行交互。
准备工作
要完成本教程,您需要一个包含与 IBM MQ 队列管理器交互的消息流的BAR文件。 App Connect 工具包中的“教程库”包含多个涉及 IBM MQ 的教程。 打开教程库,在搜索框中输入 MQ 。 如需更多信息,请参阅文档 教程 IBM App Connect Enterprise 中的 App Connect Enterprise 相关内容。
关于本任务
在这种情况下,您要部署一个工具包集成,其中包含一个与队列管理器交互的消息流。 IBM MQ 服务器部署在私有网络中(例如,位于本地系统防火墙之后)。 因此,您需要配置 App Connect ,以便通过私有网络连接安全地访问该服务器。
要配置 App Connect 与 IBM MQ 之间的私有网络连接,请将 App Connect Enterprise 中的集成服务器用作安全代理。 安全代理会连接到在您的 App Connect 实例中运行的交换机服务器。 交换服务器启用端口转发,通过 SSH 通道将连接导向远程数据库端口和主机。
IBM MQ 使用以下机制来访问一个或多个队列管理器。
client channel definition table (CCDT) 列出了可以连接的队列管理器。
mqccred 安全出口允许每个系统使用不同的密码。
要为消息流配置队列管理器连接,您需要部署带有以下配置的 BAR 文件,这些配置提供了必要的连接信息。
mqccdt 配置包含 JSON 格式的 CCDT,为队列管理器提供客户端连接通道定义。
mqccred.ini 配置包含要在 mqccred 安全出口中传递的 CCDT 中队列管理器的用户 ID 和密码。 mqccred 安全退出需要在 CCDT 文件中引用。
Policy project 配置包含一个策略项目,该项目引用 CCDT 并包含一个策略,该策略包含与队列管理器的连接详情。
setdbparms.txt 配置包含连接队列管理器的凭证。
Private Network Agent 配置包含端口转发的连接详情。 该配置使用 switchclient.json 文件提供远程连接的主机、端口和证书详细信息,以及交换机服务器位置和证书的详细信息。
本教程介绍如何配置专用网络连接和部署集成。 前两个步骤介绍了如何创建集成服务器并将其配置为安全代理。 然后,其他运行时可以使用该安全代理跨专用网络进行连接。 以下步骤还介绍了如何在创建集成运行时之前创建配置,但也可以在创建运行时创建配置。
过程
- 在 App Connect Enterprise 12.0.7.0 或更高版本中,通过在 App Connect Enterprise 命令环境中运行 mqsicreateworkdir 命令创建集成服务器。
该命令会为集成服务器创建一个工作目录,其中包含一个名为
server.conf.yaml 的默认配置文件。 此 YAML 文件包含新集成服务器的默认设置。 (更多信息,请参阅
mqsicreateworkdir 命令的
App Connect Enterprise 文档中的 mqsicreateworkdir 命令)
- 将 App Connect Enterprise 集成服务器配置为安全代理。
- 在 App Connect 中,在导航面板中展开连接
,单击专用网络 ,然后单击创建。
- 打开新的专用网络连接旁边的菜单
,然后单击查看设置说明。
- 在
下载安全代理配置
步骤中,选择操作系统,然后单击下载配置。安全代理的配置文件 (switchclient.json) 已下载到计算机上的某个位置。
- 编辑该 switchclient.json 文件,将主机名(或 IP 地址) IBM MQ 及其端口添加到数组
endpoints 中,如下例所示。
{
"id": "fbda61eb-0e17-4bd2-a61d-9d202c1b2303",
"admin": "enabled",
"callableFlow": "enabled",
"endpoints": [
{
"name": "My MQ endpoint descriptive name",
"hostname": "192.0.2.24",
"port": 1414,
"useTLS": false,
"certs": {
"key": "",
"cert": "",
"ca": [
""
],
"rejectUnauthorized": true
}
}
],
"switch": {
"url": "wss://default-switch-server-switch-abcdefgh1jg.apps.appc-c-vir-d1.vz8y.p1.abc.com:443",
"certs": {
"key": "-----BEGIN PRIVATE KEY-----\nxxx\n-----END PRIVATE KEY-----\n",
"cert": "-----BEGIN CERTIFICATE-----\nyyy\n-----END CERTIFICATE-----\n",
"ca": [
"-----BEGIN CERTIFICATE-----\nzzz\n-----END CERTIFICATE-----\n"
],
"rejectUnauthorized": true
}
},
"displayName": "pnc-wed-14-jun-2023-07-25-14-gmt-553"
}
- 将更新后的 switchclient.json 文件移至先前创建的 App Connect Enterprise 集成服务器的 workdir/config/switch 目录。
- 启动 App Connect Enterprise 集成服务器。
集成服务器 App Connect Enterprise 集成服务器现在已连接到实例中的交换服务器。 App Connect 实例。
- 在 App Connect 中创建
Private network agent 配置,配置端口转发。端口转发将来自本地监听端口的连接重定向到 IBM MQ 服务器正在监听的远程端口。
- 将上一步更新的 switchclient.json 文件副本保存到临时位置。 请注意该文件中的
hostname 和 port 值,因为您需要在后面的步骤中将它们添加到 listeners 数组中。
- 编辑文件,删除
id, admin, callableFlows 和 endpoints 部分。下面的示例显示了
switchclient.json 文件现在如何包含
switch 和
displayName 部分。
{
"switch": {
"url": "wss://default-switch-server-switch-abcdefgh1jg.apps.appc-c-vir-d1.vz8y.p1.abc.com:443",
"certs": {
"key": "-----BEGIN PRIVATE KEY-----\nxxx\n-----END PRIVATE KEY-----\n",
"cert": "-----BEGIN CERTIFICATE-----\nyyy\n-----END CERTIFICATE-----\n",
"ca": [
"-----BEGIN CERTIFICATE-----\nzzz\n-----END CERTIFICATE-----\n"
],
"rejectUnauthorized": true
}
},
"displayName": "pnc-wed-14-jun-2023-07-25-14-gmt-553"
}
- 在文件第一个大括号后直接插入以下
listeners 数组。
"listeners": [{
"localPort": localPortNumber,
"remoteHostname": "remoteHost",
"remotePort": remotePortNumber
}],
localPortNumber 是您选择的本地端口号,所有与专用网络上远程队列管理器端口的连接都将通过该端口转发。
remoteHost 是预先编辑过的 switchclient.json 文件中 IBM MQ 的主机名或IP地址。
remotePortNumber 是预编辑 switchclient.json 文件中 IBM MQ 的端口号。
下面的示例显示了一个已完成的文件。 在本例中,本地端口 9000 的连接被转发到队列管理器主机 192.0.2.24 所监听的远程端口 1414。
{
"listeners": [{
"localPort": 9000,
"remoteHostname": "192.0.2.24",
"remotePort": 1414
}],
"switch": {
"url": "wss://default-switch-server-switch-abcdefgh1jg.apps.appc-c-vir-d1.vz8y.p1.abc.com:443",
"certs": {
"key": "-----BEGIN PRIVATE KEY-----\nxxx\n-----END PRIVATE KEY-----\n",
"cert": "-----BEGIN CERTIFICATE-----\nyyy\n-----END CERTIFICATE-----\n",
"ca": [
"-----BEGIN CERTIFICATE-----\nzzz\n-----END CERTIFICATE-----\n"
],
"rejectUnauthorized": true
}
},
"displayName": "pnc-wed-14-jun-2023-07-25-14-gmt-553"
}
- 使用已编辑的 switchclient.json 文件创建
Private network agent 配置。
- 在 App Connect 的 " 管理 " 页面,单击 " 配置 ",然后单击 " 创建配置 "。
- 在类型中,选择专用网络代理并输入配置名称。
- 将 switchclient.json 的内容粘贴到专用网络代理部分。
- 单击创建。
- 创建
mqccdt 配置,其中包含集成运行时需要连接的队列管理器的客户端连接通道定义。 该配置类型需要一个 JSON CCDT 文件。
- 在 IBM MQ 服务器上,创建一个 JSON CCDT 文件 (mqccdt.json)。
请指定通道名称、通道描述、队列管理器名称以及 TLS 的定义。 将队列管理器主机设置为本地主机(localhost ),并将端口设置为上一步中 switchclient.json 文件中的 localPort 值。
下面的示例显示了 JSON CCDT 文件的典型格式。
{
"channel":
[
{
"name": "channelName",
"type": "clientConnection",
"general":
{
"description": "channelDescription"
},
"clientConnection":
{
"queueManager": "queueManagerName",
"connection":
[
{
"host": "localhost",
"port": localPort
}
]
},
"transmissionSecurity":
{
"cipherSpecification": "ANY_TLS12_OR_HIGHER"
},
"exits":
{
"security":
{
"name": "mqccred(ChlExit)",
"userData": "DEBUG,NOCHECKS"
}
}
}
]
}
下面的示例显示了一个已完成的文件。
{
"channel":
[
{
"name": "CLOUD.APP.SVRCONN",
"type": "clientConnection",
"general":
{
"description": "An SSL channel"
},
"clientConnection":
{
"queueManager": "pslMQMgr",
"connection":
[
{
"host": "localhost",
"port": 9000
}
]
},
"transmissionSecurity":
{
"cipherSpecification": "ANY_TLS12_OR_HIGHER"
},
"exits":
{
"security":
{
"name": "mqccred(ChlExit)",
"userData": "DEBUG,NOCHECKS"
}
}
}
]
}
- 在 App Connect 中,创建
mqccdt 配置并粘贴 JSON CCDT 文件的内容。
- 创建一个包含用于对
mqccred.iniIBM MQ 队列管理器进行身份验证的用户ID和密码的配置。 这种配置类型需要 mqccred.ini 文件。
- 在 mqccred.ini 文件中,指定 JSON CCDT 文件中的队列管理器名称和身份验证凭据。
Force=TRUE 设置会将应用程序提供的用户 ID 和密码替换为 mqccred.ini 文件中的值。
下面的示例显示了
mqccred.ini 文件的典型格式。
QueueManager:
Name=queueManagerName
User=userID
OPW=password
Force=TRUE
下面的示例显示了一个已完成的文件。
QueueManager:
Name=MYQMGR
User=daddio
OPW=t0psecret
Force=TRUE
- 在 App Connect 中,创建
mqccred.ini 配置并粘贴 mqccred.ini 文件的内容。
- 创建一个包含
Policy projectIBM MQ 队列管理器策略项目的配置。 策略项目引用了 CCDT,并包含一个包含队列管理器连接详细信息的策略。 这种配置类型需要在 .zip 文件中设置策略项目。
- 在 App Connect Enterprise 工具包中,创建
MQEndpoint 策略。
- 将策略项目添加到 .zip 文件。
- 在 App Connect 中,创建
Policy
project 配置并导入包含策略项目的 .zip 文件。
- 创建
setdbparms.txt 配置,其中包含用于连接队列管理器的身份验证凭据。这种配置类型需要
setdbparms.txt 文件。
setdbparms.txt 文件包含一条或多条
mqsisetdbparms 命令。 (更多信息,请参阅
mqsisetdbparms 命令。
App Connect Enterprise 文档中的
- 在 setdbparms.txt 文件中,定义队列管理器的身份验证凭据。
下面的示例显示了文件内容的格式示例。
mqsisetdbparms --work-dir /home/aceuser/ace-server/ --resource mq::mqcred -u myUserID -p myPassword
- 在 App Connect 中,创建
setdbparms.txt 配置,并导入包含队列管理器身份验证凭据的 setdbparms.txt 文件。
- 将 App Connect Enterprise 信息流打包成 BAR 文件。
(更多信息,请参阅
创建 BAR 文件的
App Connect Enterprise 文件)
- 在 App Connect 中,部署 BAR 文件。
- 在管理页面
上,单击 BAR 文件 ,然后单击导入 BAR 文件。
- 拖动或选择 BAR 文件,然后单击导入。
- 打开导入的 BAR 文件旁边的菜单
,然后单击 " 部署 "。
- 选择现有集成运行时,或单击创建运行时创建一个。
- 在 "配置 "页面,选择您创建的配置 (
Private network agent, mqccdt, mqccred.ini, Policy project, 和 setdbparms.txt)。
- 单击 " 下一步 ",然后单击 " 部署 "。
结果
您的 App Connect Enterprise 工具包信息流已部署完毕,可随时进行测试。 您使用 BAR 文件部署的配置提供了连接和身份验证详细信息,用于通过私有网络安全地连接到 IBM MQ 队列管理器。
要诊断私有网络连接问题,请在导航窗格中展开
“连接 ”,然后单击 “切换服务器 ”。 如需更多信息,请参阅 “私有网络连接故障排除 ”。