Обеспечение отказоустойчивости веб-сервера (сайта), зеркалирование данных - блог компании Миранор Обеспечение отказоустойчивости веб-сервера (сайта), зеркалирование данных - сайт компании Миранор

RSS-подписка

RSS-подписка
RSS-подписка

воскресенье, 14 августа 2011 г.

Как настроить отказоустойчивый веб-сервер высокой доступности при помощи DRBD и Heartbeat

Около трех лет назад я планировал настроить новый сервер, на котором должен был работать новый портал, а также электронная почта, базы данных, DNS и так далее. Важной целью было создание отказоустойчивого решения, чтобы, если один из серверов не работает, это не влияло бы на работу сервисов компании.

Я перепробовал множество отказоустойчивых решений, доступных для Linux серверов, но с большинством решений у меня возникали проблемы при запуске всех необходимых сервисов. Так как, есть очень большая разница в функциональности между, например, службами Sendmail и PostgreSQL.

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

DRBD создает отдельные разделы на жестких дисках двух машин и осуществляет зеркалирование данных на этих разделах. При этом полный доступ к зеркалу DRBD имеет только мастер - сервер (основной сервер). Heartbeat осуществляет мониторинг оборудования, и если обнаружит, что основной сервер упал - запускает все сервисы на зеркале, тем самым обеспечивая отказоустойчивость сервера.

Эта схема работает у меня около трех лет, и позволила сделать незаметными аппаратные сбои в компании.

Далее я опишу вам, как настроить отказоустойчивость Sendmail, потому что как только вы сделаете это, вы сможете настроить отказоустойчивость практически для любого другого сервиса, который вам необходим. Предполагаем, что главный сервер называется server1 и имеет IP адрес 192.168.1.1, а резервный сервер называется server2 и имеет IP-адрес 192.168.1.2.

И если вы не хотите, чтобы к вашему почтовому серверу был доступ по этим адресам, то, в этом случае мы присвоим ему виртуальный адрес 192.168.1.5. В конфигурационном файле Heartbeat можно, конечно, изменить эти IP-адреса на любые другие.

Как это работает

Этот способ обеспечения отказоустойчивости сервера работает за счет зеркалирования разделов жестких дисков в режиме master/slave. Сервер, который работает в качестве master, имеет полный доступ на чтение / запись на master-диск, в то время как сервер, который работает как slave, реплицирует все изменения, сделанные на главном сервере, при этом не имея доступа на запись к master-диску.

Поэтому, все процессы, которым необходимо получить доступ к зеркалируемому диску, должны быть запущены на master-сервере. Если главный сервер выходит из строя, служба Heartbeat запускается на резервном сервере и сообщает DRBD, что теперь резервный сервер стал master, монтирует реплицированный диск, а затем активизирует все процессы и данные, хранящиеся на этом диске.

Как запустить систему, обеспечивающую отказоустойчивость сервера

Первым делом для запуска отказоустойчивой системы нужно иметь два сервера, способных справится с требуемыми задачами. Они могут иметь разные характеристики, но они должны отвечать следующим требованиям:

· Достаточно свободного места на обоих серверах для создания одинаковых по размеру разделов на каждом из них.
· Одинаковые версии программного обеспечения, которое вы хотите запускать на обоих машинах.
· Сетевая карта с кабелем витой пары или хаб/свитч.
· Дополнительный Serial порт и Serial кабель для расширенного мониторинга.

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

Важно, чтобы у вас было достаточно места на мастер-разделе, потому что он будет основным местом хранения данных для сервисов.

Основные настройки для отказоустойчивости сервера

После того как вы убедитесь, что сервера настроены правильно, можно создавать одинаковые по размеру разделы на обеих машинах. На этом этапе вам не нужно создавать файловую систему на этом разделе, так как это надо будет сделать один раз поверх работающего зеркала DRBD.

Для своих серверов, я создал одно DRBD зеркало, которое выглядит примерно так в таблице разделов Linux:

/dev/sda5 7916 8853 7534453+ 83 Linux

Примечание: команда fdisk -l из командной строки показывает список разделов в формате, приведенном выше. В моем случае, таблица разделов одинакова на обоих серверах.

Следующим шагом после разбиения дисков является получение пакетов для Heartbeat и DRBD, а также компиляция ядра с модулем DRBD.

Теперь откройте файл /etc/hosts добавьте несколько строк, по одной на основной, на резервный сервер, а также на виртуальный почтовый сервер, как показано ниже::

192.168.1.1 server1
192.168.1.2 server2
192.168.1.5 mail
server1 - это master сервер, server2 - slave, mail - виртуальный адрес почтового сервера.

Наконец, на обоих ваших серверах создайте папку /replicated и добавьте следующую строку в файл /etc/fstab:

/dev/drbd0 /replicated ext3 noauto 0 0

После этого можно начинать настройку DRBD и Heartbeat.

ОРИГИНАЛ

Обсуждение статьи и дополнительная информация на нашем форуме:

Отказоустойчивый сервер

Комментариев нет:

Отправить комментарий