Måndag 4/11 14.00
Harry Halliwell, IBM Hursley
MQSeries Platforms
Harry Halliwell beskrev de olika plattformar som MQSeries kör
på idag. Det är de mest förekommande med ett par undantag (SGI
och Apple). De olika implementationer som finns idag är av två
grundvarianter; Level1 och Level2. Level1 är en första version
av MQSeries som inte stöder alla funktioner som Level2 gör. Det
tråkiga i den här typen av differentiering är att det är
svårt att veta vilka OS-versioner av MQSeries som stöder vilken
nivå. Det syns tyvärr inte på versionsnumret. Den aktuella
MQSeries-versionen för MVS är 1.1.1.4 och för OS/400 något
på 3. Det är dock enligt Halliwell inget problem, för IBM
satsar nu på att få alla Level1-versioner uppgraderade till
Level2.
Level1-plattformar idag är IBM VSE/ESA, Digital VMS VAX, Tandem
Guardian (finns i Level2-betatest som genuin Tandemapplikation),
SCO Unix och UnixWare.
Några plattformar har inga serverversioner, så som DOS, och en
del har inga klientversioner.
MQSeries Basics
Halliwell var ganska snabb i sitt framförande och mycket
teknisk. Han hade inte alltid tråden klar framför sig under presentationen
utan kunde ta delarna i lite olika ordning.
Han beskrev dock lite grundkonventioner i MQSeries. Han
berättade att MQ är byggd på en gemensam grund för alla plattformar.
Det gör att namnregler mm är gemensamt i MQ för olika
plattformar och för MQI-APIt för olika programmeringsspråk.
Det innebär också att något kan skilja sig jämfört med
praxis på någon plattform eller något programspråk.
Det absolut viktigaste som Halliwell ansåg att man skulle tänka
på inför en MQ-installation var att komma överens om alla namn,
och då även tänka på om det ska vara små eller stora
bokstäver. Det är av största vikt för att systemet skall
fungera. Om olika grupper installerar och konfigurerar systemen
utan att ha kommit överens om generella regler och konfiguration, kommer
det att bli stora problem! MQSeries har i sig ingen egentlig namnstruktur
(förutom transaktionsköernas defaultnamn) utan det är viktigt
att hitta en egen struktur som sedan hålls gemensam inom
företaget/installationerna.
Queue Manager
Oftast installerar man endast en queue manager per server, men
det kan av olika anledningar vara så att man installerar flera, tex
för test. Namnet bör vara ganska kort, och om det är möjligt,
ansåg Halliwell, så skulle queue managern döpas med samma namn
som den server den körs på (men egentligen borde det inte vara
så, då queue managern blir 'låst' vid en definierad plats i
nätet och med allt dynamiskt tänkande i bakhuvudet borde det
vara lite mer dynamiskt än så).
Queues
När man skapat sin queue manager ska man skapa sina köer som
behöver finnas på queue managern. Köerna delas upp i
Ett viktigt tips när det gäller att döpa köer är att de
inte skall beskriva kötypen i namnet, och heller inte en exakt
beskrivning av köns placering i nätstrukturen. Om man följer
dessa tips blir systemet mer flexibelt. Det som egentligen är
viktigt i det hela är att programmet som sänder data inte ska
behöva bry sig om hur kön ser ut, vart den tar vägen, och sist men
inte minst, vilket/vilka program som läser och behandlar
meddelandet!
Det finns en del speciella lokala köer som Halliwell beskrev.
Message channels
En kanal är den låga nivån i MQSeries och genom sin Message
Channel Agent, som är en process som hanterar kommunikationen
på kanalen, sänder eller mottager kanalen data mellan den
lokala queue managern och en annan remote queue manager.
På samma sätt som i övriga MQSeries gäller det att enas om en
namnstandard och ett bra tips här är att ha queue manager-namnen
inlagda i kanalnamnet. Den är ju till skillnad från köer fast
kopplad till de två queue managers som kanalen definierats för.
Ex QMCSU.QMCBO för kommunikation mellan Sundsvall och Borlänge
och QMCBO.QMCSU för kanalen som skickar meddelanden från
Borlänge till Sundsvall.
En kanals MCA hanterar kommunikationen för en sk
transmissionskö. Det är en särskild form av lokal kö som inte
går att skriva på för normala applikationer utan är bara till
för att samla upp meddelanden för sändning genom en kanal. Det
här innebär att flera remoteköer kan ha samma transmissionskö
definierad, och de meddelanden som då skickas i dessa köer läggs
i den specificerade transmissionskön och skickas av MCAn via den
gemensamma kanalen. Det är en mycket vanlig konfiguration att
bara ha en kanal som servar all trafik mellan två queue
managers.
När kanalerna är definierade gäller det att verifiera att de
är konfigurerade rätt. Det kan man enkelt göra genom att
först starta kanalen, och sen pinga tcp/ip för att se att
nätet är uppe och sen göra en PING CHANNEL i MQSeries kommandointerface
(runmqsc).
Start av en kanal sker oftast genom att man definierar en sk
trigger monitor (Channel Initiator) som startar en MCA
så fort det kommer in data i transmissionskön som skall servas
av MCAn. I Level2 startas den mottagande kanalens MCA automatiskt
när en sändande MCA startas, men i Level1 måste kanalerna
startas på båda sidor innan trafik kan ske på kanalen.
Istället för att definiera ett kanalpar för varje kombination
av queue managers som det finns i nätet finns det möjligheter
att routa meddelanden i en queue manager. Hur det går till beskrivs
närmre i Distributed Queuing - How to Set
up an MQSeries network.
Halliwell berättade också om möjligheten att ha flera kanalpar
mellan två queue managers. Det är också ett ämne som behandlades
i Distributed Queuing, men han berättade lite om vad som kan
vara anledningen till att man vill definiera flera kanalpar. Det
kan tex vara att ett kanalpar är utrustat med
krypteringsmöjligheter vilket skulle sänka kapaciteten på den ordinarie
kanalen.En typ av meddelanden kanske inte kan ligga i en
transmissionskö och vänta på att bli servad av den ordinarie
MCAn utan måste gå så snabbt som möjligt till den mottagande
queue managern, och då kan en separat VIP-kanal användas där transmissionskön
inte är lika frekvent använd. Det meddelandet behandlas då
snabbare än om det skulle ha sänts i den ordinarie kanalen,
trots att det är samma nätverk som används.
Idle processing
En annan skillnad mellan de två level-versionerna är att Level1
låter ett anrop till MQGET ligga och polla den kö som skall läsas.
Det kan ta en stor del av processorkraften (beroende på OS) och
därför är Level2 omskriven så att den yildar systemet vid
väntan på meddelanden.
I vissa OS finns det möjligheter till SIGNAL-hantering, men det
gick Halliwell inte in på.
System administration
Alla plattformar har möjligheter till lokal administration. Det
är en mycket modest form av SM där mycket handlar om operationer
från kommandoprompten. I Level2 introducerades 'single point of
control' där man har möjligheten att administrera queue managers
via nätverket från en enda maskin. Genom en speciell
kommandokö kan man skicka kommandon enligt MQSC-format (det
finns ett annat format som kallas PCF som används av
applikationer, men det beskrivs inte här) till en remote queue
manager och få den att processa kommandot och skicka svaret
tillbaka. Det är inget avancerat system och vissa saker går
inte alls att genomföra, som tex att starta och stoppa en queue
manager. För att kunna komma upp i den nivån av SM krävs en
tredjepartsprodukt, så som MQView som visades i Vendor session - MQView. Det finns fler
och jag fick med mig en del broschyrer från olika företag om
detta.
Instrumentation
Det finns möjligheter i MQSeries att låta MQ rapportera om
status i systemet. Det kan göras genom slå på rapportering av events
vid olika händelser i system, tex en kö blir för full osv.
Dessa meddelanden kan skickas till 'remote control points' för behandling.
Support pacs
IBM har något som kallas support pacs på webservern i Hursley.
Här finns en hel del kod i olika format, för olika användningsområden,
för olika plattformar och i olika supportnivåer. Tex alla
klienter som finns för MQSeries ligger för DL här. Istället
för att skicka ut alla klienter till alla MQ-installationer
(vilket man försökte med förut) läggs nu klienterna upp centralt,
och de man behöver tankar man hem och använder.
Bland support pacsen finns även exempelkod, utilities, olika
gränssnitt som tex det för Lotus Notes. Dessa support pacs har olika
nivåer i grad av support från IBM:
Adressen är http://www.hursley.ibm.com/mqseries/txppacs/txpsumm.html.
Where to Learn More
IBM håller en mängd kurser i ämnet och en del av dessa är:
MQ01 | MQSeries Technical Introduction |
MQ06 | MQSeries Application programming |
MQ15 | MQSeries Tecnical Workshop. Denna var med i certifieringsprogrammet. |
MQ20 | MQSeries MVS/ESA Implementation and Administration |
MQ60 | MQSeries Three Tier |
MQ07 | MQSeries and Lotus Notes |
MQ30 | MQSeries Advanced System Design |
Det finns beskrivet en del om kurser på http://www.training.ibm.com/usedu.