Програмне забезпечення підвищеної готовності проміжного рівня в Linux

У цій першій з п'яти статей ви дізнаєтеся, що означає для програмного забезпечення підвищена готовність (high availability – HA) і як встановити та налаштувати програмне забезпечення heartbeat з проекту High-Availability Linux в двоелементною системі. Ви також дізнаєтеся, як сконфігурувати Web-сервер Apache для роботи в якості служби підвищеної готовності.


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


Покрокові інструкції в цій серії показують, як створити в Linux ™ підтримують підвищену готовність Web-сервер Apache, менеджер черги WebSphere ® MQ, кластер LoadLeveler, кластер WebSphere Application Server і DB2 ® Universal Database. Системний адміністратор може навчитися використовувати і підтримувати цю систему за мінімальний час. Описані в даній серії прийоми застосовуються також до будь-якої кількості служб в Linux.


Для найкращого засвоєння матеріалу ви повинні мати базові знання WebSphere MQ, WebSphere Application Server, IBM LoadLeveler, DB2 Universal Database і кластерів підвищеної готовності.


Введення


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


Ця стаття концентрується на проблемах, з якими ви можете зіткнутися при реалізації HA-рішень. Ми розглянемо концепції HA, доступне програмне забезпечення, апаратне забезпечення для використання і деталі установки і настройки heartbeat (програмного забезпечення HA з відкритим вихідним кодом для Linux), а також побачимо, як забезпечити підвищену готовність Web-сервера за допомогою heartbeat.


Апаратні вимоги


Описані в даній серії тестові сценарії вимагають наступного апаратного забезпечення:



У моїй конфігурації я використав машини IBM eServer ™ xSeries ™ 335 з 1 GB RAM. Для загального диску я використовував одну з цих машин як NFS-сервер. Вимоги до програмного забезпечення для повної установки наступні (хоча для цієї статті вам потрібен тільки Red Hat Enterprise Linux і heartbeat):



Ви можете виконати тестові сценарії шляхом завантаження пакетів, перерахованих нижче в розділі "Завантаження". У таблиці 1 описані каталоги в hahbcode.tar.gz.


Таблиця 1. Що знаходиться в пакеті прикладу

























Каталог Вміст
heartbeat Приклади конфігураційних файлів для heartbeat
www HTML-файли для тестування HA Apache Web Server
mq Сценарії та код для WebSphere MQ HA:

  • mqseries: Сценарій для запуску та вимикання менеджера черги WebSphere MQ та інших процесів в якості служб Linux
  • hascript: Сценарії для створення менеджера HA-черзі
  • send (sh / bat): Сценарій для переміщення даних в чергу
  • receive (sh / bat): Сценарій для перегляду / отримання даних з черги
loadl Файл loadl для запуску та вимикання LoadLeveler в якості служби Linux
was Сценарій та код для WebSphere Application Server HA:

  • wasdmgr: Сценарій для запуску та вимикання WebSphere ND Deployment Manager в якості служби Linux
  • wasnode: Сценарій для запуску та вимикання WebSphere Node Agent в якості служби Linux
  • wasserver: Сценарій для запуску та вимикання WebSphere Application Server в якості служби Linux
  • sample_ver_ (1/2/3): Каталоги, містять різні версії прикладу корпоративного програми для тестування WebSphere HA
db Сценарії для перевірки доступності бази даних, створення таблиці, вставки рядків у таблицю і вибору рядків з таблиці



Концепції підвищеної готовності


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


Поняття "кластер" має кілька значень в комп'ютерній індустрії. У цій статті, якщо не вказано інше, кластер описує heartbeat-кластер , Що представляє собою набір вузлів і ресурсів (наприклад дисків і мереж), які взаємодіють між собою заради забезпечення підтримки перенесення бізнес-операцій на іншу доступну в кластері машину.


Двома основними конфігураціями кластеру є:



Ви повинні запланувати кілька ключових моментів при установці HA-кластеру:



Доступне програмне забезпечення HA


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



