Инструментальные средства администратора MQSeries

Владимир Макушкин,  ОАО "Альфа-банк", г.Москва 

В статье описывается опыт по администрированию программного продукта IBM MQSeries, накопленный автором за 2 года работы в ОАО “Альфа-банк”. Этот опыт может быть полезен все возрастающему числу пользователей и поклонников системы MQSeries, работающей более чем на 35 платформах и отличающейся высокой надежностью и высокими скоростями передачи сообщений.

       Лидером среди транспортных систем для передачи сообщений является система MQSeries фирмы IBM [1]. Её отличительными чертами являются высокая надежность и высокие скорости передачи сообщений как внутри корпоративной информационной системы (КИС), так и по удаленным каналам связи. Более чем за 2 года промышленной эксплуатации MQSeries в ОАО "Альфа-банк" не пропало ни одного сообщения по вине MQSeries. Максимальная скорость передачи сообщений может достигать 200 сообщений/сек для версии MQSeries 5.2 при длине сообщения 2Кб и скорости КИС - 100Мбт  .  На практике скорость передачи сообщений, как правило, во много раз меньше. И еще одно приятное свойство MQSeries: с этой системой работать легко, просто и приятно. Для того, чтобы передать сообщение с одного сервера на другой, необходимо проинсталлировать на каждом сервере MQSeries и создать менеджеры очередей (queue manager) qm1 и qm2, соответственно, как это показано на рисунке 1.

Далее на стороне сервера-отправителя (Server1)  в qm1 создается тройка объектов и на стороне сервера-получателя (Server2) в qm2  создаются два объекта. Для объектов сервера-отправителя задаются следующие параметры:
rq1: lq1, qm2, tq1
chl1:  IP-address Server2, tq1
И далее командой amqsput rq1 можно положить сообщение в очередь и оно будет  передано на Server2 в очередь lq1. Если сообщение не уйдет с Server1, то надо проверить  состояние каналов и, возможно, стартовать Sender channel chl1.

Рисунок 1

IBM анонсировано, что MQSeries  работает на различных  платформах (всего 35!): UNIX (AIX, HP_UX, Solaris, Linux, ...) AS400, WindowsNT/2000, .... В ОАО "Альфа-банк" MQSeries успешно работает на пяти платформах. Система команд MQSeries на всех платформах одна и та же. Это весьма удобно.  Для программистов приятной особенностью окажется большой набор исходных текстов программ в папке  Tools\Samples\ для языков программирования:  C , C++ , VB , PL/I , Cobol  и для отправки сообщений из Excel , из LotusNotes, из HTML и ASP с помощью VBScript или JavaScript, а также на родном языке  MQSeries - MQSC source . С помощью этих программ можно прочитать сообщение из очереди или положить сообщение в очередь. Сообщения передаются , как правило, из одной базы данных в другую базу данных. В программе, назовем её sender_prg,   данные из Data base1  с помощью  sql-запроса извлекаются и помещаются в очередь rq1. Создать такую программу просто, пользуясь готовыми макрокомандами, предоставленными IBM в исходных кодах примеров. На стороне сервера-получателя программа, назовем её receiver_prg,  должна сообщение из очереди lq1 поместить в Data base2. B одной из программ sender_prg или receiver_prg реализуется алгоритм преобразования данных из Data base1  в Data base2.

      Таким образом строится самый простой вид транспортного потока  с децентрализованной обработкой сообщений. Такая схема транспортного потока (ТП) является весьма распространенной. Очень часто информация с Server1  должна уходить на Server2, Server3 и т.д. и при этом обработку информации целесообразно сосредоточить в одном месте, так как алгоритмы преобразования данных из Data base1 в Data base2, Data base3 и т.д. очень похожи и имеют  много общего, а часто являются подмножествами друг друга. В этом случае мы имеем  ТП с централизованной обработкой сообщений (рисунок 2).

