Fermer

septembre 28, 2019

Configuration de MQTT sur IBM MQ


Le 27 septembre 2019.

Parlons de la création de MQTT dans MQ v9.1.x. N'oubliez pas que les images sont cliquables pour une image plus nette.

Introduction

Le nom complet de MQTT est le protocole IBM MQ Telemetry v3 et il est utilisé pour la publication / sous-consommation légère entre des périphériques de faible empreinte sur des réseaux non fiables. Il utilise TCP / IP comme colonne vertébrale. Trois qualités de service (QoS) sont prises en charge: « tirez et oubliez », « au moins une fois » et « exactement une fois ».

I Je vais donner deux exemples de cas d’utilisation pour MQTT:

  1. Un gazoduc situé quelque part en profondeur en Alaska acheminant du gaz naturel du Grand Nord au continent américain. Des milliers de capteurs envoient en permanence leurs données à un serveur MQTT. Les données incluent la température, la densité de particules (pour la détection de fuite), la pression, etc. Un gestionnaire de files d'attente reçoit ces messages à intervalles réguliers et les distribue aux abonnés. Manquer un ensemble de messages n'est pas critique, un autre arrivera après un intervalle de temps. Dans ce cas, la qualité de service peut être réglée sur «déclencher et oublier» ou «au moins une fois».
  2. Les dispositifs médicaux au lit des patients situés à proximité des lits d'hôpitaux envoient des données similaires. La pression artérielle, le pouls et d'autres signes vitaux sont envoyés à intervalles réguliers (intervalles beaucoup plus courts si un patient est en soins intensifs). Cette fois, le fait de manquer d’un ensemble de données vitales pourrait indiquer une urgence et les réseaux dans les hôpitaux sont beaucoup plus fiables que dans la nature. Ainsi, dans ce cas, la qualité de service pourrait être réglée sur «une seule fois».

Étapes techniques

Comment configurer cela

Créer un gestionnaire de files d'attente

Tout d'abord, nous créons un gestionnaire de files d'attente qui gérera seul le trafic MQTT. Les raisons en sont données ci-dessous. C'est un gestionnaire de files d'attente habituel avec tous vos paramètres standard (y compris TLS comme décrit dans l'un de mes précédents messages).

Setup JAAS

Deuxièmement, si vous utilisez l'authentification LDAP vous allez Il est nécessaire de modifier un fichier de configuration du service d'authentification et d'autorisation Java ( JAAS ) pour MQTT.

Pour les systèmes de fichiers partagés (gestionnaires de files d'attente à plusieurs instances), ce sera ici:

/ shared / qmgrs / QM1 / mqxr / jaas.config

Pour les gestionnaires de files d'attente autonomes, le fichier sera ici:

/var/mqm/qmgrs/QM1/mqxr/jaas.config

Modifiez l'entrée à l'intérieur pour qu'elle ressemble à l'exemple suivant. Vous pouvez trouver ces informations dans votre objet d'authentification de connexion LDAP sur le gestionnaire de files d'attente:

MQXRConfig {
com.ibm.security.auth.module.LdapLoginModule REQUIRED
userProvider = ”ldaps: // ldap -server1.domain.com:535/ou=people,dc=unix,dc=domain,dc=com ldaps: //ldap-server2.domain.com: 535 / ou = personnes, dc = unix, dc = domaine, dc = com ”
userFilter =” (& (uid = {USERNAME}) (objectClass = inetPerson)) ”
debug = false;
}

Définir un service

. Ensuite, nous créons un service MQTT. Le nom doit être SYSTEM.MQXR.SERVICE . Les autres paramètres sont standard et sont fournis par l’installation de MQ:

CONTRÔLE DE CONTRÔLE DE SERVICE (SYSTEM.MQXR.SERVICE) (STARTONLY) + SERVTYPE (SERVEUR) + STARTCMD ('+ MQ_INSTALL_PATH + / mqxr / bin / runMQXRService.sh ') + STARTARG (' – m + QMNAME + -d “+ MQ_Q_MGR_DATA_PATH +” -g “+ MQ_DATA_PATH +” ') + STOPCMD (' + MQ_INSTALL_PATH + / mqxr / '') '+ STOPCMD (' + MQ_INSTALL_PATH + / mqxr / bin / endMQXRService.sh + STDOUT ('+ MQ_Q_MGR_DATA_PATH + / errors / mqxr.stdout') + STDERR ('+ MQ_Q_MGR_DATA_PATH + / errors / mqxr.stdout')

Ensuite, nous démarrons le service:

START SERVICE (SYSTEM). 19659002] À ce stade, j'ai jugé nécessaire de redémarrer MQ Explorer (MQE) pour pouvoir accéder au service et permettre la navigation dans le dossier Télémétrie.

Définition d'un canal

L'étape suivante consiste à définir un canal. Notez que vous aurez besoin d’un port par canal. Notez également que SSLCAUTH (NEVER) configure une authentification unidirectionnelle. Définissez SSLCAUTH (REQUIRED) pour activer l'authentification bilatérale ou mutuelle:

DEFINE CHANNEL ('QM1.MQTT') CHLTYPE (MQTT) TRPTYPE (TCP) PORT (1884) LOCLADDR ('') BACKLOG (4096) + MCAUSER (406) '') USECLTID (NO) SSLCIPH ('SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384') SSLCAUTH (JAMAIS) + JAASCFG ('MQXRConfig') SSLKEYR ('/ var / mqm / qmg) PROTOCOL ('HTTP, MQTTV311') remplace

Définition de la file d'attente de transmission par défaut

La dernière étape consiste à définir la file d'attente de transmission par défaut du gestionnaire de files d'attente sur SYSTEM.MQTT.TRANSMIT.QUEUE :

ALTER QMGR DEFXMITQ (SYSTEM.MQTT.TRANSMIT.QUEUE)

Après le démarrage du service et du canal, vous êtes prêt à utiliser MQTT pub / sub.

MQTT Subscriptions

Pour passer à la phase suivante, il nous faut un peu de théorie.

Les abonnements MQTT peuvent fonctionner de deux manières.

  1. Définissez SYSTEM.MQTT.TRANSMIT.QUEUE comme file d'attente de transmission par défaut. e sur le gestionnaire de files d'attente.
  2. Créez un alias de gestionnaire de files d'attente portant le même nom que l'identifiant du client. L'identifiant du client doit également être le nom d'un gestionnaire de files d'attente distant. Un alias de gestionnaire de file d'attente est une définition de file d'attente distante permettant aux administrateurs de rediriger les messages.

Exemple d'installation MQTT:

DEFINE QREMOTE (mike123) RNAME ('') RQMNAME (mike123) XMITQ (SYSTEM.MQTT.TRANSMIT.QUEUE)

L'approche deux est fastidieuse à mettre en place et fastidieuse à administrer. Vous aurez besoin d'au moins un alias de gestionnaire de files d'attente pour chaque compte professionnel souhaitant utiliser des abonnements. Cela pourrait se transformer en un cauchemar de micro-gestion lorsque des centaines de comptes sont impliqués. Cette approche présente un avantage: un accès contrôlé pour ceux qui peuvent souscrire.

La première approche est une bien meilleure option, mais nous devons éviter un récif. Si un gestionnaire de files d'attente ne faisant pas partie d'un cluster place un message sur une file d'attente distante, l'action par défaut consiste à utiliser la file d'attente de transmission par défaut. Dans l'approche I., cette file d'attente sera définie comme suit: SYSTEM.MQTT.TRANSMIT.QUEUE . Maintenant, un scénario est possible lorsqu'une file d'attente distante est définie sans qu'une file d'attente de transmission ne soit définie et que le gestionnaire de files d'attente utilise la file d'attente de transmission par défaut. Un message, non destiné à MQTT, sera envoyé aux abonnés MQTT. Pour cette raison, un gestionnaire de files d'attente dédié est conseillé pour les configurations MQTT.

Utilisation de MQ Explorer

Dans MQE, vous pouvez voir et administrer les objets que nous avons créés. Quelques captures d'écran.

Canal MQTT:

Service MQTT:

MQTT Utilities

Il y a encore Vous pouvez tester votre configuration en fonction de la fumée.

Un utilitaire client MQTT peut être lancé à partir de MQE:

[19659000]

. navigateur peut être dirigé vers le nom d’hôte et le port de la chaîne. Par exemple, si votre gestionnaire de files d'attente s'exécute sur nomhôte.domaine.com et que vous avez créé un canal MQTT sur le port 1884, utilisez l'URL suivante: https://nomhôte.domaine.com:1884 .

Vous pouvez utiliser les deux utilitaires pour créer un sujet, envoyer un message et le recevoir via un abonnement.

Amusez-vous!




Source link