У цій серії статей описується програма heartbeat з відкритими початковими кодами. Однак вивчені тут концепції ви можете застосувати до будь-якої згаданої програмній системі.


Проект High-Availability Linux і heartbeat


Метою проекту з відкритими вихідними кодами під назвою High-Availability Linux є забезпечення просувається спільними зусиллями спільноти розробників кластерного рішення для Linux, що сприяє надійності, доступності та обслужіваемості (RAS). Проект Linux-HA широко використовується і є важливим компонентом багатьох цікавих рішень підвищеної готовності.


Heartbeat – це один із загальнодоступних пакетів на Web-сайті проекту Linux-HA. Він забезпечує основні функції, потрібні для будь-якої HA-системи, наприклад, запуск і останов ресурсів, моніторинг доступності системи в кластері та передача прав володіння загальною IP-адресою між вузлами кластера. Він стежить за станом конкретної служби (або служб) по послідовному кабелю, інтерфейсу Ethernet, або по обох. Поточна версія підтримує двовузлового конфігурацію, в якій для перевірки стану та доступності служби використовується спеціальний квітірующій монітор heartbeat. Heartbeat надає фундамент для більш складних сценаріїв, ніж описані в даній серії статей, наприклад конфігурації активний / активний, в якій обидва вузла працюють паралельно і розподіляють навантаження.


Для отримання додаткової інформації з heartbeat і проектах, в яких він використовується, відвідайте Web-сайт проекту Linux-HA.


Конфігурація кластеру


Тестова конфігурація кластера для цих статей показана на малюнку 1. Система складається з двох об'єднаних у кластер серверів (ha1 і ha2), обидва з яких мають доступ до дискової системі, яка містить кілька фізичних дисків; сервери працюють в режимі холодного резерву. Дані додатки повинні розміщуватися на загальному пристрої, до якого можуть отримати доступ обидва вузла. Це може бути спільний диск або мережева файлова система. Пристрій сам має бути продубльовані або мати механізми захисту даних для запобігання їх пошкодження. Така конфігурація часто називається кластером із загальним диском, хоча на насправді має архітектуру з відсутністю загальних ресурсів, оскільки в ній немає дисків, до яких звертається більше одного вузла одночасно.


Малюнок 1. Конфігурація heartbeat-кластеру у виробничому середовищі

Для тестової системи я використовував NFS в якості механізму спільного диска, як показано на малюнку 2, хоча я рекомендую застосовувати варіант, зображений на малюнку 1, особливо у виробничому середовищі. Для передачі сигналів квитування між двома вузлами використовується "нуль-модемний" кабель, приєднаний до послідовних портів двох систем.


Малюнок 2. Конфігурація heartbeat-кластера з використанням NFS для спільної файлової системи

У таблиці 2 наведена конфігурація використовувана мною для обох вузлів. У вашому випадку імена хостів та IP-адреси повинні бути отримані або з DNS, або з файлів / etc / hosts для обох вузлів.


Таблиця 2. Тестова конфігурація кластера




























Роль Ім'я хоста IP-адреса
Загальний IP (кластеру) ha.haw2.ibm.com 9.22.7.46
Node (майстер) ha1.haw2.ibm.com 9.22.7.48
Node (резерв) ha2.haw2.ibm.com 9.22.7.49
Node3 (не показаний) ha3.haw2.ibm.com 9.23.7.50
NFS-сервер hanfs.haw2.ibm.com 9.2.14.175



Налаштування послідовного з'єднання


Для з'єднання двох вузлів через послідовні порти використовуйте "нуль-модемний" кабель. Тепер перевірте з'єднання наступним чином:


На ha1 (приймач) введіть:






    cat < /dev/ttyS0

На ha2 (передавач) введіть:






    echo “Serial Connection test” > /dev/ttyS0

Ви повинні побачити текст на вузлі-приймачі (ha1). Якщо все працює правильно – поміняйте ролі вузлів і повторіть тест.


