(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Программное обеспечение повышенной готовности промежуточного уровня в Linux, часть 1: Heartbeat и Web-сервер Apache

Хидаятула Шейх

В этой первой из пяти статей вы узнаете, что значит для программного обеспечения повышенная готовность (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.

Аппаратные требования

Описанные в данной серии тестовые сценарии требуют следующего аппаратного обеспечения:

  • Четырех систем, поддерживающих Linux, с сетевыми адаптерами Ethernet
  • Один общий внешний жесткий диск SCSI (twin tail disk - сдвоенный диск)
  • Один нуль-модемный последовательный кабель IBM

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

  • Red Hat Enterprise Linux 3.0 (2.4.21-15.EL)
  • heartbeat 1.2.2
  • IBM Java 2 SDK 1.4.2
  • WebSphere MQ for Linux 5.3.0.2 with Fix Pack 7
  • LoadLeveler for Linux 3.2
  • WebSphere Base Edition 5.1.1 for Linux with Cumulative Fix 1
  • WebSphere ND 5.1 for Linux with Fixpack 1
  • DB2 Universal Database Enterprise Server Edition 8.1 Linux

Вы можете выполнить тестовые сценарии путем загрузки пакетов, перечисленных ниже в разделе "Загрузка". В таблице 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-кластер , представляющий собой набор узлов и ресурсов (например дисков и сетей), которые взаимодействуют между собой ради обеспечения поддержки переноса бизнес-операций на другую доступную в кластере машину.

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

  • Резервная (standby) конфигурация: Самая стандартная конфигурация кластера, при которой один узел работает одновременно с другим узлом в качестве резервного. Резервный узел не выполняет работу и называется простаивающим ; такая конфигурация иногда называется холодным резервом (cold standby) . Она требует высокой степени аппаратной избыточности. В этой серии статей внимание уделяется конфигурации "холодный резерв".
  • Поглощающая (takeover) конфигурация: Более передовая конфигурация, в которой все узлы выполняют работу определенного вида, а критически важная работа может быть передана в случае аварии узла. В односторонней поглощающей конфигурации резервный узел выполняет некоторую дополнительную, некритичную, неперемещаемую работу. В обоюдной поглощающей конфигурации все узлы выполняют (перемещаемую) работу повышенной готовности. В этой серии статей такая конфигурация не рассматривается.

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

  • Используемые для хранения данных диски должны быть связаны индивидуальным соединением (последовательный кабель) или подсоединены к сети (LAN) серверов, образующих кластер.
  • Должен существовать метод для автоматического обнаружения аварийного ресурса. Это делается при помощи программного компонента, называемого квитирующим монитором (heartbeat monitor) .
  • Должна существовать автоматическая передача прав владения ресурсом одному или нескольким членам кластера, сохранившим работоспособность во время аварии.

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

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

  • heartbeat (Linux)
  • High Availability Cluster Multiprocessing - HACMP (AIX)
  • IBM Tivoli System Automation for Multiplatforms (AIX, Linux)
  • Legato AAM 5.1 (AIX, HP-UX, Solaris, Linux, Windows)
  • SteelEye LifeKeeper (Linux, Windows)
  • Veritas Cluster Server (AIX, HP-UX, Solaris, Linux, Windows)

В этой серии статей описывается программа 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-сервера используется узел nfsha.haw2.ibm.com.
  • Файловая система /ha является общей.

Для установки и запуска 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

Этот файл должен быть одинаковым на обоих узлах.

Эта строка предписывает, что при старте:

  • ha1 должен обслуживать IP 9.22.7.46
  • Смонтировать общую файловую систему NFS /ha
  • Запустить Web-сервер Apache

Я добавлю больше ресурсов в этот файл в следующих статьях. При останове heartbeat должен:

  • Остановить сервер Apache
  • Размонтировать общую файловую систему
  • Освободить IP

Предполагается, что команда 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.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 07.12.2006 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Business Studio 4.2 Enterprise. Конкурентная лицензия + Business Studio Portal 4.2. Пользовательская именная лицензия.
Delphi Professional Named User
Microsoft 365 Business Basic (corporate)
Quest Software. SQL Navigator for Oracle
SmartBear AQtime Pro - Node-Locked License (Includes 1 Year Maintenance)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
СУБД Oracle "с нуля"
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Реестр Windows. Секреты работы на компьютере
Новые материалы
Новые программы для Windows
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100