2
votes

Connecter Remote Queue Manager dans un conteneur via MQ Explorer

Je souhaite accéder au gestionnaire de files d'attente via l'explorateur mq mais j'obtiens une erreur:

  • Impossible d'établir une connexion avec le gestionnaire de files d'attente - raison 2538. (AMQ4059) Impossible d'établir une connexion au gestionnaire de files d'attente - raison 2538. (AMQ4059)
  • Gravité: 10 (avertissement)
  • Explication: La tentative de connexion au gestionnaire de files d'attente a échoué. Cela peut être dû au fait que le gestionnaire de files d'attente n'est pas correctement configuré pour autoriser une connexion à partir de ce système ou que la connexion a été interrompue.
  • Réponse: essayez à nouveau l'opération. Si l'erreur persiste, examinez les informations de détermination du problème pour voir si des informations ont été enregistrées.

J'ai suivi toutes les instructions de https: // www-01 .ibm.com / support / docview.wss? uid = swg21623113 afin de permettre à mq explorer d'accéder au serveur mq mais toujours pas de chance.

Détails du serveur IBM MQ:

  • Version: 8
  • Système d'exploitation: Centos
  • Exécution dans un conteneur Docker
  • Utilisation du port 1417 car mon port 1414 n'est pas disponible pour un autre serveur MQ
  • Listener est un port 1417 en fonctionnement et pointant
  • La chaîne est définie telle qu'elle est décrite dans le lien que j'ai partagé (j'ai désactivé toutes les fonctionnalités de sécurité telles qu'elles sont décrites)
  • J'ai un exemple d'application Java que je peux mettre / obtenir des messages et cela fonctionne bien

Détails de MQ Explorer:

  • Exécution également dans un autre conteneur de docker grâce à https://github.com/ibm-messaging/ mq-container / tree / master / incubating / mq-explorer
  • Je peux telnet MQ Server à partir de xterm donc il n'y a pas de problème de connectivité
  • Bien que j'ai désactivé toutes les fonctionnalités de sécurité, j'ai également essayé de créer le même nom d'utilisateur sur le serveur ainsi que sur mon xterm, mais cela n'a pas fonctionné non plus.

Je m'attendais à recevoir un message d'erreur sur mon serveur MQ pour comprendre le problème, mais étonnamment, il n'y a aucun message d'erreur ...

Capture d'écran


11 commentaires

Quelle version de MQ v8 utilisez-vous pour le gestionnaire de files d'attente (par exemple 8.0.0.3 ou 8.0.0.11)? Vérifiez que DIS QMGR CHLEV est réglé sur ENABLED si ce n'est pas le cas, puis activez-le avec ALTER QMGR CHLEV (ENABLED) . Reproduisez l'échec et vérifiez que tous les messages sont générés dans la file d'attente SYSTEM.ADMIN.CHANNEL.EVENT . Si vous voyez des messages, exécutez ceci: / opt / mqm / samp / bin / amqsevt -m QMGRNAME -q SYSTEM.ADMIN.CHANNEL.EVENT . Regardez les derniers messages pour voir s'ils correspondent à votre MQ Explorer et expliquez pourquoi vous constatez un échec.


Le commentaire de @JoshMc et la réponse de Roger suggèrent que vous rencontrez des problèmes de sécurité, mais le code anomalie 2358 est MQRC_HOST_NOT_AVAILABLE, vous devriez donc vérifier votre connectivité. Vous avez suggéré que vous n'aviez pas de problèmes de connectivité parce que vous pouvez telnet vers le QMgr - ce telnet provient-il du même conteneur de machine / docker que celui dans lequel s'exécute MQ Explorer? Vous ne nous montrez pas une capture d'écran de vos paramètres de connexion MQ Explorer - nous pouvons seulement supposer que vous avez entré le bon port là-bas?


@JoshMc, merci beaucoup pour les conseils! J'ai suivi vos recommandations et comme vous l'avez mentionné, un enregistrement est apparu dans la file d'attente SYSTEM.ADMIN.CHANNEL.EVENT . Malheureusement, je n'ai pas de script amqsevt . J'ai un dossier / opt / mqm / samp mais pas de dossier bin . Je vérifie également le dossier / opt / mqm / bin mais pas de chance. J'essaierai de trouver amqsevt . Merci beaucoup pour la pointe!


