Cluster Queue Monitoring program (AMQSCLM)
Le cluster MQ est une fonction disponible depuis WebSphere MQ version 5.1. Il apporte à la fois de la scalabilité à un environnement MQ, et est une brique technique dans certaines configuration en mode Haute Disponibilité.
Pour autant, le cluster MQ est souvent sous-utilisé, à la fois par méconnaissance de ses apports et de son fonctionnement, et aussi à cause d’une certaine frilosité des équipes en charge de définir l’architecture.
IBM publie régulièrement des nouvelles fonctions pour le cluster MQ. Une de ces fonctions est passée particulièrement inaperçue, il s’agit d’un utilitaire permettant de monitorer les files partagées dans le cluster, et de rerouter des messages déjà livrés vers une autre instance de la file si nécessaire.
Prenons la configuration suivante :
Les QM QMC2 et QMC3 hébergent chacun une file U1 partagée dans le cluster. Ces files U1 sont donc visibles depuis QMC1, où une application E dépose des messages.
Ces messages sont loadbalancés entre les deux instances de U1, où des applications R2 et R3 consomment ces messages.
Si QMC2 s’arrête, le mécanisme de load-balancing du cluster va cesser d’envoyer des messages vers la file U1 de QMC2, ils seront tous dirigés vers celle de QMC3. Seuls les messages déjà livrés dans la U1 de QMC2 seront « prisonniers », en attendant un redémarrage du QM ou une bascule vers un autre serveur dans la cas d’une configuration multi-instance.
Maintenant si c’est l’application R2 qui s’arrête, la situation est beaucoup plus préoccupante. En effet comme QMC2 et sa file U1
restent disponible, cette file va continuer à recevoir des messages qui ne seront pas traités.
Le « Cluster Queue Monitoring program » (nouveauté WMQ 7.1) répond à ce problème.
Il s’agit d’une application (amqsclm) livrée sous forme compilée mais également source, qui va détecter qu’aucune application ne consomme les messages de cette file.
L’outil amqsclm fonctionne en monitorant le paramètre IPPROCS de la file. S’il passe à zéro, c’est qu’aucune application n’a ouvert la file en input, et que les messages ne sont pas consommés.
Dans ce cas, l’outil modifie un des paramètres du load balacing de la file (CLWLPRTY), pour forcer les nouveaux messages vers les autres instances de la file.
Pour régler le cas des messages « prisonniers » dans la file où ils ne sont plus consommés, l’outil effectue un MQGet de ces messages, suivi d’un MQPut dans le même nom de file.
La file locale ayant un CLWLPRTY plus faible que les autres instances, les messages sont dispatchés vers les autres instances de cette file :
La même instance de amqsclm peut monitorer simultanément plusieurs files.
La documentation de cet outil est disponible dans l’Infocenter WMQ 7.1.