330 likes | 698 Views
Introduction IBM – WebSphere MQ WMQ. 05/2009 EQITP - MIDDLEWARE. Assimilés : MQSeries, WebSphere MQ , MQ ou WMQ. WMQ - Sommaire. Présentation Historique Versions Architectures Bonnes pratiques Sécurité Performances Administration / Monitoring Haute Disponibilité. WMQ - Présentation.
E N D
IntroductionIBM – WebSphere MQWMQ 05/2009 EQITP - MIDDLEWARE Assimilés : MQSeries, WebSphere MQ , MQ ou WMQ
WMQ - Sommaire Présentation Historique Versions Architectures Bonnes pratiques Sécurité Performances Administration / Monitoring Haute Disponibilité
WMQ - Présentation • Pourquoi utiliser IBM- MQSeries / WMQ ? IBM WebSphere MQ est une famille de logiciels d'intégration et de messagerie interapplicative qui simplifient la connexion dynamique des applications en environnement hétérogène. WebSphere MQ permet l'échange d'informations et l'exécution de transactions entre les plates-formes d'exploitation différentes, facilitant la tâche des programmeurs chargés du développement et de la mise en œuvre dans le cadre de projets d'intégration. Une domination sans partage d'IBM Websphere MQ représentait 80 % du marché de la messagerie critique en 2006. 85 % en 2008. Le besoin en MOM continue de s'accroître rapidement. Estimé à 718 M$ en 2006, il dépassera 1 Md$ en 2009 et 2,24 Md$ en 2013. • Concurrence : • MSMQ (Microsoft) • Active MQ (Open Source) • DecMessageQ, Tibco RdV, … • => Non inter-opérables avec WMQ
WMQ - Présentation WebSphere MQ fournit : • Une infrastructure de transport, pour les messages MQ et JMS • Moteurs de messaging locaux • Clients MQ • Fonctions de clustering (Load Balancing, Haute Disponibilité) • Interface avec les applications (API) • Interface d’administration (API, GUI, events) • Support des transactions (syncpoint) Caractéristiques : • Asynchrone « time independance » • Très haute fiabilité (standard bancaire) • Découplage des applications et des platesformes « loosely coupled » • Disponible sur plus de 80 plates-formes • API communs, nombreux langage
WMQ - Historique 15 ans d'initiatives des acteurs du MOM • Mars 1992 : IBM lance MQSeries. • Décembre 1994 : Tibco Software commercialise son MOM, Rendezvous. • Septembre 1998 : lancement de Message Queue Server 1.0 par Microsoft. • Fin 1999 : Progress Software lance SonicMQ, premier ESB sur le marché. • Mars 2002 : MQSeries devient Websphere MQ.2003 : début du développement d'un système de messagerie interne par JPMorgan. • 2001 : publication des spécifications JMS 1.0 par Sun Microsystems. • 2006 : premières spécifications AMQP. • Fin 2008 : version 1.0 d'AMQP.
WMQ - Versions • Version BNP Paribas utilisé EQITP MIDDLEWARE recommande l’utilisation de la : v6.0.2.5 Depuis fin 2008, la nouvelle version V7 est sortie mais ne possède qu'un seul fixPAck 7.0.0.1 auj. trop jeune.
WMQ – API Plusieurs types d’API disponibles : • MQI ( C, C++, Cobol, RPG (OPM & ILE), MQ Java (WMQ classes for Java),..) • AMI (deprecated) • XMS (IBM advanced) • Dot Net (C#,…) • JMS • Wrappers ( Perl, PHP, Python, Jython, PL/SQL (Oracle), Delphi / Pascal / Kylix, PL1, Rexx, …)
WMQ - Plates-formes supportées • Serveur AIX, AT&T GS Unix, Compaq NSK/NSS, Compaq Open VMS Alpha & Vax, Compacq, Tru 64 Unix, DC/Osx, Digital UNIX, DYNIX/ptx, Hitachi, HP/UX, IRIX, Linux Intel & zSeries, MVS/ESA, NCR, Numa-Q (Sequent), OpenVMS, OS/2, OS/390, OS/400, SCO OpenServer, SCO Unixware, SGI, Siemens Nixdorf SINIX DC/Osx, Sinix, Sun Solaris Intel & Sparc, TPF, Unisys OS2000, 2200 & MCP, UnixWare, VSE/ESA, Windows NT4, 2000, XP, 2003, Vista, Z/OS • Client AIX, Apple MacOS, AT&T GS Unix, Compaq NonStop Kernel, Compaq Open VMS Alpha & Vax, Compacq Tru 64 Unix, DC/Osx, Digital Unix DG/Ux, DOS, HP/UX , HP 3000 MPE/iX, DG/UX, DYNIX/ptx - IRIX - SINIX, Java, Linux Intel & zSeries, .Net, Numa-Q (Sequent), OS/2, SCO OpenServer - SCO Unixware, SGI, Siemens Nixdorf SINIX DC/OSx, Sun Solaris, Sun Solaris Intel, Stratus VOS, TPF, Unisys A, OS2000 & MCP, VM/ESA, Windows 3.1/95/98/Me/NT/2000/XP/2003, Vista, z/VM
WMQ - Terminologie • Queue Manager (ou QM ou GFA: Gestionnaire de files d’attente) • Un queue manager est un composant qui porte un ensemble de files d'attentes et gère leur utilisation par les applications • Listener • Le composant listener a pour rôle d’écouter les différents réseaux (TCP/IP, IPC, etc) et de router les demandes de connexion vers une instance cible • Canal message • On appelle canal message un lien entre deux Queue Manager qui communiquent et s’échangent des messages • Canal client MQI (Message Queue Interface) • On appelle canal client un canal de connexion entre une application et un Queue Manager • MCA (Message Channel Agent) • Le MCA est l’agent qui établit la communication entre deux Queue Managers
Terminologie : Les Files d’attente • Structures de données • Servent au stockage des messages Une queue “ appartient ” à un Queue Manager et un seul. • Trois types principaux de files d’attente : • File locales : décrites localement, contiennent les messages • Files éloignées (remote) : description locale d’une file d’attente située sur un Queue Manager distant • Files alias : pointeurs sur une file locale ou sur une file éloignée Les applications peuvent utiliser indifféremment les files locales, remote, ou alias.
Terminologie : Le message • Message = buffer de données Deux parties : • en-tête (header) : informations d ’enveloppe • données d’applications (data) : longueur variable, 0 à plusieurs dizaines de Mo (100 Mo max sinon le message est découpé) Header data
WMQ – Typologies Applicatives • Typologies de communication possibles • Communication locale (binding) • Communication distante serveur-serveur • Communication distante client-serveur • Problématiques liées • Hébergement des Queue Managers • Organisation des Queue Managers par application • Connexion au Queue Manager • Sécurisation des échanges Application 1 Application 2 Application 3 1 Queue Manager Queue Manager 2 3 1 Client MQ 2 3 Application 4 • Toutes ces typologies sont mises en œuvre actuellement à la Banque.
Serveur Z Application A Application B Queue Manager : QMZ Client Client MQGET MQPUT QMZ.CX.APPA01 QMZ.CX.APPB01 Q.A.B.TEST.PUT Q.A.B.TEST. GET MQPUT MQGET Server A Server B QL.A.B.TEST Application A Application B QMZ_LSTR MQPUT MQGET Queue Manager QMA Queue Manager QMB QMA.CH.QMB QL.A.B.TEST Q.A.B.TEST.GET QR.A.B.TEST Q.A.B.TEST.PUT QMB QMA_LSTR QMB_LSTR WMQ - Architectures Client-Serveur Serveur-Serveur
WMQ - Architectures Client-Serveur define channel(APPLINAME) chltype(SVRCONN) MCAUSER(‘appliUID’) MAXMSGL(sizeOctets) replace ou alter channel(APPLINAME) chltype(SVRCONN) MCAUSER(‘appliUID’) MAXMSGL(sizeOctets) replace Serveur-Serveur def chl(APPLIA.APPLIA) chltype(SDR) conname(‘IP(port)’) locladdr(‘IPHOME’) replace def chl(APPLIA.APPLIA) chltype(RCVR) replace Il s’agit des paramètres minimales pour leur création, il existe plus d’une trentaine d’options du canal à configurer!
WMQ - Architectures • Standalone • Point-to-Point • Hub and Spoke • Cluster MQ Which ONE ?
WMQ - Administration L’administration MQ : Installation, Configuration, Sécurité, Support,… Solution dite locale Solution dite distante ssh machine login/password su – geneqdml su – mqm runmqsc QMGRName • Utilisation du client MQ : MO71 • - QManagerName • XXX.XXX.XXX.XXX(port) • Un channel SVRCONN doit exister : « MIDDLEWARE » ++ Sécurité forte -- Admin complète mais complexe ++ Admin rapide et limité -- Mise en place de sécurité
WMQ – Administration / MO71 1/ création d'un groupe gmqmadm 2/ création du user mqmadm appartenant au groupe gmqmadm 3/ setmqaut pour le groupe 4/ mcauser = 'mqmadm' dans le channel svrconn QM=QMNAME GRP1=gmqmadm echo Affectation des droits MQ pour le groupe $GRP1 sur le QM $QM ... # minimum pour se connecter avec un outil d'admin : setmqaut -m $QM -t qmgr -g $GRP1 +connect +inq +dsp setmqaut -m $QM -t q -n SYSTEM.DEFAULT.MODEL.QUEUE -g $GRP1 +get +put +set +dsp +browse +inq setmqaut -m $QM -t q -n SYSTEM.ADMIN.COMMAND.QUEUE -g $GRP1 +put +dsp +inq setmqaut -m $QM -t q -n SYSTEM.AUTH.DATA.QUEUE -g $GRP1 -all # accès en dsp (display) à l'ensemble des objets du QM $QM setmqaut -m $QM -t q -n \** -g $GRP1 +dsp +browse setmqaut -m $QM -t prcs -n \** -g $GRP1 +dsp setmqaut -m $QM -t chl -n \** -g $GRP1 +dsp setmqaut -m $QM -t lstr -n \** -g $GRP1 +dsp L’administration DISTANTE via GUI IBM : SupportPack MO71 DEFINE CHANNEL(MIDDLEWARE) + CHLTYPE(SVRCONN) + TRPTYPE(TCP) + DESCR('Channel EQITP MIDDLEWARE') + MCAUSER(‘mqmadm') + REPLACE
WMQ – Administration / MO71 mqm@machine> dspmq QMNAME(qmgrx) STATUS(‘etat’) mqm@machine> runmqsc QMGR1 display objet(*) all ….. …. dis ql(‘ql.name’) curdepth … end Exemple => mqm@machine> runmqsc QMGR1 –v < modifQMGR1.mqs > modifQMGR1.mqs.log “-v” pour tester le script sans execution L’administration LOCALE via : runmqsc QMGR dis chl(SYSTEM.DEF.SENDER) ALL AMQ8414: Affichage des détails relatifs au canal. CHANNEL(SYSTEM.DEF.SENDER) CHLTYPE(SDR) ALTDATE(2009-05-06) ALTTIME(15.55.59) BATCHHB(0) BATCHINT(0) BATCHSZ(50) COMPHDR(NONE) COMPMSG(NONE) CONNAME( ) CONVERT(NO) DESCR( ) DISCINT(6000) HBINT(300) KAINT(AUTO) LOCLADDR( ) LONGRTY(999999999) LONGTMR(1200) MAXMSGL(4194304) MCANAME( ) MCATYPE(PROCESS) MCAUSER( ) MODENAME( ) MONCHL(QMGR) MSGDATA( ) MSGEXIT( ) NPMSPEED(FAST) PASSWORD( ) PROPCTL(COMPAT) RCVDATA( ) RCVEXIT( ) SCYDATA( ) SCYEXIT( ) SENDDATA( ) SENDEXIT( ) SEQWRAP(999999999) SHORTRTY(10) SHORTTMR(60) SSLCIPH( ) SSLPEER( ) STATCHL(QMGR) TPNAME( ) TRPTYPE(TCP) USERID( ) XMITQ( )
WMQ – Administration / LOG • File System des logs messages: cd /var/mqm/log/QMNAME/active • File System des logs errors : cd /var/mqm/qmgrs/QMNAME/errors => 3 fichiers rotatifs : AMQERR01.LOG, AMQERR02.LOG, AMQERR03.LOG Une fois l’erreur identifié : mqrcrenvoit le descriptif de l’erreur et permet d’apporter une solution mqm@machine> mqrc code Exemple : C:\>mqrc 2035 2035 0x000007f3 MQRC_NOT_AUTHORIZED => Problème de droitsutilisateur
WMQ – Monitoring / Alerts Solutions divers • Patroll • Sysload • Nagios • Shell • Introscope MQ : MQMonitor • QPasa • MO71 • ETC
WMQ – Monitoring / Alerts Surveillance globale Surveillance détaillée Alertes : Warning -> Console EM Incident -> Tetracall Danger -> Push mail
WMQ - Sécurité • Droits des objets MQ : setmqaut et dspmqaut => Habilitations par user ou group sur les objets MQ droits PUT ou GET par user.. • Mise en place du SSL -> voir procédure (certificats, CA, validité, magasin, etc) • Suppression de certains objets par défaut -> faille de sécurité. • Mise en place Firewall / DMZ
WMQ - Performances • Mode Client VS Local • NPMSPEED(FAST) Channels but no commit • Persistence message ou pas • Log circulaire ou linéaire • Quid MQ version • SSL Algorithms • Size message • Machine/OS/HARDWARE
WMQ - Haute Disponibilité SOLUTION 1: Serveur de secours • Opérations • Déplacement de l’ IP avec IFCONFIG –a ou F5 • Points forts • Facilité de mise en oeuvre • Rapidité de la bascule • Pas ou peu de coopération nécessaire du QM partenaire • Points faibles • Messages prisonniers • Pas de service pendant la bascule sauf si F5
WMQ - Haute Disponibilité SOLUTION 2 : Serveur de secours + disque partagé • Opérations • Detach/Attach du disque externe • Déplacement de l’ IP l’ • Démarrage de QMA sur serveur 2 • Points forts • Pas de messages prisonniers • Pas de RESET CHANNEL • Pas de coopération nécessaire du QM partenaire • Points faibles • Le redémarrage de QMA sur S2 peut être long si beaucoup de messa ges en instance messages • Pas de service pendant la bascule
WMQ - Haute Disponibilité SOLUTION 3 : solution 2 + cluster MQ si partenaire MQServer et non client MQ • Opérations • Detach/Attach du disque externe • Déplacement de l’ IP l’ • Démarrage de QMA sur serveur 2 • Points forts • Pas de messages prisonniers • Pas de RESET CHANNEL • Pas de coopération nécessaire du QM partenaire • Points faibles • Mise en place et administration plus complexe • Coopération nécessaire du QM partenaire (même cluster MQ)
WMQ - Questions Questions ?
WMQ – Sujets divers Autres sujets : • Mise en place DLQ • Mise en place de l’agent Wily • Gestion des ‘poison message’ • Failover avec F5, avec Cluster MQ • Nomenclature • JMSAdmin ( Annuaire JNDI) • QMName alias • Listener.TCP • Installation / Migration • Mise en place SSL • Exits • etc
WMQ – TP 1 Travaux pratiques : Créer un Qmgr : QM1 l’auditer avec MO71 Déposer un message dans la file ‘QL.TEST’ Vider la file ‘QL.TEST’ Chaque étape est validée par la suivante
WMQ – TP 2 Travaux pratiques : Créer deux Qmgrs : QM1 & QM2 Vous devez envoyer un message de QM1 vers la File QL.QM2 sur QM2 : Via Point à Point (Qremote) Via un Cluster MQ (Qcluster) Chaque étape est validée par la réception du message sur QM2