Програмне забезпечення підвищеної готовності проміжного рівня в Linux, частина 2: IBM WebSphere MQ, Linux, Операційні системи, статті

Підтримка максимального часу безвідмовної роботи системи стає все більш важливою для успіху обчислень на вимогу (on demand computing). WebSphere MQ є важливою частиною системи обміну повідомленнями проміжного рівня для сприяння прискоренню залучення підприємства в бізнес на вимогу. Проектувальники повинні враховувати важливість включення WebSphere MQ в конфігурацію підвищеної готовності. У цій статті описуються методи досягнення підвищеної готовності для WebSphere MQ з використанням наданої на апаратному рівні кластеризації та програмного забезпечення з відкритим вихідним кодом.


Введення


WebSphereMQ надає функціональні можливості асинхронного обміну повідомленнями та обслуговування черги з гарантованою, одноразової доставкою повідомлень. Використання WebSphere MQ спільно з heartbeat надає можливість подальшого поліпшення ступеня готовності менеджерів черги WebSphere MQ.


В першій частині даної серії статей я познайомив вас із концепцією підвищеної готовності (high availability – HA) і процесом конфігурування heartbeat. У цій статті я розгляну HA-реалізацію для WebSphere MQ в конфігурації холодного резерву з використанням heartbeat. У цій реалізації heartbeat виявляє проблему з основним вузлом. Це може бути апаратна або програмна проблема. Резервна машина:



Для найкращого засвоєння матеріалу ви повинні мати базові знання WebSphere MQ і кластерів підвищеної готовності. Ви повинні бути також знайомі з першою статтею цієї серії “Програмне забезпечення підвищеної готовності проміжного рівня в Linux, частина 1: Heartbeat і Web-сервер Apache“.



Реалізація HA для WebSphere MQ


Менеджер черги, який буде використовуватися в heartbeat-кластері, повинен зберігати свої файли журналів і дані на загальних дисках так, щоб вони були доступні зберіг працездатність вузла при аварії в системі. Вузол з працюючим менеджером черзі повинен також підтримувати деяка кількість файлів на внутрішніх дисках. У них входять файли, які стосуються усіх менеджерам черзі на вузлі, наприклад, / Var / mqm / mqs.ini, і спеціалізовані для менеджера черги файли, використовувані для генерування внутрішньої керуючої інформації. Таким чином, файли, пов’язані з менеджеру черги, поділяються між внутрішнім і загальним дисками.


Що стосується зберігання на загальному диску файлів менеджера черги, існує можливість використовувати один загальний диск для всіх відновлювальних даних (журналів і даних), що відносяться до менеджера черги. Однак для оптимальної продуктивності у виробничих умовах рекомендується розміщувати журнали і дані на окремих файлових системах, для того щоб їх можна було незалежно налаштувати для операцій введення / виведення.


На малюнку 1 показана організація файлової системи для нашого прикладу. Показані посилання були створені автоматично за допомогою командних сценаріїв, які будуть розглянуті нижче.


Рисунок 1. Організація файлової системи для менеджера черзі – ha.queue.manager

У наступному розділі я наведу покрокові інструкції по установці WebSphere MQ, створенню й тестування конфігурації менеджера черги з підвищеною готовністю.


 


Установка WebSphere MQ


