DRBD конфигурация · 4 min read · Jan 28, 2026

Пример конфигурации DRBD на CentOS 4.5

Пример конфигурации DRBD на CentOS 4.5

Что такое DRBD?

DRBD — это сокращение от Distributed Replicated Block Device. DRBD — это блочное устройство, предназначенное для создания кластеров высокой доступности. Это достигается путем зеркалирования целого блочного устройства через (выделенную) сеть. Вы можете рассматривать это как сетевой RAID1.

Предварительные требования к конфигурации:

Я использовал два узла с следующими системными настройками:

  1. 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)
  2. 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:

Протоколы:

  1. Операция записи завершена, как только данные записаны на диск и отправлены в сеть.
  2. Операция записи завершена, как только поступает подтверждение о получении.
  3. Операция записи завершена, как только поступает подтверждение о записи.

Имя хоста:

Должно точно соответствовать выводу

 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.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.