Налаштування NFS в якості загальної файлової системи


Для розділення даних між вузлами в тестовій конфігурації я використав NFS.



Для установки і запуску NFS:



  1. Створіть каталог / ha на вузлі nfsha.
  2. Відредагуйте файл / etc / exports. Цей файл містить набір рядків; кожен рядок вказує розділяється тому і метод його поділу. У лістингу 1 показана відповідний фрагмент файлу exports моєї системи.

    Лістинг 1. Файл exports






    /ha 9.22.7.48(rw,no_root_squash)
    /ha 9.22.7.46(rw,no_root_squash)
    /ha 9.22.7.35(rw,no_root_squash)
    /ha 9.22.7.49(rw,no_root_squash)
    /ha 9.22.7.50(rw,no_root_squash)


  3. Запустіть NFS-служби. Якщо NFS вже запущений, ви повинні виконати команду /usr/sbin/exportfs -ra для того, щоб nfsd перечитав файл / etc / exports.
  4. Додайте файлову систему / ha у ваш файл / etc / fstab на обох HA-вузлах (ha1 і ha2), також як і для локальних файлових систем. У лістингу 2 наведена відповідна частина мого файлу fstab:

    Лістинг 2. Файл fstab






    nfsha.haw2.ibm.com:/ha /ha nfs noauto,rw,hard 0 0


    Далі ми сконфігуріруем heartbeat для монтування цієї файлової системи.


  5. Розархівуйте приклад коду hahbcode.tar.gz на цій файловій системі за допомогою команд, наведених в лістингу 3. (Попередньо завантажте приклад коду з розділу "Завантаження".)

    Лістинг 3. Розархівація прикладу коду





    cd/ha
    tar xvfz hahbcode.tar.gz


Завантаження та встановлення heartbeat


Завантажте heartbeat, використовуючи посилання, наведену в розділі "Ресурси", потім встановіть його на обох машинах ha1 і ha2, вводячи команди, наведені в лістингу 4 (у зазначеному порядку).


Лістинг 4. Команди для установки heartbeat







rpm-ivh heartbeat-pils-1.2.2-8.rh.el.3.0.i386.rpm
rpm -ivh heartbeat-stonith-1.2.2-8.rh.el.3.0.i386.rpm
rpm -ivh heartbeat-1.2.2-8.rh.el.3.0.i386.rpm



Налаштування heartbeat


Для роботи heartbeat ви повинні налаштувати три файли: authkeys, ha.cf і haresources. Я покажу вам конкретну конфігурацію, яку використовував для цієї реалізації, якщо вам потрібна додаткова інформація, зверніться, будь ласка, на Web-сайт heartbeat і прочитайте документацію.

1. Налаштування / etc / ha.d / authkeys


У цьому файлі визначаються Ваші аутентифікаційні ключі для кластера; ключі повинні бути однаковими для обох вузлів. Ви можете вибрати одну з трьох схем аутентифікації: crc, md5 або sha1. Якщо ваш heartbeat виконується в захищеній мережі, такий як у нашому прикладі, ви, ймовірно, захочете застосувати crc. Це найдешевший метод з точки зору споживання ресурсів. Якщо мережа незахищена, а ви не параноїк і турбуєтеся про мінімізацію ресурсів процесора, – використовуйте md5. Нарешті, якщо ви бажаєте мати найкращу аутентифікацію незалежно від ресурсів процесора, використовуйте sha1, оскільки його зламати найбільш важко.


Формат файлу наступний:






    auth <number>
<number> <authmethod> [<au2. Налаштування / etc / ha.d / ha.cfthkey>]

Для тестового прикладу я вибрав схему crc. Лістинг 5 показує файл / etc / ha.d / authkeys. Переконайтеся, що права доступу до цього файлу є безпечними, наприклад 600.


Лістинг 5. Файл authkeys





auth2
2 crc

2. Налаштування / etc / ha.d / ha.cf