Для установки WebSphere MQ 5.3.0.2 і Fixpack 7 на обох вузлах (основному і резервному) виконайте наступне. Додаткову інформацію можна знайти в документі “WebSphere MQ for Linux for Intel and Linux for zSeries Quick Beginnings “:



  1. Витягніть WebSphere MQ 5.3.0.2 RPM використовуючи наступні команди:

    rm -rf /tmp/mq5.3.0.2-install


    mkdir /tmp/mq5.3.0.2-install


    tar xzf C48UBML.tar.gz -C /tmp/mq5.3.0.2-install


    tar xf /tmp/mq5.3.0.2-install/MQ53Server_LinuxIntel.tar -C /tmp/mq5.3.0.2-install

    C48UBML.tar.gz – це файл з настановним чином для WebSphere MQ.

  2. Встановіть рівень ядра:

    export LD_ASSUME_KERNEL=2.4.19


  3. Замініть середу, виконавчі Java (JRE), що поставляється з WebSphere MQ, на IBM 1.4.2 JDK JRE:

    mv /tmp/mq5.3.0.2-install/lap/jre /tmp/mq5.3.0.2-install/lap/jre.mq


    ln -s /opt/IBMJava2-142/jre /tmp/mq5.3.0.2-install/lap/jre


  4. Підтвердіть ліцензію:

    /tmp/mq5.3.0.2-install/mqlicense.sh -accept -text_only


  5. Встановіть RPM-пакети WebSphere MQ:

    rpm -Uvh /tmp/mq5.3.0.2-install/MQSeriesRuntime-5.3.0-2.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.2-install/MQSeriesSDK-5.3.0-2.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.2-install/MQSeriesServer-5.3.0-2.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.2-install/MQSeriesClient-5.3.0-2.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.2-install/MQSeriesSamples-5.3.0-2.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.2-install/MQSeriesJava-5.3.0-2.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.2-install/MQSeriesMan-5.3.0-2.i386.rpm


  6. Очистіть каталог:

    rm -rf /tmp/mq5.3.0.2-install/


  7. Витягніть fixpack 7 RPMs:

    rm -rf /tmp/mq5.3.0.7-install/


    mkdir /tmp/mq5.3.0.7-install/


    tar xzf U496732.nogskit.tar.gz -C /tmp/mq5.3.0.7-install/


  8. Встановіть fixpack 7 RPMs:

    rpm -Uvh /tmp/mq5.3.0.7-install/MQSeriesRuntime-U496732-5.3.0-7.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.7-install/MQSeriesSDK-U496732-5.3.0-7.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.7-install/MQSeriesServer-U496732-5.3.0-7.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.7-install/MQSeriesClient-U496732-5.3.0-7.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.7-install/MQSeriesSamples-U496732-5.3.0-7.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.7-install/MQSeriesJava-U496732-5.3.0-7.i386.rpm


    rpm -Uvh /tmp/mq5.3.0.7-install/MQSeriesMan-U496732-5.3.0-7.i386.rpm


  9. Знову очистіть каталог:

    rm -rf /tmp/mq5.3.0.7-install/


 


Створення менеджера черги підвищеної готовності


На деяких платформах створення менеджера черги підвищеної готовності автоматизовано за допомогою сценаріїв в WebSphere MQ HA Support Packs, наприклад, MC63 і IC61. Однак ці пакети підтримки недоступні для Linux.


Використовувані в даному розділі сценарії є модифікованими версіями сценаріїв з допоміжного пакета MC63 і мають наступні обмеження:



Для створення менеджера черги підвищеної доступності ha.queue.manager дотримуйтесь наступних інструкцій:



  1. Створіть наступні каталоги на загальному диску (/ ha):

    • /ha/ha.queue.manager

    • /ha/ha.queue.manager/data

    • /ha/ha.queue.manager/log

  2. На основному вузлі (ha1) створіть менеджер черги підвищеної готовності за допомогою команд, показаних нижче (зареєструвавшись як root):

    /ha/hacode/mq/hascripts/hacrtmqm ha.queue.manager

    Команда hacrtmqm створить менеджер черги і забезпечить потрібне для дозволу HA-операцій розміщення його каталогів. Вихідний код сценарію hacrtmqm додається до цієї статті (див. розділ “Завантаження“).

  3. Додайте наступні два рядки в файл. Bashrc (початковий сценарій) на обох вузлах для користувача mqm.

    LD_ASSUME_KERNEL=2.4.19


    export LD_ASSUME_KERNEL


  4. Виконайте команду setmqcap, Ввівши кількість процесорів, за які ви заплатили. Виконайте наступну команду на ha1:

    /opt/mqm/bin/setmqcap 4


  5. Запустіть менеджер черги ha.queue.manager, використовуючи команду strmqm і зареєструвавшись користувачем mqm.

    /opt/mqm/bin/strmqm ha.queue.manager


  6. Дозвольте команди MQSC, виконавши:

    /opt/mqm/bin/runmqsc ha.queue.manager

    Повідомлення попередить вас про те, що почалася сесія MQSC. MQSC не має запрошення командного рядка.

  7. Створіть локальну чергу HA.QUEUE, ввівши наступну команду:

    define qlocal (HA.QUEUE)


  8. Створіть канал HA.CHANNEL, ввівши наступну команду:

    define channel(HA.CHANNEL) chltype(svrconn) trptype(tcp) mcauser(“mqm”)


  9. Зупиніть MQSC, набравши end. Відобразяться деякі повідомлення і знову з’явиться запрошення командного рядка.

  10. Зупиніть менеджер черги ha.queue.manager вручну за допомогою команди endmqm:

    /opt/mqm/bin/endmqm ha.queue.manager


  11. На резервному вузлі (ha2) створіть менеджер черги, зареєструвавшись як користувач mqm. Використовуйте наведену нижче команду, але в одному рядку. Можливо, доведеться змонтувати / ha як root:

    cd /ha/hacode/mq/hascripts/
    ./halinkmqm ha.queue.manager ha!queue!manager
    /ha/ha.queue.manager/data standby

    Всередині hacrtmqm використовує сценарій під назвою halinkmqm для повторного приєднання підкаталогів для IPC-ключів і створення символічного посилання с / var / mqm / qmgrs / $ qmgr на каталог / ha / $ qmgr / data / qmgrs / $ qmgr. Не запускайте сценарій halinkmqm на вузлі, на якому ви створили менеджер черги, використовуючи hacrtmqm, – Він уже виконується на ньому. Вихідний код сценарію halinkmqm додається до цієї статті (у файлі, доступному в розділі “Завантаження“).

  12. Виконайте команду setmqcap, Ввівши кількість процесорів, за які ви заплатили:

    /opt/mqm/bin/setmqcap 4


  13. Запустіть менеджер черги ha.queue.manager, Використовуючи команду strmqm, На резервному вузлі. Переконайтеся в тому, що він запустився.

  14. Зупиніть менеджер черги на основному вузлі.

 


