DRBD конфигурация · 4 min read · Jan 28, 2026
Пример конфигурации DRBD на CentOS 4.5
Пример конфигурации DRBD на CentOS 4.5
Что такое DRBD?
DRBD — это сокращение от Distributed Replicated Block Device. DRBD — это блочное устройство, предназначенное для создания кластеров высокой доступности. Это достигается путем зеркалирования целого блочного устройства через (выделенную) сеть. Вы можете рассматривать это как сетевой RAID1.
Предварительные требования к конфигурации:
Я использовал два узла с следующими системными настройками:
- cnode1.rnd (имя хоста) с IP-адресом 172.16.4.80. Операционная система CentOS 4.5, два SCSI жестких диска по 18 ГБ. Что касается разделов, я использовал следующую схему на cnode1.rnd: /dev/sda1 / 13257MB ext3 primary /dev/sda2 4095MB swap primary /dev/sdb1 umounted 128MB ext3 primary (для метаданных DRBD) /dev/sdb2 umounted 4306MB ext3 primary (используется как диск DRBD)
- cnode2.rnd (имя хоста) с IP-адресом 172.16.4.81. Операционная система CentOS 4.5 один IDE диск на 10 ГБ. На cnode2.rnd использовалась следующая схема разделов: /dev/hda1 / 4503MB ext3 primary /dev/hda2 769MB swap primary /dev/hda3 unmounted 128MB ext3 primary (для метаданных DRBD) /dev/hda4 unmounted 4306MB ext3; primary (используется как диск DRBD)
Размеры и названия разделов могут варьироваться в зависимости от емкости диска и используемых жестких дисков. Вы можете определить схему разделов в соответствии с вашими требованиями.
Мой файл /etc/hosts на обоих узлах (cnode1.rnd и cnode2.rnd) выглядит так:
127.0.0.1 localhost.localdomain localhost
172.16.4.80 cnode1.rnd cnode2
172.16.4.81 cnode2.rnd cnode3
Установка DRBD:
Установите программное обеспечение DRBD и модуль ядра DRBD на cnode1.rnd и cnode2.rnd:
yum install -y kmod-drbd drbd Загрузите модуль ядра DRBD с помощью insmod:
insmod /lib/modules/2.6.9-55.0.9.EL/extra/drbd.ko Проверьте с помощью lsmod, что модуль загружен. Если вы видите DRBD, переходите к разделу примера конфигурации.
Настройка DRBD:
Конфигурационный файл DRBD — это /etc/drbd.conf. Поэтому мы отредактируем этот файл и внесем в него следующие изменения, а затем скопируем его на другой узел (файл /etc/drbd.conf будет одинаковым на обоих узлах).
На cnode1.rnd отредактируйте этот файл с помощью любого редактора. Я использую vi:
vi /etc/drbd.conf resource r0 {
protocol C;
incon-degr-cmd "halt -f";
startup {
degr-wfc-timeout 120; # 2 минуты.
}
disk {
on-io-error detach;
}
net {
}
syncer {
rate 3M;
group 1;
al-extents 257;
}
on cnode1.rnd {
device /dev/drbd0;
disk /dev/sdb2;
address 172.16.4.80:7789;
meta-disk /dev/sdb1[0];
}
on cnode2.rnd {
device /dev/drbd0;
disk /dev/hda4;
address 172.16.4.81:7789;
meta-disk /dev/hda3[0];
}
}
Сохраните изменения и скопируйте его на другой узел (cnode2.rnd):
scp /etc/drbd.conf [email protected]:/etc/ Теперь давайте запустим демон DRBD на обоих узлах, но перед этим мы хотим, чтобы демон DRBD запускался при следующей перезагрузке. Для этого мы используем команду chkconfig на обоих узлах.
chkconfig --level 235 drbd on /etc/init.d/drbd start Вы обнаружите, что DRBD запустил процесс синхронизации. Вы можете увидеть его выполнение:
/etc/init.d/drbd status или
cat /proc/drbd Технические детали конфигурации drbd.conf:
Протоколы:
- Операция записи завершена, как только данные записаны на диск и отправлены в сеть.
- Операция записи завершена, как только поступает подтверждение о получении.
- Операция записи завершена, как только поступает подтверждение о записи.
Имя хоста:
Должно точно соответствовать выводу
uname -n Устройство:
Узловое устройство для использования: /dev/drbd0 - блочное устройство DRBD.
Адрес, Порт:
Inet-адрес и порт для привязки локально или для подключения к узлу-партнеру.
Метадиск:
Диски для хранения метаданных. DRBD позволяет вам либо разместить свои метаданные на том же основном устройстве, где он помещает фактические используемые производственные данные (внутренние метаданные), либо на отдельном блочном устройстве (внешние метаданные). Я выделил 128 МБ для метаданных на внешнем блочном устройстве метаданных. Тем не менее, вы можете обратиться к таблице ниже, чтобы оценить размеры метаданных
| Размер блочного устройства | Метаданные DRBD |
| 1 ГБ | 2 МБ |
| 100 ГБ | 5 МБ |
| 1 ТБ | 33 МБ |
| 4 ТБ | 128 МБ |
incon-degr-cmd:
Что следует делать в случае, если кластер запускается в деградированном режиме, но знает, что у него есть несогласованные данные (устройство нижнего уровня сообщает об ошибке ввода-вывода).
on-io-error detach:
Если устройство нижнего уровня сообщает об ошибке ввода-вывода, узел отключает свое устройство хранения и продолжает в бездисковом режиме.
degr-wfc-timeout:
Ожидание истечения времени подключения, если этот узел был деградированным кластером. Это используется вместо wfc-timeout (ожидание истечения времени кластера).
Syncer:
Ограничьте пропускную способность, используемую процессом повторной синхронизации.
group:
Все устройства в одной группе повторно синхронизируются параллельно. Повторная синхронизация групп выполняется последовательно в порядке возрастания.
Al-extents:
Автоматически выполняет обнаружение горячей области. С помощью этого параметра вы контролируете, насколько большой может быть горячая область. Каждый экстент обозначает 4 МБ основного хранилища (= устройство нижнего уровня). В случае, если основной узел неожиданно покидает кластер, области, охваченные активным набором, должны быть повторно синхронизированы при повторном присоединении неудавшегося узла. Структура данных хранится в области метаданных, поэтому каждое изменение активного набора является операцией записи на устройство метаданных. Более высокое количество экстентов дает более длительное время повторной синхронизации, но меньше обновлений метаданных.
Что делать и чего не делать:
Не пытайтесь монтировать DRBD в состоянии вторичного. Как только вы настроили DRBD, никогда не обходите его или не обращайтесь напрямую к нижнему устройству!
Тестирование DRBD:
Сделайте cnode1.rnd основным и смонтируйте блочное устройство основного узла (cnode1.rnd) на /mnt/disk:
drbdsetup /dev/drbd0 primary --do-what-I-say mount /dev/drbd0 /mnt/disk Скопируйте некоторые файлы и папки на него:
cp -r /root/documents /mnt/disk Теперь размонтируйте блочное устройство DRBD и сделайте основной узел “вторичным”:
umount /mnt/disk/ drbdadm secondary all Сделайте cnode2.rnd основным и смонтируйте блочное устройство на /mnt/disk:
drbdsetup /dev/drbd0 primary --do-what-I-say mount /dev/drbd0 /mnt/diskВы обнаружите, что документы существуют на cnode2.rnd.
Get new posts in your inbox
No spam. Unsubscribe anytime.