место в рейтинге
  • 959346
  • 660
  • 77
Нравится блог?
Подписывайтесь!

Установка DRBD и HeartBeat

 

В данной короткой записке описано про установку пакетов DRBD и HeartBeard.

Эти две программы позволяют создать отказоустойчивый кластер из двух серверов. Такой кластер полезно использовать если вы хотите увеличить отказоустойчивость (и высокую доступность) например таких сервисов как: сервер с общими папками, почтовый сервер, Веб сервер и т.д.

В кластере работают два сервера, при недоступности первого (упал на пол, сломался жесткий диск ...), второй живой сервер автоматически перехватывает запросы на себя.

Принцип работы таков:

1. Например, есть два сервера с IP адресами 10.168.50.2 и 10.168.50.3. А также есть общий IP (псевдоним или алиас) адрес 10.168.50.10, который активен на первом сервере, на втором он выключен. Пользователи локальной сети будут работать с сетевым алиасом.

2. После установки пакета DRBD, на этих двух серверах надо выделить отдельные жесткие диски для сетевого дискового массива. Например эти диски имеют имена sda и sdb. Первый системный диск sda на котором стоит ОС, второй sdb - мы отдаем DRBD. Служба DRBD нужна для синхронизации дисков по ethernet сети между двумя серверами, получается этакий сетевой рейд массив уровня зеркалирования. То есть данные у нас дублируются с помощью DRBD - поэтому информация у нас защищена.

Замечание: Участвующие два сервера, должны иметь по два диска в своем системном блоке, чтобы кластер заработал.

3. После настройки DRBD и проверки его работы, можно приступать к настройке HeartBeat. Служба HeartBeat будет заниматься активацией сетевого алиаса (10.168.50.10), в случае поломки одного из серверов.

Замечание: Настройки DRBD и HeartBeat должны быть одинаковы на обоих серверах. Конфигурационные файлы почти один в один - похожи!

4. Когда настроен HeartBeat на обоих серверах, на первом сервере создается сетевой алиас с общим IP адресом - 10.168.50.10

5. На втором сервере также создается аналогичный алиас, но  он в выключенном состоянии, IP адрес у этого алиаса такой же как и у первого сервера - 10.168.50.10.  Когда упадет первый сервер, демон HeartBeat второго сервера обнаружит что первый сервер не работает,  и  присвоить общий IP адрес второму серверу - 10.168.50.3. Произойдет активация сетевого алиаса.

6. Таким способом достигается отказоустойчивость сервиса, в нашем случае это демон Apache. Активирование алиаса на втором сервере происходить за считанные секунды.

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

7. Этот том реплицируется по сети между двумя хостами 10.168.50. 2 и 10.168.50. 3 с помощью DRBD.

Причем репликация происходит в реальном времени - данные на двух серверах одинаковы.

 

1. Настройка имен хостов

Это надо чтобы обозначить какие хосты буду участвовать в кластере, почему именно файл /etc/hosts? Да все потому что это будет работать не зависимо от DNS серверов.

Открываем файл /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1

localhost localhost.localdomain localhost6 localhost6.localdomain6

10.168.50.2 node1.company.ru

10.168.50.3 node2.company.ru

Добавляем свои хосты, у меня их два.

Это:

10.168.50.2 node1.company.ru

10.168.50.3 node2.company.ru

Проверяем имя хоста на обоих серверах:

# hostname -f

node1.company.ru

или

# uname -n

node1.company.ru

2. Установка DRBD и HEARTBEAD

# rpm -Uvh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm

# yum install kmod-drbd83 drbd83-utils -y

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

# yum install heartbeat -y

Проверяем, поставлены ли  демоны  в автозагрузку:

# chkconfig drbd --list && chkconfig heartbeat --list

drbd           0:off 1:off 2:on 3:on 4:on 5:on 6:off

heartbeat       0:off 1:off 2:on 3:on 4:on 5:on 6:off

Как видим они прописаны в автозагрузке.

3. Настройка DRBD на обоих серверах одинаково

Добавляем наши настройки в головной файл демона DRBD, открываем файл /etc/drbd.conf

Сохраним оригинальный конфигурационный файл DRBD

Создадим свой файл /etc/drbd.d/disk1.res

resource disk1

{

startup {

wfc-timeout 30;

outdated-wfc-timeout 20;

degr-wfc-timeout 30;

}

net {

cram-hmac-alg sha1;

shared-secret sync_disk;

}

syncer {

rate 100M;

verify-alg sha1;

}

on node1.company.ru {

device minor 1;

disk /dev/sdb;

address 10.168.50.2:7789;

meta-disk internal;

}

on node2.company.ru {

device minor 1;

disk /dev/sdb;

address 10.168.50.3:7789;

meta-disk internal;

}

}

Проверяем какие есть диски в системе, у меня эти диски SATA:

# fdisk -l | grep sd

Disk /dev/sda: 32.5 GB, 32519487488 bytes