Налаштування heartbeat для управління WebSphere MQ Server


Покрокові інструкції для налаштування heartbeat для управління MQ-сервером наведені нижче:



  1. Як згадувалося раніше, керовані heartbeat ресурси являють собою головним чином сценарії start / stop. Ви повинні створити сценарії для запуску і зупинки менеджера черги WebSphere MQ і всіх відповідних процесів. Дуже узагальнений сценарій показаний в лістингу 1. Ви можете налаштувати його під ваші вимоги. Цей сценарій повинен бути розміщений в каталозі / etc / rc.d / init.d.

    Лістинг 1. Сценарій mqseries





    #!/bin/bash
    #
    # /etc/rc.d/init.d/mqseries
    #
    # Starts the MQ Server
    #
    # chkconfig: 345 88 57
    # description: Runs MQ
    . /etc/init.d/functions
    # Source function library.
    PATH=/usr/bin:/bin:/opt/mqm/bin
    QMGRS=”ha.queue.manager”
    PS=/bin/ps
    GREP=/bin/grep
    SED=/bin/sed
    #====================================================================
    SU=”sh”
    if [ “`whoami`” = “root” ]; then
    SU=”su – mqm”
    fi
    #====================================================================
    killproc() { # kill the named process(es)
    pid=`$PS -e /
    $GREP -w $1 /
    $SED -e “s/^ *//” -e “s/ .*//”`
    [ “$pid” != ” ] & kill -9 $pid
    }
    #====================================================================
    start() {
    for qmgr in $QMGRS ; do
    export qmgr
    echo “$0: starting $qmgr”
    $SU -c “strmqm $qmgr”
    $SU -c “nohup runmqlsr -m $qmgr -t tcp -p 1414 > /dev/null 2&t;&1 < /dev/null &”
    done
    }
    #====================================================================
    stop() {
    for qmgr in $QMGRS ; do
    export qmgr
    echo ending $qmgr
    killproc runmqlsr
    $SU -c “endmqm -w $qmgr &”
    sleep 30
    done
    }
    case $1 in
    “start”)
    start
    ;;
    “stop”)
    stop
    ;;
    “restart”)
    stop
    start
    ;;
    *)
    echo “usage: $0 {start/stop/restart}”
    ;;
    esac


  2. Тепер потрібно налаштувати файл / etc / ha.d / haresources (на обох вузлах) і включити розглянутий вище сценарій mqseries приблизно так:

    ha1.haw2.ibm.com 9.22.7.46
    Filesystem::hanfs.haw2.ibm.com:/ha::/ha::nfs::rw,hard mqseries

    Це наказує, що при запуску heartbeat IP-адреса кластера буде призначений вузлу ha1, змонтує загальна файлова система / ha, а потім запустяться процеси WebSphere MQ. При зупинці heartbeat спочатку зупинить процеси WebSphere MQ, потім размонтірует файлову система і, нарешті, звільнить IP-адресу.

 


