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

Установка 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
6243

Загрузка...
Loading...

Комментарии

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

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

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

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

Мой дом – не гостиница. Я не останавливаюсь у своей родни, потому что знаю, что это такое

Мой дом – не гостиница. Я не останавливаюсь у своей родни, потому что знаю, что это такое

Наступил долгожданный момент и мы смогли заселиться в собственную квартиру. А потом началось... Все знакомые, родственники, даже коллеги и соседи родителей вспомнили о нашем существовании.
Idealovnet
14 окт. 2017 / 20:38
  • 8102
  • 78
Работа на EXPO. «Улыбайтесь, вы – лица Казахстана»

Работа на EXPO. «Улыбайтесь, вы – лица Казахстана»

Продление перерывов, втыки от менеджеров, борьба за стенды, кучкования, как мы друг-друга прикрывали, защищали от гостей. Все эти события доставляли радость, и каждый день на работу я приходила...
madiNAtty
14 окт. 2017 / 22:34
  • 5523
  • 22
Молчание Бозумбаева. Как «бензиновые короли» диктуют государству свои правила игры

Молчание Бозумбаева. Как «бензиновые короли» диктуют государству свои правила игры

Произошедшая в сентябре одновременная остановка двух казахстанских НПЗ из трёх и последовавший за этим топливный кризис – это для Казахстана уже не ново. История повторяется каждый год.
openqazaqstan
11 окт. 2017 / 16:32
  • 4322
  • 44
«Что дали задом?» Родительский чат в WhatsApp покорил Интернет

«Что дали задом?» Родительский чат в WhatsApp покорил Интернет

Чат дагестанских родителей в WhatsApp стал популярным в Интернете. Кто-то записал общение родителей в мессенджере и после опубликовал в Твиттере.
tala03
12 окт. 2017 / 15:10
  • 3002
  • 11
«Bank RBK» банкрот? Почему мы не можем распоряжаться собственными же деньгами?!

«Bank RBK» банкрот? Почему мы не можем распоряжаться собственными же деньгами?!

Мы не можем выдать зарплату, оплатить по счетам или как-то иначе распорядиться нашими же деньгами! У физ.лиц, насколько мне известно, ситуация не лучше - при нас люди не могли снять свои деньги с депозитов.
daniyar4422017
13 окт. 2017 / 15:46
  • 2924
  • 12
Актогайский горно-обогатительный комплекс – брат-близнец Бозшаколя

Актогайский горно-обогатительный комплекс – брат-близнец Бозшаколя

Рядом с посёлком Актогай в ВКО расположено одно из крупнейших в мире неосвоенных медных месторождений. В октябре Актогайская обогатительная фабрика вышла на проектную мощность.
theYakov
12 окт. 2017 / 10:47
  • 3011
  • 20
Я четко помню тот день, когда мне позвонили друзья и сообщили: «Она выходит замуж»

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

У нас была особенная атмосфера, мы постоянно были вместе, читали треки, летом часто поднимались в горы. Гуляли пешком по ночному городу, иногда до утра. Снимали хату и представляли совместную жизнь...
Dominator-kz
14 окт. 2017 / 22:29
Отчего в Казахстане предвзятое отношение к отечественному продукту?

Отчего в Казахстане предвзятое отношение к отечественному продукту?

Вы когда-нибудь пользовались казахстанской косметикой? Я тоже нет, поэтому сразу же откликнулась на приглашение своего фейсбук-френда протестировать отечественные крема… из Степногорска.
Shimanskaya
16 окт. 2017 / 11:32
  • 2172
  • 29
Когда почти все уехали в «А-города», стоит ли жить в Шымкенте?

Когда почти все уехали в «А-города», стоит ли жить в Шымкенте?

Город имеет особую ауру - очень густая энергетика, думаю, это от того, что он со всех сторон окружен "местами силы". Шымкент напоминает мне старенького доброго мудрого дедушку-аксакала.
Bonittta
13 окт. 2017 / 15:15