/dev/sda1   *           1          64      512000   83  Linux

/dev/sda2              64        3954    31244288   8e  Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes

Как видим у нас есть не размеченный диск sdb, последняя строчка вывода команды fdisk.

# drbdadm create-md disk1

Стартуем DRBD демон на обоих серверах одновременно:
# service drbd start
Проверка статуса DRBD массива
# cat /proc/drbd
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build32R6, 2013-09-27 15:59:12
1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:8388316
Здесь видим:
cs:Connected - это значить что есть связь между двумя нодами (серверами)
ro:Secondary/Secondary - режим работы ведомый/ведомый, потом мы сделаем из первого сервера - ведущий (Primary).
ds:Inconsistent/Inconsistent -  это говорит нам что данные на обоих нодах - не одинаковы и не обновляются.
Статус можно узнать еще по команде:
# service drbd status
Теперь делаем Primary из ноды1 (ведущий сервер)

# drbdadm -- --overwrite-data-of-peer primary disk1

Проверяем статус, теперь дон должен быть как ro:Primary/Secondary

И самое главное, теперь у нас есть синхронизация между ведущим и ведомым сервером.

После этого идет синхронизация между двумя серверами:

# watch cat /proc/drbd

1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----

ns:5678080 nr:0 dw:0 dr:5678752 al:0 bm:346 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2710236

[============>.......] sync'ed: 67.8% (2644/8188)M

finish: 0:01:08 speed: 39,608 (37,852) K/s

Проверка -  какое состояние обновления DRBD массива

# drbdadm dstate disk1

Inconsistent/UpToDate

После обновления будет как:
UpToDate/UpToDate
Проверяем какое устройство создано:
# ls -la /dev/ | grep drbd
drwxr-xr-x   4 root    root          80 Jan  6 00:07 drbd
brw-rw----   1 root    disk    147,   1 Jan  6 00:14 drbd1
Видим что появилось устройство с названием drbd1
Создадим файловую систему на этом устройстве (делаем только на Primary сервере), чтобы потом записывать файлы:
# mkfs -t ext4 /dev/drbd1
-
Создаем точку монтирования:
# mkdir /mnt/drbd1
-
Монтируем DRBD устройство:
# mount /dev/drbd1 /mnt/drbd1
-
Все, теперь у нас создан сетевой рейд :)
-
Теперь проверяем, делаем простой тест. Создадим файл /mnt/drbd1/test_privet
# echo 'test privet file' > /mnt/drbd1/test_privet
Размонтируем /mnt/drbd1
# umount /mnt/drbd1
Сделаем из Primary ноды Secondary:
# drbdadm secondary disk1
Переходим на второй сервер - нода 2:
Создаем каталог:
# mkdir /mnt/drbd1
Монтируем DRBD устройство:
# mount /dev/drbd1 /mnt/drbd1
Проверяем есть ли файл /mnt/drbd1/test_privet
# ls -l /mnt/drbd1
total 20
drwx------ 2 root root 16384 Jan  8 00:47 lost+found
-rw-r--r-- 1 root root    14 Jan  8 00:49 test_privet
Видим что он появился :)
Теперь все возвращаем назад. Размонтируем /mnt/drbd1
# umount /mnt/drbd1
Делам из Secondary из ноды 2:
# drbdadm secondary disk1
Подходим к серверу нод 1. Делаем из него Primary:
# drbdadm primary disk1
Монтируем устройство drbd:
# mount dev/drbd1 /mnt/drbd1
Тест пройден!
Двигаемся дальше.
Устанавливаем Apache:
# yum install httpd -y
На этот том мы должны скопировать наш сайт и добавить в /etc/httpd/conf/httpd - настройки виртуального хоста.
Открываем и добавляем в конец файла текст:
<VirtualHost *:80>
ServerAdmin support@company.ru
DocumentRoot /mnt/drbd1/
ServerName company.ru
ServerAlias www.company.ru
DirectoryIndex index.htmdl
ScriptAlias /cgi-bin/ mnt/drbd1/cgi-bin
ErrorLog /mnt/drbd1/logs/error_log
CustomLog /mnt/drbd1/logs/access_log common
RewriteLog /mnt/drbd1/logs/rewrite.log
RewriteLogLevel 1
</VirtualHost>
# mkdir /mnt/drbd1/cgi-bin
# mkdir /mnt/drbd1/logs
Создаем тестовую страничку:
# echo 'Privet, esli ti vidish etu stranicu, zna4it vse rabotaet ' > /mnt/drbd1/index.html
Файлы на этом устройстве автоматически в реальном времени копируются на второй сервер.
Если у вас много DRBD устройств, точки монтирования можно узнать через команду:
# service drbd status
Настройка HeartBeat