Тестування HA для WebSphere MQ


У цьому розділі наведені покрокові інструкції. необхідні для тестування функцій підвищеної готовності менеджера черги ha.queue.manager.



  1. Запустіть службу heartbeat на основному вузлі, а потім на резервному вузлі:

    /etc/rc.d/init.d/heartbeat start

    Якщо вона не запуститься, подивіться файл / var / log / messages для визначення причини та її усунення. Після успішного запуску heartbeat ви повинні побачити новий інтерфейс з IP-адресою, яку ви вказали в файлі ha.cf. Ви можете відобразити його, виконавши команду ifconfig. У лістингу 2 приведена відповідна частина відображається на екрані інформації:

    Лістинг 2. Інтерфейс для IP-адреси кластера






    eth0:0 Link encap:Ethernet HWaddr 00:D0:59:DA:01:50
    inet addr:9.22.7.46 Bcast:9.22.7.127 Mask:255.255.255.128
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:76541 errors:0 dropped:0 overruns:0 frame:0
    TX packets:61411 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:8830515 (8.4 Mb) TX bytes:6755709 (6.4 Mb)
    Interrupt:11 Base address:0x6400 Memory:c0200000-c0200038


    Відразу після запуску heartbeat подивіться ваш log-файл (за замовчуванням / var / log / ha-log) перед тестуванням. Якщо все нормально, log-файл на основний машині (в даному прикладі ha1) повинен бути схожий на наведений в лістингу 3 (деякі рядки з метою форматування наведені з переносом).

    Лістинг 3. Вміст файлу ha-log






    heartbeat: 2004/09/01_11:17:13 info: **************************
    heartbeat: 2004/09/01_11:17:13 info: Configuration validated.
    Starting heartbeat 1.2.2
    heartbeat: 2004/09/01_11:17:13 info: heartbeat: version 1.2.2
    heartbeat: 2004/09/01_11:17:13 info: Heartbeat generation: 10
    heartbeat: 2004/09/01_11:17:13 info: Starting serial heartbeat on
    tty /dev/ttyS0 (19200 baud)
    heartbeat: 2004/09/01_11:17:13 info: ping heartbeat started.
    heartbeat: 2004/09/01_11:17:13 info: pid 9226 locked in memory.
    heartbeat: 2004/09/01_11:17:13 info: Local status now set to: “up”
    heartbeat: 2004/09/01_11:17:14 info: pid 9229 locked in memory.
    heartbeat: 2004/09/01_11:17:14 info: pid 9230 locked in memory.
    heartbeat: 2004/09/01_11:17:14 info: pid 9231 locked in memory.
    heartbeat: 2004/09/01_11:17:14 info: pid 9232 locked in memory.
    heartbeat: 2004/09/01_11:17:14 info: pid 9233 locked in memory.
    heartbeat: 2004/09/01_11:17:14 info: Link 9.22.7.1:9.22.7.1 up.
    heartbeat: 2004/09/01_11:17:14 info: Status update for node 9.22.7.1:
    status ping

    heartbeat: 2004/09/01_11:19:18 info: Acquiring resource group:
    ha1.haw2.ibm.com 9.22.7.46 mqseries
    heartbeat: 2004/09/01_11:19:18 info: Running /etc/ha.d/resource.d/IPaddr
    9.22.7.46 start
    heartbeat: 2004/09/01_11:19:18 info: /sbin/ifconfig eth0:0 9.22.7.46
    netmask 255.255.255.128 broadcast 9.22.7.127
    heartbeat: 2004/09/01_11:19:18 info: Sending Gratuitous Arp for
    9.22.7.46 on eth0:0 [eth0]

    heartbeat: 2004/09/01_11:19:49 info: Running /etc/init.d/mqseries start


    Ви можете побачити, що спочатку був привласнений IP-адресу, а потім запущені процеси WebSphere MQ. Використовуйте команду ps для перевірки виконання WebSphere MQ на основному вузлі.


  2. Помістіть кілька повідомлень для обов’язкової доставки в BGQUEUE. Це можна зробити за допомогою програми MQ Sender, send.bat або send.sh (в залежності від вашої операційної системи). Ви повинні запустити цю програму на машині, на якій встановлено MQ Client. У лістингу 4 показана відображувана інформація при запуску на вузлі ha1.

    Лістинг 4. Приміщення повідомлень для обов’язкової доставки в HA-черга





    [root@ha1 mq]# ./send.sh
    MSender is running
    Hostname = ha.haw2.ibm.com
    QManager = ha.queue.manager
    Channel Name = HA.CHANNEL
    Channel Port = 1414
    Q = HA.QUEUE
    Enter a message:
    Hello
    This
    is
    a
    test
    Done Sending Message
    [root@ha1 mq]#


  3. Перегляньте та отримайте всі повідомлення. Використовуйте програму MQ Browse, receive.bat або receive.sh (в залежності від вашої операційної системи). Отримайте всі повідомлення, поміщені в чергу раніше, за винятком останнього “test.” Останнє повідомлення ви отримаєте після аварійного відновлення працездатності. У лістингу 5 приведена відображається інформація при запуску на вузлі ha1.

    Лістинг 5. Отримання повідомлень для обов’язкової доставки з HA-черзі





    [root@ha1 mq]# ./receive.sh
    MBrowse is running
    Hostname = ha.haw2.ibm.com
    QManager = ha.queue.manager
    Channel Name = HA.CHANNEL
    Channel Port = 1414
    Q = HA.QUEUE
    Browsed message: Hello
    Actually get message?y
    Actually getting the message
    Browsed message: This
    Actually get message?y
    Actually getting the message
    Browsed message: is
    Actually get message?y
    Actually getting the message
    Browsed message: a
    Actually get message?y
    Actually getting the message
    Browsed message: test
    Actually get message?n
    MQJE001: Completion Code 2, Reason 2033
    MQ exception: CC = 2 RC = 2033

    Ігноруйте виняткову ситуацію MQ Exception з кодом Reason 2033 в кінці. Вона виникає через те, що немає більше повідомлень для отримання з черги.


  4. Семуліруйте аварію. Це може бути зроблено простим остановом heartbeat на основній системі за допомогою команди:

    /etc/rc.d/init.d/heartbeat stop

    Ви повинні побачити, що менш ніж через хвилину на другій машині запустяться всі процеси. Якщо ні, перегляньте файл / var / log / messages для визначення та усунення проблеми. Ви можете відновити роботу на основній машині, повторно запустивши heartbeat. Heartbeat завжди буде віддавати перевагу основної системи і буде запускатися, як тільки з’явиться можливість. Переконайтеся, що WebSphere MQ працює, перевіривши файл / var / log / ha-log і виконавши команду ps на резервної машині.

  5. Перегляньте та отримайте останні повідомлення. Виконайте програму MQ Browse, receive.bat або receive.sh (в залежності від вашої операційної системи). На цей раз ви отримаєте останні повідомлення. У лістингу 6 приведена відображається на екрані вузла ha2 інформація.

    Лістинг 6. Отримання повідомлень для обов’язкової доставки з HA-черзі





    [root@ha2 mq]# ./receive.sh
    MBrowse is running
    Hostname = ha.haw2.ibm.com
    QManager = ha.queue.manager
    Channel Name = HA.CHANNEL
    Channel Port = 1414
    Q = HA.QUEUE
    Browsed message: test
    Actually get message?y
    Actually getting the message
    MQJE001: Completion Code 2, Reason 2033
    MQ exception: CC = 2 RC = 2033


  6. Повторно запустіть службу heartbeat на основному вузлі. Це має зупинити процеси WebSphere MQ-серверу на другорядної системі і запустити їх на основний. Основна система повинна також взяти під свій контроль IP-адреса кластера.

Тепер ви побачили, як при використанні загального диска можна відновити повідомлення, поміщені в чергу перед аварією.


 


Висновок


У цій частині ви дізналися, як реалізувати підвищену готовність для WebSphere MQ за допомогою програмного забезпечення з відкритими вихідними кодами в операційній системі Linux. У наступній частині ми розглянемо HA-реалізацію планувальника IBM LoadLeveler.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*