通过 MQ 资源管理器连接容器中的远程队列管理器

Connect Remote Queue Manager in a container via MQ Explorer

我想通过 mq explorer 访问队列管理器,但出现错误:

为了让 mq explorer 能够访问 mq 服务器,我按照 https://www-01.ibm.com/support/docview.wss?uid=swg21623113 中的所有说明进行了操作,但仍然没有成功。

IBM MQ 服务器详细信息:

MQ Explorer 详细信息:

我希望在我的 MQ 服务器中收到错误消息以了解问题,但令人惊讶的是根本没有错误消息...

Screenshot

您没有说您的队列管理器 运行 是哪个版本的 IBM MQ。即 v7.5、v8.0、v9.0 或 v9.1。

您是否授予自己 CHLAUTH 使用 SYSTEM.ADMIN.SVRCONN 频道的权限?您很可能被后备规则阻止了。

此外,如果您使用的是 IBM MQ v8.0 或更高版本,那么 CONNAUTH 可能会阻止您。

这里有 2 个很好的链接可以帮助您解决问题。

https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/blocked_by_chlauth_why?lang=en

https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.mig.doc/q001110_.htm

您已尝试使用以下连接详细信息将 MQ Explorer 连接到队列管理器:-

  • 主机名或 IP 地址:0.0.0.0
  • 端口号:1417
  • 服务器连接通道:SYSTEM.ADMIN.SVRCONN

并且您收到了 return 代码 MQRC_HOST_NOT_AVAILABLE(2358),表示无法访问网络地址。

此错误的常见原因包括没有 TCP.IP 侦听器 运行 使用该端口,但您告诉我们您有一个侦听器 运行.

你使用的IP地址有问题。将 MQ Explorer 配置中的 IP 地址更改为队列管理器 运行 所在的实际 IP 地址。如果 MQ 资源管理器和队列管理器在同一台机器上(在同一容器中),您可以使用 localhost 主机名或 IP 地址 127.0.0.1,否则,请使用为机器分配的 IP 地址。从您的屏幕截图看来,这可能是一个 192.168.* 地址。

您已声明您的队列管理器运行在一个容器中,而您的 MQ Explorer 运行在另一个容器中。我注意到您提供了 0.0.0.0 作为您的主机名,但是 MQ Explorer 运行ning 所在的容器上没有队列管理器 运行ning!

如果您 运行 以下命令(替换为队列管理器 运行 容器的 ID),您应该获得 docker 子网上容器的 IP 地址.尝试在 MQ Explorer 中使用该 IP 地址而不是 0.0.0.0:

docker inspect --format "{{ .NetworkSettings.IPAddress }}" <QM container>

如果您的容器位于不同的 docker 网络上,那么您需要 运行 将以下内容替换为您为 docker 网络提供的名称:

docker inspect --format "{{ .NetworkSettings.Networks.<Network Name>.IPAddress }}" <QM container>

此外,当您创建队列管理器容器时,您是否记得公开您尝试使用的 1417 端口?默认情况下,mq-container 示例仅公开以下端口:1414、9157 和 9443。当您 运行 容器时,您需要公开端口,但在 [=26] 时提供 --publish-all --publish 1417 =] 容器。例如:

docker run -d -e LICENSE=accept --publish-all --publish 1417 ibmcom/mq