Рисунок 2
В качестве инструментального средства для центра обработки сообщений IBM предлагается MQSeries Integrator. Это достаточно эффективный инструмент. По существу, MQSeries Integrator (MQSI) - это интегрированная среда для визуального проектирования программ обработки сообщений. MQSI предлагает многообразие драйверов для доступа к базам данных, для доступа к очередям в различных форматах, а также множество визуальных компонент, на которые можно "навешивать" самый разнообразный код для обработки сообщений. Разработанный и отлаженный центр обработки можно устанавливать на различные платформы благодаря Java-компилятору. Проводилось сравнение MQSI с аналогичной системой Meridian фирмы Misys-IBS (http://www.misys-ibs.com), представляющей среду разработки на Java. MQSI, как среда для визуального проектирования, дает более высокую производительность при разработке программ. Сравнение по скорости обработки сообщений на примере алгоритма обработки курсов валют при длине сообщения 747 байт дает следующие результаты: MQSI - 60 сообщений/сек,  Meridian - 40 сообщений/сек. Более высокая скорость обработки сообщений достигается за счет более эффективной работы с очередями и сообщениями на специализированном языке обработки сообщений.
     Заканчивая обсуждение транспортных потоков, следует упомянуть о ТП смешанного типа. Такие случаи также достаточно часто встречаются. Например, если в схеме на рисунке 2 возникает передача сообщений с сервера Server3 на Server4 с уникальным алгоритмом обработки, то целесообразно использовать ТП смешанного типа.

    Инструментальные средства администратора MQSeries - главная тема данной статьи. Это те средства, без которых работа администратора MQSeries невозможна. Минимальный набор этих средств составляют следующие инструменты:
Сайты поддержки MQSeries;
MQSeries Explorer;
Специальные программы;
Специальные приемы настройки и тестирования интерфейсов;
Средства мониторинга.
Рассмотрим эти инструменты подробно. 

Сайты поддержки MQSeries. Работать с MQSeries будет тяжело, если не использовать накопленный мировой опыт, доступный в сети Internet.  Существуют десятки сайтов, с которых можно бесплатно загрузить весьма ценные программы, начиная с IBM SupportPacs и заканчивая всевозможными форумами, на которых сертифицированные специалисты ответят на самые каверзные вопросы. Ниже дается лишь небольшой список этих сайтов. 
WebSphere MQ Family SupportPacs: http://www-3.ibm.com/software/ts/mqseries/txppacs/txpm2.html
WebSphere MQ Support, Service summary for Windows NT and Windows 2000:
http://www-3.ibm.com/software/ts/mqseries/support/summary/wnt.html
Знаменитые redbooks IBM: http://www.redbooks.ibm.com/
Учебный центр IBM  в Москве: http://www-3.ibm.com/services/learning/ru/
Венский форум: http://www.messageq.com/forums/vienna/  и  http://messageq.ebizq.net/vienna/
      Одновременно следует отметить, что фирменная поддержка IBM более чем полезна. Например, при такой форме поддержки, как passport advantage, всегда автоматически поставляются все последние версии продукта для всех платформ организации-пользователя MQSeries. Это, в первую очередь, самая высокая производительность MQSeries и новые полезные возможности. Кроме этого, поддержка IBM позволит в любой момент обратиться к квалифицированным специалистам и получить быстрый ответ на возникшую проблему. Также не следует забывать об обучении специалистов, которые только начинают работать с MQSeries.
MQSeries Explorer - самая известная программа из состава  MQSeries или, как принято с версии 5.3, WebSphere MQ Explorer. С помощью этой программы пользователи MQSeries могут наблюдать и делать необходимые настройки на своем локальном компьютере со своим локальным  менеджером очередей (Queue Manager).
Администратор MQSeries (далее по тексту MQSadmin) использует  MQSeries Explorer for Windows Remote Administrator по своему полному назначению. Он с помощью этой программы на своем рабочем месте наблюдает и настраивает MQSeries на самых различных платформах (серверах) и удаленных  менеджерах очередей (Remote Queue Manager), расположенных на значительном, до нескольких километров, удалении друг от друга (рисунок 3). Без этого инструмента настройка интерфейса между серверами крайне затруднительна. Только наблюдая ситуацию на разных концах интерфейса, можно его настроить быстро и качественно. Такая возможность предоставляется MQSadmin через пользователя с правами администратора и члена группы mqm при подключения к MQSeries Explorer. Дополнительно права доступа к объектам MQSeries регулируются командами setmqaut и dspmqaut.
Рисунок 3

Специальные программы - это программы, наделяющие универсальный инструмент MQSeries Explorer, предназначенный для работы на любых платформах, дополнительными возможностями на платформе WindowsNT. У каждого MQSadmin свой достаточно большой набор таких программ. Рассмотрим 4 наиболее важные для MQSadmin программы.
Первой из таких программ является IH03 MQSeries Integrator Message display. Эта программа позволяет прочитать сообщение из очереди и сохранить его в файл и наоборот, прочитать данные из файла и положить их в виде сообщения в очередь (рисунок 4). Такую простую программу может написать любой MQSeries-программист. Но зачем изобретать велосипед, если последняя версия программы всегда доступна на сайте
http://www-3.ibm.com/software/ts/mqseries/txppacs/txpm2.html
Рисунок 4
Программа MO71 WebSphere MQ for Windows Remote Administrator разработана Полем Кларком (Paul Clarke) из IBM UK Laboratories Ltd. в Hursley. Ценность программы заключается в возможности любое сообщение в очереди на удаленном менеджере очередей копировать или переместить в другую очередь, удалить, рассмотреть в деталях (полностью!) header или тело сообщения (рисунок 5). Удаление, копирование и перемещение доступно для больших групп сообщений. Программа позволяет удалять uncommited message. Последняя версия программы всегда доступна на сайте
http://www-3.ibm.com/software/ts/mqseries/txppacs/txpm2.html
На вопрос, почему нельзя копировать сообщения между различными queue manager на различных платформах, автор программы ответил, что он пока не может гарантировать абсолютную надежность операций копирования. Но может быть уже пора "скачать" новую версию программы...
Рисунок 5
Программа mqgetput. Часто при разработке и тестировании интерфейсов возникает необходимость поместить в очередь тысячи и десятки тысяч сообщений. Например, без этого не обойтись при измерении временных параметров интерфейсов. Программа mqgetput, разработанная автором данной статьи, предназначена для отправки “пачки” сообщений (рисунок 6). Сообщения могут быть переписаны из очереди Queue for Reading в очередь Queue for Writing при нажатии кнопки QR=>QW. Кнопка Browse позволит прочитать данные из очереди Queue for Reading. Поместив данные в поле Data for output и нажав кнопку Write, осуществляется запись данных в очередь Queue for Writing . При этом число сообщений при копировании в первом случае или число повторении записи во втором случае определяется коэффициентом в поле Quantity. Разумеется, при всех этих операциях, необходимо сначала открыть очередь и закрыть очередь после завершения операций.
Рисунок 6
Программа MQSeries Splitter ( разветвитель сообщений ) может быть полезна для копирования основного потока сообщений в дополнительную очередь и  текстовый файл. На промежуточном NT-сервере останется полная копия всех проходящих сообщений. Программа один раз в сутки очищает резервную очередь для копирования и лог-файл, чтобы не возникло переполнений. Интересный эффект возникает, если во всех  полях для имени очереди поставить одну и ту же очередь. Получается умножитель сообщений. Но во время Ч (чистки) очередь будет очищена и умножитель остановится.
Программа разработана автором данной статьи на VisualBasic6. Программа допускает скорость основного потока до 30 сообщений/сек. Для обработки потока с большими скоростями программу следует переписать на C++. Это наглядно демонстрирует, как программа-приложение может "тормозить" основной поток MQSeries сообщений. Нужно быть искусным MQSeries программистом, чтобы избежать  подобных эффектов.
Рисунок 7

Специальные приемы настройки и тестирования интерфейсов. Таких методов и приемов может быть великое множество у каждого MQSadmin. Я приведу лишь немногие для понимания существа дела.
Перенаправление потоков. Потребность в этом приеме может возникнуть при необходимости  посылать "пачки" сообщений, например, с AS400 на HP_UNIX. Персонал AS400 занят и на AS400 нет программы mqgetput. Самое простое решение (рисунок 8): берем дополнительный сервер WindowsNT и с его менеджера очередей с помощью программы mqgetput направляем необходимую "пачку" сообщений  на AS400 в remote queue, нацеленную на HP_UNIX. В результате на HP_UNIX поступает "пачка" сообщений с AS400.

Рисунок 8

“Вечный двигатель”. Этот прием весьма полезен при тестировании интерфейсов и проверке стабильности и надежности программ. Схема "вечного двигателя" изображена на рисунке 9. В очереди remote queue rq1 на сервере WindowsNT в качестве параметра Remote Queue Name указывается  rq2, а на сервере HP_UNIX в очереди remote queue rq2  в качестве параметра Remote Queue Name указывается  rq1. Сообщения между серверами будут "ходить" вечно, пока внешним вмешательством не будет остановлен канал, менеджер очередей и т.п. Этим приемом, например, испытывалась программа MQSeries Splitter на протяжении нескольких суток перед внедрением.

Рисунок 9

Перекодировка. Этот прием оказался полезен при решении следующей задачи: требуется с AS400 (кодовая  страница 1025) посылать сообщения на HP_UNIX (кодовая страница 1251) в кодовой странице 866. Для понимания задачи следует сказать, что кодовая страница в менеджере очередей задается при инсталляции MQSeries и может быть, как правило, любая.  MQSeries может осуществлять перекодировку (параметр DataConvertion=Yes) или не осуществлять (параметр DataConvertion=No) , то есть сообщение может быть только в кодовой странице отправителя или получателя. Для решения задачи берется (создается) менеджер очередей с  кодовой страницей 866, например на сервере с WindowsNT (рисунок 10), но можно и на HP_UNIX. В настройке канала с AS400 параметр DataConvertion ставиться в состояние Yes, а с WindowsNT в состояние NO. В результате на HP_UNIX приходят сообщения в кодовой странице 866.

Рисунок 10               

И еще один прием, точнее святая обязанность MQSadmin, это документирование интерфейсов. Весьма удобно иметь документированные интерфейсы в графическом виде  и программных средств для этого более чем достаточно (Visio, Bpwin и т.д.). Но по мере сложности интерфейсов их графическое представление становиться не наглядным. В этом случае может быть рекомендован Excel, с помощью которого в колонках таблиц прописываются параметры настройки интерфейсов. Обязательным, по мнению автора, является документирование менеджера очередей с помощью программы  saveqmgr. Обычно про эту программу вспоминают,  когда необходимо перенести настройки  менеджера очередей на другой сервер. Но если с вашим "боевым" сервером что-то случится, как вы будете восстанавливать менеджер очередей ? А сохраненный менеджер очередей с помощью программы saveqmgr легким нажатием на клавиши: runmqsc < saveqmgr.tst  восстанавливается за 2-3 минуты.

Средства мониторинга  MQSeries. Любая, даже самая надежная программная система, требует автоматического контроля её работоспособности. В противном случае персонал, сопровождающий эту систему, будет вынужден контролировать её параметры вручную. Опыт ОАО "Альфа-банк" достаточно поучителен  в вопросе мониторинга  MQSeries. К моменту ввода MQSeries в промышленную эксплуатацию в банке функционировала система мониторинга HP OpenView, успешно решающая задачи автоматического контроля различных параметров серверов: загрузка CPU, памяти, дисков, сетевая загрузка и т.п. При наступлении критического события на сервере (bootleneck) на экране системного администратора, отвечающего за работоспособность сервера, выскакивает окно "MessageGroups", на котором красным цветом отображается критическое событие, произошедшее на контролируемых серверах. Для MQSeries критическими событиями являются накопление некоторого недопустимо большого числа сообщений Nm в очереди. Обычно сообщения не должны накапливаться в очереди и поэтому Nm невелико, как правило Nm < 10.  С MQSeries у HP OpenView возникли проблемы: OpenView неправильно отображала число сообщений в очереди. Переписка между IBM и HP привела к тому, что через 2 месяца HP пообещала включить исправления по этой проблеме в свой очередной "patch". Но службе сопровождения надо было решать проблему мониторинга MQSeries сейчас. Было решено использовать подсистему DataSourceIntegration (DSI) в OpenView. К чести HewlettPackard следует отметить, что они оперативно выпустили этот patch, но дальше проблемы были с Performance Monitor фирмы Microsoft, а с Microsoft нам вряд ли бы  удалось решить эту проблему.  Для использования DSI была разработана дополнительная программа для мониторинга очередей, показанная на рисунке 11.

Эта программа один раз в минуту измеряет количество сообщений в очередях и записывает в файл. Интервал мониторинга, очереди мониторинга и местонахождение файла с результатами задаются через ini-файл или через интерфейс программы. Результаты измерений передаются в DSI и далее через MeasureWareAgent на NT-сервере передаются в центр OpenView и на монитор системного администратора. Мониторинг заработал достаточно успешно. При централизованной обработке с одним из сервером всегда что-нибудь случается. Без мониторинга OpenView эти проблемы серверов было бы тяжело решать.

Рисунок 11

Однако остались некоторые проблемы с мониторингом: время отображения критических событий достаточно большое и в ряде случаев составляет 10-20 минут, настройка на другие критические ситуации при сложном сочетании параметров MQSeries-объектов весьма затруднительна.
       Для решения проблем с мониторингом MQSeries, возникающих при использовании OpenView, производился маркетинг различных вариантов и был выбран наиболее эффективный инструмент - продукт OMEGAMON фирмы Candle corp. Его отличительными особенностями являются: быстрое отображение критических ситуаций на объектах MQSeries в КИС (не более 1 мин.), направленность агентов Candle на мониторинг MQSeries, позволяющих обнаруживать в сети MQSeries неполадки. Независимый обозреватель Gartner в своем "магическом квадрате" (www3.gartner.com) отмечает, что у Candle лучшие решения для MQSeries. При сравнении двух инструментов мониторинга MQSeries, по мнению автора, OpenView можно назвать лупой, а OMEGAMON - микроскопом. Дополнительно хотелось бы отметить еще одну интересную особенность OMEGAMON фирмы Candle corp.  Лет 10-15 назад большой популярностью пользовались экспертные системы или системы, основанные на знаниях. Автору этих строк довелось разработать и внедрить несколько интересных проектов по экспертным системам (ЭС)[2]. Оказалось, OMEGAMON предоставляет эффективные инструменты для создания ЭС. Продукционные знания для ЭС, то есть знания в виде правил продукций вида ЕСЛИ...ТО... на языке OMEGAMON записываются достаточно просто. Поэтому наличие  агентов Candle для измерения параметров операционных систем и, в частности, MQSeries;  возможность описания продукционных знаний в OMEGAMON  и владение методологией построения экспертных систем делает  возможным построение эффективных систем мониторинга КИС, основанных на знаниях и программном продукте OMEGAMON.

       Заканчивая обзор инструментальных средств MQSeries администратора, следует еще раз подчеркнуть, что MQSeries это оптимальный выбор среди транспортных систем для современной КИС  и  удаленных каналов связи. Сравнивая MQSeries с ближайшими конкурентами (EntireX фирмы SoftWare AG, MSMQ фирмы Microsoft) можно сказать, что MQSeries превосходит их по надежности и широте охвата рынка  транспортных систем (более 60%), имеет удобное единообразие команд на разных платформах, обеспечивает оперативное  администрирование удаленных менеджеров очередей через WindowsNT. 

Автор выражает искреннюю благодарность своим коллегам и коллегам российского отделения IBM, чья  поддержка и взаимопомощь сделали работу MQSadmin не только интересной, но и приятной. Статья написана не из рекламных или коммерческих побуждений,  а исключительно из уважения к программному продукту MQSeries. С автором можно связаться по электронной почте: vmakushkin@alfabank.ru

Литература.
1. Николай Игнатович. IBM MQSeries: архитектура системы очередей сообщений. Журнал "Открытые системы", вып.09-10, 1999.
2. Владимир Макушкин. Экспертная система диагностирования цифровых устройств и больших интегральных схем. Журнал "Средства связи", вып.3, 1988.



Сайт управляется системой uCoz