@JoshMc, je devrais vous dire mes étapes car j'ai le sentiment que le message dans la file d'attente n'est peut-être pas lié à mon problème. J'ai changé la valeur de CHLEV dans mon gestionnaire de files d'attente et j'ai essayé de me connecter à nouveau depuis mq explorer. Rien ne s'est passé. Ensuite, j'ai pensé que je devais redémarrer mon gestionnaire de files d'attente, ce que j'ai fait. Ensuite, j'ai démarré mon auditeur et j'ai pensé que je devrais également démarrer ma chaîne car c'était nécessaire pour la file d'attente distante, alors j'ai pensé que cela pourrait également être une exigence pour mq explorer. Quoi qu'il en soit, je pense que le message dans SYSTEM .ADMIN.CHANNEL.EVENT provient probablement de ma commande de canal de démarrage :(


@JoshMc, je viens d'arrêter / démarrer ma chaîne et le nombre de messages devient 3


@MoragHughson, je viens d'ajouter une capture d'écran. En haut à droite: Xterm, j'ai fait du telnet à partir de cette fenêtre vers 0.0.0.0 1417 | En bas à droite: connexion au serveur MQ | Gauche: fenêtre MQ Explorer qui s'ouvre grâce à XQuartz


Que faites-vous pour vous assurer que le conteneur de l'explorateur peut accéder au conteneur du gestionnaire de files d'attente sur le port 1417?


Et vous avez raison, toute commande de démarrage ou d'arrêt contre un canal entraînera la génération d'un message d'événement de canal. Généralement, un canal SVRCONN est dans un état INACTIF ce qui signifie qu'il est prêt à recevoir une connexion, le seul moment où vous auriez besoin pour démarrer un SVRCONN est s'il était dans un état STOPPED parce que vous l'avez précédemment arrêté.


Si vous parvenez à démarrer une bash à la fois dans le gestionnaire de files d'attente et dans le conteneur de l'explorateur MQ, un meilleur test consiste à effectuer le telnet sur l'explorateur MQ en ciblant la même adresse IP et le même port que vous spécifiez dans MQ Explorer, en supposant que cela se connecte correctement, alors allez dans le gestionnaire de files d'attente bash et exécutez netstat -an | grep 1417 et recherchez une connexion ESTABLISHED , si vous n'en voyez pas, votre connexion depuis le conteneur de l'explorateur MQ est ne pas accéder au conteneur du gestionnaire de files d'attente.


Qu'est-ce que l'adresse IP 0.0.0.0? Êtes-vous sûr que c'est la bonne adresse IP que vous devriez utiliser?


Vous ne verrez aucune erreur enregistrée dans le gestionnaire de files d'attente pour ce cas d'erreur particulier, car le client (MQ Explorer) n'atteint pas votre gestionnaire de files d'attente comme indiqué par le code de retour MQRC_HOST_NOT_AVAILABLE (2358).


3 Réponses :


0
votes

Vous ne dites pas sous quelle version d'IBM MQ votre gestionnaire de files d'attente s'exécute. c'est-à-dire v7.5, v8.0, v9.0 ou v9.1.

Vous êtes-vous donné à CHLAUTH l'autorisation d'utiliser le canal SYSTEM.ADMIN.SVRCONN? Il est fort probable que vous soyez bloqué par la règle du backstop.

De plus, si vous utilisez IBM MQ v8.0 ou supérieur, alors CONNAUTH pourrait vous bloquer.

Voici deux bons liens pour vous guider à travers votre problème.

https://www.ibm.com / developerworks / community / blogs / aimsupport / entry / bloqué_by_chlauth_why? lang = fr

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


2 commentaires

La version MQ est 8.0.0.4. Dans le lien que j'ai partagé ( www-01.ibm.com/support /docview.wss?uid=swg21623113 ), il recommande: * c. Pour MQ 7.1 et versions ultérieures, et si vous devez autoriser les connexions à distance par un administrateur MQ. * ré. Pour MQ 8.0 et versions ultérieures, et si vous souhaitez que le mot de passe soit facultatif pour un administrateur MQ. * J'ai fait les deux donc CONNAUTH n'est pas un problème pour moi mais je vais jeter un œil à votre lien au cas où je pourrais attraper quelque chose. Merci beaucoup pour la réponse


Je viens de lire les liens mais ils sont tous liés si CHLAUTH (ENABLED) ce n'est pas le cas pour moi.



1
votes

Vous avez tenté de connecter votre MQ Explorer à votre gestionnaire de files d'attente à l'aide des détails de connexion suivants: -

  • Nom d'hôte ou adresse IP: 0.0.0.0
  • Numéro de port: 1417
  • Canal de connexion au serveur: SYSTEM.ADMIN.SVRCONN

et vous avez reçu le code retour MQRC_HOST_NOT_AVAILABLE (2358) qui indique que l'adresse réseau n'est pas joignable.

Les raisons courantes de cette erreur incluent le fait de ne pas avoir d'écouteur TCP.IP en cours d'exécution sur ce port, mais vous nous avez dit que vous avez un écouteur en cours d'exécution.

L'adresse IP que vous avez utilisée est le problème. Remplacez l'adresse IP de votre configuration MQ Explorer par l'adresse IP réelle sur laquelle le gestionnaire de files d'attente est exécuté. Si MQ Explorer et Queue Manager sont sur la même machine (dans le même conteneur), vous pouvez utiliser le nom d'hôte localhost ou l'adresse IP 127.0.0.1, sinon, veuillez utiliser l'adresse IP attribuée pour la machine. D'après votre capture d'écran, il semble qu'il s'agisse d'une adresse 192.168. *.


5 commentaires

0.0.0.0 semble être une référence docker à l'adresse IP réelle de l'hôte d'après ce que j'ai lu. À moins que vous ne disiez à docker de router un port hôte vers l'IP du docker, ce n'est pas le cas.


Sur un hôte Linux normal, 0.0.0.0 est passé à 127.0.0.1 pour moi.


Sous Windows, il ne semble pas être configuré par défaut.


Vous ne savez pas si vous pensez que c'est le problème ou non?


Je pense que cela a peut-être à voir avec les ports de conteneurs qui sont exposés ou non.



2
votes

Vous avez indiqué que vos gestionnaires de files d'attente s'exécutent dans un conteneur et que votre MQ Explorer s'exécute dans un autre conteneur. J'ai remarqué que vous avez fourni 0.0.0.0 comme nom d'hôte, mais le conteneur dans lequel MQ Explorer est exécuté ne comporte aucun gestionnaire de files d'attente!

Si vous exécutez la commande suivante (en remplaçant par l'ID du conteneur exécutant votre file d'attente managers), vous devez obtenir l'adresse IP du conteneur sur le sous-réseau docker. Essayez d'utiliser cette adresse IP dans MQ Explorer au lieu de 0.0.0.0:

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

Si votre conteneur est sur un autre réseau docker, vous devrez exécuter le remplacement suivant par le nom vous avez donné au réseau docker:

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

De plus, lorsque vous avez créé votre conteneur de gestionnaire de files d'attente, vous êtes-vous souvenu d'exposer le port 1417 que vous essayez d'utiliser? Par défaut, l'exemple mq-container expose uniquement les ports suivants: 1414, 9157 et 9443. Lorsque vous exécutez le conteneur, vous devez exposer les ports mais en fournissant --publish-all - -publier 1417 lorsque vous avez exécuté le conteneur. Par exemple:

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


2 commentaires

Merci beaucoup Rob! Cela a résolu mon problème. Pour être clair, j'ai déjà publié le port 1417 sur mon hôte mais j'utilisais 0.0.0.0 au lieu de 172.17.0.2


Heureux de l'entendre résolu votre problème. Ce document de débordement de slack détaille ce qu'il faut faire lorsque quelqu'un répond à une question et comment marquer le problème comme résolu: stackoverflow.com/help/someone- réponses Dans ce cas, vous devez "accepter" cette réponse pour montrer qu'elle a résolu votre problème.