通过 MQ 资源管理器连接容器中的远程队列管理器
Connect Remote Queue Manager in a container via MQ Explorer
我想通过 mq explorer 访问队列管理器,但出现错误:
- 无法与队列管理器建立连接 - 原因 2538。(AMQ4059)
无法与队列管理器建立连接 - 原因 2538。(AMQ4059)
- 严重性:10(警告)
- 解释:尝试连接到队列管理器失败。这可能是因为队列管理器未正确配置为允许来自该系统的连接,或者连接已断开。
- 响应:重试该操作。如果错误仍然存在,请检查问题确定信息以查看是否已记录任何信息。
为了让 mq explorer 能够访问 mq 服务器,我按照 https://www-01.ibm.com/support/docview.wss?uid=swg21623113 中的所有说明进行了操作,但仍然没有成功。
IBM MQ 服务器详细信息:
- 版本:8
- OS:Centos
- 运行 在 docker 容器中
- 使用端口 1417,因为我的 1414 端口不可用于另一个 MQ 服务器
- 侦听器启动 运行 并指向端口 1417
- 频道的定义与我分享的 link 中描述的一样(我禁用了所有描述的安全功能)
- 我有一个示例 Java 应用程序,我可以 put/get 消息,它工作正常
MQ Explorer 详细信息:
- 另外 运行 在另一个 docker 容器中感谢
https://github.com/ibm-messaging/mq-container/tree/master/incubating/mq-explorer
- 我可以从 xterm 远程登录 MQ 服务器,所以没有关于连接的问题
- 虽然我禁用了所有安全功能,但我也尝试在服务器和我的 xterm 上创建相同的用户名,但它也没有用。
我希望在我的 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
我想通过 mq explorer 访问队列管理器,但出现错误:
- 无法与队列管理器建立连接 - 原因 2538。(AMQ4059) 无法与队列管理器建立连接 - 原因 2538。(AMQ4059)
- 严重性:10(警告)
- 解释:尝试连接到队列管理器失败。这可能是因为队列管理器未正确配置为允许来自该系统的连接,或者连接已断开。
- 响应:重试该操作。如果错误仍然存在,请检查问题确定信息以查看是否已记录任何信息。
为了让 mq explorer 能够访问 mq 服务器,我按照 https://www-01.ibm.com/support/docview.wss?uid=swg21623113 中的所有说明进行了操作,但仍然没有成功。
IBM MQ 服务器详细信息:
- 版本:8
- OS:Centos
- 运行 在 docker 容器中
- 使用端口 1417,因为我的 1414 端口不可用于另一个 MQ 服务器
- 侦听器启动 运行 并指向端口 1417
- 频道的定义与我分享的 link 中描述的一样(我禁用了所有描述的安全功能)
- 我有一个示例 Java 应用程序,我可以 put/get 消息,它工作正常
MQ Explorer 详细信息:
- 另外 运行 在另一个 docker 容器中感谢 https://github.com/ibm-messaging/mq-container/tree/master/incubating/mq-explorer
- 我可以从 xterm 远程登录 MQ 服务器,所以没有关于连接的问题
- 虽然我禁用了所有安全功能,但我也尝试在服务器和我的 xterm 上创建相同的用户名,但它也没有用。
我希望在我的 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