📍 Как работает?
— Блочная репликация: Работает ниже файловой системы, реплицируя сырые блоки данных
— Три роли узлов: Primary (чтение/запись), Secondary (только чтение), Unknown (не определено)
— Протоколы репликации:
— Protocol A: Асинхронная запись — подтверждение после локальной записи
— Protocol B: Полусинхронная — подтверждение после записи на удалённый диск
— Protocol C: Синхронная — подтверждение после записи на оба диска (рекомендуется для HA)
— Сетевые соединения: TCP/IP для передачи данных, специальный протокол DRBD для метаданных
— Консистентность: Гарантирует, что данные на Secondary идентичны Primary
📍 Пример настройки
1. Установка (Ubuntu/Debian):
# Установка DRBD и утилит
sudo apt update
sudo apt install drbd-dkms drbd-utils
# Загрузка модуля ядра
sudo modprobe drbd
# Проверка загрузки
lsmod | grep drbd
2. Подготовка дисков (на обеих нодах):
# Предположим, что у нас есть дополнительный диск /dev/sdb
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary 0% 100%
sudo mkfs.ext4 /dev/sdb1
3. Базовая конфигурация (/etc/drbd.d/drbd0.res):
resource drbd0 {
protocol C; # Синхронная репликация
# Конфигурация первого узла (node1)
on node1 {
device /dev/drbd0; # Виртуальное устройство DRBD
disk /dev/sdb1; # Физический диск
address 192.168.1.10:7788; # IP и порт для соединения
meta-disk internal; # Метаданные хранятся на том же диске
}
# Конфигурация второго узла (node2)
on node2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.20:7788;
meta-disk internal;
}
}
4. Инициализация и запуск:
# На обоих узлах создаём метаданные
sudo drbdadm create-md drbd0
# Запускаем ресурс
sudo drbdadm up drbd0
# На node1 делаем первичным и форматируем
sudo drbdadm primary drbd0 --force
sudo mkfs.ext4 /dev/drbd0
# На node2 проверяем статус
sudo drbdadm status drbd0
5. Проверка работы:
# Статус репликации
sudo drbd-overview
# Детальный статус
sudo cat /proc/drbd
# Переключение ролей (с node1 на node2):
# На node1:
sudo drbdadm secondary drbd0
# На node2:
sudo drbdadm primary drbd0
📍 Ограничения и особенности
— Требует стабильной сети с низкой задержкой для синхронной репликации
— Поддерживает до 32 узлов (рекомендуется 2-3 для производительности)
— Может работать поверх LVM, RAID, SSD
— Совместим с большинством файловых систем (ext4, XFS, btrfs)
📎 DRBD — проверенное решение для построения отказоустойчивых кластеров на базе Linux, оно остаётся простым и эффективным выбором для двухузловых кластеров, где важна минимальная задержка и максимальная предсказуемость.
#линуксятина