Цей файл буде розміщений в каталозі / etc / ha.d, створеному після установки. Він вказує на heartbeat, які шляхи (path) використовувати і як їх настроїти. У цьому файлі визначаються також вузли в кластері і інтерфейси, що використовуються для перевірки стану системи. У лістингу 6 приведена відповідна частина мого файлу / etc / ha.d / ha.cf.


Лістинг 6. Файл ha.cf






# File to write debug messages to
debugfile /var/log/ha-debug
#
#
# File to write other messages to
#
logfile /var/log/ha-log
#
#
# Facility to use for syslog()/logger
#
logfacility local0
#
#
# keepalive: how long between heartbeats?
#
keepalive 2
#
# deadtime: how long-to-declare-host-dead?
#
deadtime 60
#
# warntime: how long before issuing “late heartbeat” warning?
#
warntime 10
#
#
# Very first dead time (initdead)
#
initdead 120
#

# Baud rate for serial ports…
#
baud 19200
#
# serial serialportname …
serial /dev/ttyS0
# auto_failback: determines whether a resource will
# automatically fail back to its “primary” node, or remain
# on whatever node is serving it until that node fails, or
# an administrator intervenes.
#
auto_failback on
#

#
# Tell what machines are in the cluster
# node nodename … — must match uname -n
node ha1.haw2.ibm.com
node ha2.haw2.ibm.com
#
# Less common options…
#
# Treats 10.10.10.254 as a pseudo-cluster-member
# Used together with ipfail below…
#
ping 9.22.7.1
# Processes started and stopped with heartbeat. Restarted unless
# they exit with rc=100
#
respawn hacluster /usr/lib/heartbeat/ipfail


3. Налаштування / etc / ha.d / haresources


Цей файл описує ресурси, керовані програмою heartbeat. Ресурси звичайно являють собою прості старт / стоп сценарії, дуже схожі на використовувані для запуску та вимикання ресурсів в / etc / rc.d / init.d. Зверніть увагу, що heartbeat буде шукати сценарії в каталогах / etc / rc.d / init.d та / etc / ha.d / resource.d. Файл сценарію httpd поставляється разом з heartbeat. У лістингу 7 наведено мій файл / etc / ha.d / haresources:


Лістинг 7. Файл haresources





ha1.haw2.ibm.com 9.22.7.46 Filesystem:: nfsha.haw2.ibm.com: / ha:: / ha:: nfs:: rw, hard httpd

Цей файл повинен бути однаковим на обох вузлах.


Цей рядок наказує, що при старті:



Я додам більше ресурсів в цей файл в наступних статтях. При зупинці heartbeat повинен:



Передбачається, що команда uname -n відображає ha1.haw2.ibm.com; на вашій системі може відобразитися ha1, і якщо це так, використовуйте ha1.


Налаштування HTTP-сервера Apache для HA


На цьому етапі я зроблю декілька змін в конфігурації Web-сервера Apache, так щоб він обслуговував файли з загальної системи та з файлових систем, локальних для двох машин ha1 і ha2. Файл index.html (включений в приклади) буде розташовуватися на загальних диску, а файл hostname.html буде розташований на локальній файловій системі кожної з машин ha1 і ha2. Для реалізації HA в Web-сервер Apache:



  1. Увійдіть як root.
  2. Створіть наступні каталоги на загальних диску (/ ha):

    /ha/www
    /ha/www/html


  3. Встановіть відповідні права доступу до загальних каталогах, використовуючи наведені нижче команди на вузлі ha1:

    chmod 775 /ha/www
    chmod 775 /ha/www/html


  4. На обох машинах (основної і резервної) перейменуйте каталог html Web-сервера Apache:

    mv /var/www/html /var/www/htmllocal


  5. Створіть символічні посилання для поділу каталогів, використовуючи наступні команди на обох машинах:

    ln -s /ha/www/html /var/www/html


  6. Скопіюйте файл index.html в каталог / ha / www / html на вузлі ha1:

    cp /ha/hahbcode/www/index.html /var/www/html

    Ви повинні змінити ім'я кластеру в цьому файлі.
  7. Скопіюйте файл hostname.html в каталог / ha / www / htmllocal на обох машинах:

    cp /ha/hahbcode/www/hostname.html /var/www/html

    Змініть ім'я кластеру та ім'я вузла в цьому файлі.
  8. Створіть символічні посилання для файлу hostname.html на обох машинах:

    ln -s /var/www/htmllocal/hostname.html /ha/www/html/hostname.html


