Настройка DRBD 8.3.9 для кластера с Pacemaker
Что нужно знать перед началом
- DRBD — блоковый репликатор для Linux, обеспечивает зеркалирование дисков по сети. Краткое определение: DRBD создает сетевой репликат диска между двумя узлами в режиме active/passive.
- Убедитесь, что ядро и встроенный модуль DRBD совместимы с версией 8.3.9.
- Выполняйте команды под root или через sudo.
Шаг 2. Скачайте drbd 8.3.9, распакуйте и подготовьте установку на обоих серверах
В каталоге выше источника выполните команды:
cd ../
wget http://oss.linbit.com/drbd/8.3/drbd-8.3.9.tar.gz
tar zxvf drbd-8.3.9.tar.gzТеперь собираем drbd с включением поддержки pacemaker (для кластера heartbeat/pacemaker). Используйте следующие команды на обоих серверах:
cd drbd-8.3.9/
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-utils --with-pacemaker
make KDIR=/usr/src/linux
make install



Создание конфигурации /etc/drbd.conf
Создайте файл /etc/drbd.conf по образцу. Ниже — пример конфигурации для ресурса postgres:
global {
usage-count no;
}
common {
syncer { rate 100M; }
protocol C;
}
resource postgres {
startup {
wfc-timeout 0;
degr-wfc-timeout
120;
}
disk { on-io-error detach; }
on drbd1 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.5.129:7791;
meta-disk internal;
}
on drbd2 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.5.137:7791;
meta-disk internal;
}
}

Примечание: проверьте, что device и disk указаны правильно и соответствуют вашему расположению устройств (/dev/sdb и т.д.).
Файл /etc/hosts на drbd1
Пример содержимого /etc/hosts на drbd1:
192.168.5.137 drbd2.site drbd2
192.168.5.129 drbd1.site drbd1
Шаг 3. Скопируйте конфигурации на второй сервер
Выполните с drbd1:
scp /etc/hosts drbd2:/etc
scp /etc/drbd.conf drbd2:/etc
Шаг 4. Настройка DRBD на обоих серверах
На каждом сервере выполните:
drbdadm create-md postgres
modprobe drbd
drbdadm up postgresЭти команды создадут метаданные, загрузят модуль ядра и поднимут ресурс.
Шаг 5. Активируйте первичный узел (только на одном хосте)
Выберите один узел как primary. Ни в коем случае не выполняйте эту команду одновременно на обоих хостах.
Пример — делаем drbd2 первичным:
drbdadm -- --overwrite-data-of-peer primary postgresПроверить инициализацию можно на обоих хостах:
cat /proc/drbdШаг 6. Запустите сервис drbd
На обоих серверах выполните:
/etc/init.d/drbd startПроверьте состояние на drbd1 и drbd2. Если синхронизация проходит правильно, состояние покажет primary/secondary соответствующим образом.

Результат: если всё корректно, репликация работает. После этого можно тестировать активный/пассивный режим для MySQL/PostgreSQL.
Важное
- Не включайте primary одновременно на двух узлах. Это приведёт к рассинхронизации и потере данных.
- Перед выполнением операции –overwrite-data-of-peer убедитесь, что узел, с которого вы копируете данные, содержит актуальные данные, которые можно перезаписать на пирах.
Критерии приёмки
- Ресурс postgres находится в состоянии primary на одном узле и secondary на другом.
- cat /proc/drbd показывает синхронизированный статус (UpToDate/SyncTarget или аналогичный в вашей версии).
- Файловая система на /dev/drbd0 монтируется корректно на primary.
- После переключения роли (failover) данные остаются целыми и сервисы запускаются на новом primary.
Чеклист ролей (оператор / админ)
- Оператор: перед началом создайте бэкап данных и снимите состояние мониторинга.
- Администратор: проверить соответствие версий ядра и модуля DRBD.
- QA/тестировщик: выполнить тесты записи и переключения ролей.
Быстрый cheat-sheet команд
- Собрать и установить:
./configure --with-pacemaker make KDIR=/usr/src/linux make install - Инициализация и подъем ресурса:
drbdadm create-md postgres modprobe drbd drbdadm up postgres - Сделать primary (один узел):
drbdadm -- --overwrite-data-of-peer primary postgres - Проверка статуса:
cat /proc/drbd /etc/init.d/drbd status
Когда это не сработает — типичные причины
- Несоответствие версии модуля DRBD и собранного пакета.
- Неправильно указаны устройства (disk/device) или метадиск повреждён.
- Сетевые ограничения/файрвол блокируют порт (по умолчанию 7791 в примере).
- Конфликты с уже смонтированной файловой системой на целевом устройстве.
Руководство по отладке (шаги)
- Проверьте вывод dmesg и /var/log/messages на предмет ошибок модуля drbd.
- Убедитесь, что modprobe drbd прошёл без ошибок.
- Проверьте доступность IP/порта между узлами (ping, nc/tcping).
- Выполните drbdadm adjust postgres для применения конфигурации.
- Если метаданные повреждены, пересоздайте их осторожно: drbdadm create-md (данные будут перезаписаны).
Мини-SOP для переключения ролей (операция failover)
- Остановите приложения на current primary.
- На current primary демонтируйте файловую систему и переведите ресурс в secondary.
- На target node перевести в primary:
drbdadm -- --overwrite-data-of-peer primary postgres - Смонтируйте FS и запустите приложения.
- Выполните проверку целостности данных и логов.
Короткое резюме
Следуя шагам, вы соберёте и настроите DRBD 8.3.9 с поддержкой Pacemaker для активного/пассивного режима. Обязательно проверяйте версии, сетевую доступность и корректность устройств. Тестируйте failover в контролируемой среде до перевода в прод.
Заметки: в сети много дополнительной документации по DRBD и Pacemaker; используйте официальные ресурсы проекта для детальной настройки и обновлений.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента