Guide Share MQ HA & Appliance 26/09/2017 26/09/2017
Vue d’ensemble HA Fonctionnement nominal Appliance M2001 A Appliance M2001 A Réplication synchrone QM A QM B QM C QM A QM B QM C HA Group HA Group QM D Non HA Bascule transparente pour les applications
Vue d’ensemble HA Vue client MQ vers QMGR QMA Appliance M2001 A Appliance M2001 A Réplication synchrone QM A QM A QM A HA Group HA Group IP Flottante (VIP) MQ Clients QM A
Les Avantages de la solution Appliance Stockage intégré et accès rapide (SSD 3.2 To) Mise à niveau simplifiée pour l’ensemble des QMGR’s via l’installation d’un firmware (en mode HA, aucune interruption de service) Maintenance simplifiée Les applications sont indépendantes de l’infrastructure HA Sécurisation des données (réplication) Service assuré 24h/24 7j/7 Aucun élément externe à ajouter pour assurer le fonctionnement
Les Inconvénients de la solution Appliance Séparation des environnements dns (1 seul stack IP) Mise à jour obligatoire tous les 4 mois environ (MQ9 support CD) HA Un maximum de 16 QMGR’s HA par appliance Le VLAN et l'agrégation de liens ne sont pas supportés sur les configurations HA Dans le cas de Datacenters éloignés, les performances se dégradent fortement avec une latence supérieure à 10ms Recommandée : 1 à 2 ms Supportée jusqu’à 10 ms Si une perte de connexion réseau entre les deux appliances survient, le même QMGR peut s’exécuter sur chaque appliance (situation partitionnée). Il sera nécessaire de prendre des mesures pour spécifier le jeu de données à conserver (A confirmer),
Évolution Infrastructure Avant 4 environnements et 16 QMGR’s AIX en service Après Deux appliances M2001A pour la production Deux appliances M2001B pour les autres environnements
Mise à jour d’une Appliance Téléchargement du firmware sur le site IBM Fix Central. C’est un fichier signé à copier sur l’appliance. L’ensemble des drivers, du système et des updates MQ sont mis à jour en une seule opération. Durée : 15 minutes pour la mise à jour et moins de 10 minutes pour le redémarrage. Exemple de nom de fichier : 9.0.3-IBM-MQ-Appliance-M2001-U0000.scrypt3
Accès Appliance en mode Console https://appliance1:9090/dp/index.html Les administrateurs sont toujours définis localement sur l’appliance et peuvent se connecter en ssh ou WebUI pour gérer tous les aspects du système. Les users applicatifs peuvent être définis localement ou dans un annuaire (LDAP). Cette configuration est réalisée sur chaque QMGR.
Menus HA en mode Console
Status HA en mode Console
Accès Appliance en mode CLI via SSH Exemple : Affichage des QMGRS # ssh appliance1 MQAPPP6B Unauthorized access prohibited. login: admin Password: ******* Welcome to IBM MQ Appliance M2001B console configuration. Copyright IBM Corporation 1999-2017 Version: MQ00.9.0.3.0 build 287652mq on May 14, 2017 3:52:37 PM Serial number: 7803076 #mqa(mqcli)# dspmq -o ha QMNAME(MQDA60) HA() HALSADDR() HALSINT() QMNAME(MQDA50) HA() HALSADDR() HALSINT() QMNAME(MQCT01) HA(Replicated) HALSADDR(193.200.1.224) HALSINT(eth10) QMNAME(MQCT02) HA(Replicated) HALSADDR(193.201.2.178) HALSINT(eth11) QMNAME(MQDA01) HA(Replicated) HALSADDR(194.205.2.108) HALSINT(eth12) QMNAME(MQDA02) HA(Replicated) HALSADDR(197.219.100.6) HALSINT(eth14) QMNAME(MQHA01) HA(Replicated) HALSADDR(198.109.100.7) HALSINT(eth15)
Administration Appel MQ classique Commandes à exécuter sur le serveur (Version <= 7.5) à partir d’un client MQ à partir de la version 8.0 Droits administrateur nécessaires La délégation à un utilisateur est plus complexe (programme externe – sudo) Automatisation via scripts à maintenir Exemple : Liste des files MQ (alias) # echo « dis qa(*) | runmqsc > /tmp/fichier
Administration Appel avec les API’s REST REpresentational State Transfert Appel https à des fonctions Mq : directement exploitable à partir de toute machine, avec ou sans le client MQ. dans un script dans une page Web (.jsp, ajax) dans un document (Word, Excel) dans un flux permet l’ajout de nouvelles fonctions (exemple :Gestion des droits très fines, délégation des droits à l’utilisateur) Exemple Appel : https://localhost:8091/MqRestApi/v1/queueManager/MQDA40/queues Résultat : (fichier .json) {"status" : « ok", "queueList": [ {"qName":"DA40","qDesc":"","targetQName":"DA.QL.DA40"}, {"qName":"TEST.TEST.SR222","qDesc":"no descr","targetQName":"MQDA40.QL.TEST.TEST.SR222"}, ] }
Les API’s REST Exemple CURL Appels curl ou python pour les programmes batch curl -H Accept:application/json https://localhost:8091/MqRestApi/v1/queueManager/MQDA40 -u user:password Sortie au format json {"qmgrName":"MQDA40", "qmgrDesc":"", "alterationDate":"2017-07-27", "alterationTime":"12.07.1", "maxMsgLength":"5120000", "maxHandle":"256", "ccsid":"819", "platform":"28"
Exemple d’utilisation
Codage Dans le JSP <fieldset> <legend>Select Queue </legend> <div> <p class="greeting-queue"></p> </div> </fieldset>
Codage L'appel en Ajax var myUrl="https://"+HostNameAndPort+"/MqRestApi/v1/queueManager/"+getAllQueueNameOfQmgr+"/queues"; $.ajax({ url: myUrl, dataType:'json' }).done(function(data) { if (data.status==="warning") { output=data.reason; output+="<BR>"; } else { output=""; } output+="<select class=\"ui dropdown\" name=\"MqSeriesQueueName\" id=\"IdMqSeriesQueueName\" >"; for (i=0;i<data.queueList.length;i++) { output+="<option value=\""+data.queueList[i].qName+"\">"+data.queueList[i].qName+"</option>"; } output+="</select>"; $('.greeting-queue').empty().append(output); }).fail(function(data) { alert("Request failed on "+ getAllQueueNameOfQmgr+".\nReason :"+ data.responseJSON.reason); $('.greeting-queue').empty(); $('.greeting-infoQueue').empty().append("No informations ......"); });