Тепер ви готові протестувати реалізацію HA.


Тестування HA для HTTP-сервера Apache


Для тестування підвищеної готовності Web-сервера:



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

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

    Якщо вона не запуститься – загляньте в / var / log / messages для визначення причини і її усунення. Після успішного запуску heartbeat ви повинні побачити новий мережевий інтерфейс з IP-адресою, яку ви вказали у файлі ha.cf. Як тільки ви запустили heartbeat, подивіться ваш log-файл (за замовчуванням / var / log / ha-log) на основний машині і переконайтеся, що вона виконує заміщення IP, а потім запускається Web-сервер Apache. Використовуйте команду ps для перевірки роботи демона Web-сервера на основному вузлі. Heartbeat не запустить будь-який процес Web-сервера на резервному вузлі. Це відбудеться тільки тоді, коли зламається основний вузол.
  2. Перевірте, що дві Web-сторінки обробляються коректно на вузлі ha1, вказавши в браузері наступні URL (якщо ви використовуєте інше ім'я хоста, ваші URL будуть іншими):

    http://ha.haw2.ibm.com/index.html
    http://ha.haw2.ibm.com/hostname.html

    Зверніть увагу, що я використовую в цих URL адрес кластера, а не адресу основного вузла.
    Браузер повинен відобразити наступний текст для першого URL:

    Hello!!! I am being served from a High Availability Cluster ha.haw2.ibm.com

    Браузер повинен відобразити наступний текст для другого URL:

    Hello!!! I am being served from a node ha1.haw2.ibm.com in a High Availability Cluster ha.haw2.ibm.com


  3. Семуліруйте відновлення після відмови за допомогою простого зупину heartbeat на основній системі, використовуючи наступну команду:

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

    Ви повинні побачити, що всі процеси Web-сервера запускаються на резервній машині менше ніж за хвилину. Якщо ні – подивіться файл / var / log / messages для визначення та усунення проблеми.
  4. Перевірте коректність обробки двох Web-сторінок вузлом ha2, вказавши в браузері наступні URL:

    http://ha.haw2.ibm.com/index.html
    http://ha.haw2.ibm.com/hostname.html

    Браузер повинен відобразити наступний текст для першого URL:

    Hello!!! I am being served from a High Availability Cluster ha.haw2.ibm.com

    Браузер повинен відобразити наступний текст для другого URL:

    Hello!!! I am being served from a node ha2.haw2.ibm.com in a High Availability Cluster ha.haw2.ibm.com

    Зверніть увагу, що вузлом, обслуговуючим цю сторінку, є ha2.
  5. Запустіть повторно службу heartbeat на основному вузлі. Це має зупинити процеси сервера Apache на резервному вузлі і запустити їх на основному. Основний вузол також повинен захопити IP-адрес кластера.

Таким чином, при розміщенні Web-сторінок на загальному диску резервна машина може відображати їх клієнту в разі аварії на основний машині. Відновлення після збою відбувається непомітно для користувача, який звернувся до Web-сторінок. Ця технічний прийом може бути також застосований для обслуговування CGI-сценаріїв.


Висновок


Я сподіваюся, що ви спробували ці рекомендації для встановлення Web-сервера з підвищеною готовністю з використанням недорогих апаратних засобів і доступного програмного забезпечення. У наступній статті цієї серії ви дізнаєтеся, як побудувати менеджер черги повідомлень з високою готовністю, використовуючи WebSphere MQ.

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


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

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

Ваш отзыв

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

*

*