Создаем файл аутентификации между двумя хостами:
# vi /etc/ha.d/authkeys
auth 2
2 sha1 NoOneKnowsIt
Даем права на этот файл только root:
# chmod 600 authkeys
Создаем головной файд HeartBeat с именем /etc/ha.d/ha.cf
logfacility     local0
keepalive 2
deadtime 30
initdead 120
bcast eth1
auto_failback on
node node1.company.ru
node node2.company.ru
respawn hacluster /usr/lib/heartbeat/ipfail
use_logd yes
logfile /var/log/ha.log
debugfile /var/log/ha-debug.log
Создадим файлы логов:
# touch /var/log/{ha.log,ha-debug.log}
Создадим файл ресурса:
# vi haresources
node1.company.ru IPaddr::10.168.50.10/24 drbddisk::disk1 \
Filesystem::/dev/drbd1::/mnt/drbd1::ext4::defaults httpd
В этом файле у нас будет так называемый Shared IP address (общий IP адрес) - 10.168.50.10
Здесь мы указываем наше дисковое устройство DRBD с именем Disk1, а также сервис который должен контролировать HeartBeat.
Если на первой ноде упадет демон Apache или сервер выключится, работу демона веб сервера перехватит вторая нода, общий IP адрес 10.168.50.10 сперва будет у ноды 1, когда нода 1 упадет, общий IP адрес перекочует на ноду 2 на секунды.
При старте демона HeartBeat, создается виртуальный интерфейс с IP адресом 10.168.50.10.
Чтобы увидеть этот сетевой интерфейс, надо запустить команду:
# ip a
Стартуем сервис HeartBeart:
# service heartbeart start
Наш веб сервер Apache не надо ставить в автозагрузку, так как HeartBeat сам будет запускать прописанные в нем сервисы.
Almas AkeHayc
Пишу для себя, блог как записная книжка. Со временем все забывается, а у меня оно все в бложике. Будьте упертым глухим бегемотиком :)
8 января 2014, 11:59
4618

Загрузка...

Комментарии

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

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Только на 10-й раз он смог поступить в Кембридж! Герой с Кармакшинского района

Только на 10-й раз он смог поступить в Кембридж! Герой с Кармакшинского района

Свыше 10 известных университетов приглашают его обучаться за рубежом, но выбор будет оставаться за Сакеном. Он выберет обучение в The University of Edinburgh и отправится в эту удивительную страну...
socium_kzo
30 нояб. 2016 / 11:06
  • 11662
  • 11
Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

"Мужчины должны у вас тут права качать, ибо их процент в вашей численности населения уступает проценту женщин". Я машинально начала уверять, что у нас в стране таковых не имеется...
Sapientia
вчера / 10:52
  • 6170
  • 65
Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Дастархан в те времена был скромен. Не было понятия «сынау» - осуждения кто как живет, какой в доме ремонт и т.д. Пока взрослые обсуждали задержку заработной платы, мы играли в армию, жмурки, строили городки...
socium_kzo
вчера / 15:19
  • 5680
  • 16
Взгляд со стороны: Назарбаев глазами кыргыза

Взгляд со стороны: Назарбаев глазами кыргыза

В чем уникальность этой личности? В чем его успех или провалы? Эти вопросы требуют глубокой аналитики и исследований. Я же хочу рассказать о Нурсултане Абишевиче глазами рядового кыргыза...
maxes
1 дек. 2016 / 8:05
  • 5595
  • 20
Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Как сообщают новостные издания, в ближайшее время в Южном Казахстане 102 детям в возрасте 11-12 лет сообщат об их страшном диагнозе. Все эти дети были заражены ВИЧ, причём большинство было инфицировано по вине врачей.
openqazaqstan
2 дек. 2016 / 13:57
  • 4284
  • 4
Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Трамп и не подозревает, что 16 декабря 1991 Казахстан не создал, а восстановил свою национальную государственность. Иначе бы он упомянул не только 25 лет, а больше чем 550 лет казахской истории.
Stehlikova
2 дек. 2016 / 9:02
  • 4762
  • 88
Аэропорт Схипхол и Алматы. Смотришь на это и ощущение, что мы лет на тридцать отстали

Аэропорт Схипхол и Алматы. Смотришь на это и ощущение, что мы лет на тридцать отстали

Недавно пролетал через аэропорт Амстердама - Схипхол. Так как улетал из аэропорта Алматы, то не мог не начать сравнивать эти аэропорты.
Superkurt
30 нояб. 2016 / 10:09
  • 3734
  • 14
Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Давно ждал запуска электронного билетирования в общественном транспорте Астаны. В ноябре 2016 года этот день настал. Мой опыт насчитывает последние 2 недели и мне есть чем поделиться.
iamYerlan
1 дек. 2016 / 15:24
  • 3323
  • 15
Понять и простить: почему большинство стран бывшего СССР отказалось от амнистий

Понять и простить: почему большинство стран бывшего СССР отказалось от амнистий

Президент Назарбаев предложил амнистию для совершивших преступления небольшой тяжести несовершеннолетних, пожилых, женщин и других социально уязвимых категорий осуждённых.
openqazaqstan
30 нояб. 2016 / 13:45
  • 3166
  • 21