В этой статье я расскажу вам, как установить и настроить DRBD на Ubuntu Server 22.04. DRBD — это распределенная и реплицированная система хранения, которая может использоваться для кластеров компьютеров высокой доступности или для создания больших пулов хранения, определяемых программно.
DRBD (Distributed Replicated Block Device) — это модуль ядра Linux, который позволяет создавать отказоустойчивые хранилища данных с помощью репликации блочных устройств между несколькими серверами.
В Ubuntu DRBD может быть установлен и настроен с помощью стандартных инструментов управления пакетами, таких как apt-get, и предоставляет функциональность синхронизации данных между двумя серверами. Это позволяет обеспечить непрерывность работы приложений и минимизировать время простоя в случае отказа одного из серверов.
DRBD может быть использован в различных сценариях, таких как кластерные хранилища, высокодоступные веб-серверы, базы данных и т.д. Он предоставляет простой и надежный способ создания отказоустойчивых систем на основе существующего оборудования.
Шаг 1: Установка необходимого программного обеспечения
Первое что мы сделаем это установим drbd-utils с помощью apt. Сделать это можно следующей командой.
sudo apt-get install drbd-utils
Если вы не обращаете внимания на ошибку на этом скриншоте: не забудьте стать root с помощью su или sudo
Apt-get (или apt install) позаботится об установке зависимостей. Например это была совершенно новая виртуальная машина, которую я создал только для того, чтобы показать как настроить DRBD на Ubuntu. И зависимости включали некоторые mta, Postfix в данном случае.
Шаг 2: Установка необходимого программного обеспечения на другом сервере
Теперь требуется установить необходимое программное обеспечение на втором сервере. Поскольку это распределенная репликативная система хранения, нам нужно как минимум два узла (сервера), поэтому станьте root на втором узле и установите drbd-utils.
Вы можете клонировать виртуальную машину, если вы работаете с виртуальными машинами.
Шаг 3: создание файла конфигурации
global { usage-count no; } common { syncer { rate 100M; } } resource r0 { #resource name protocol C; startup { wfc-timeout 15; degr-wfc-timeout 60; } net { cram-hmac-alg sha1; shared-secret "NotSoSecret"; } on gonzbuntu-a { #one server device /dev/drbd0; disk /dev/vda4; #shared partition address 192.168.122.204:7788; meta-disk internal; } on gonzbuntu-b { the other server device /dev/drbd0; disk /dev/vda4; #shared partition address 192.168.122.87:7788; meta-disk internal; } }
Наш общий ресурс называется r0.
Это просто демо-версия. Возможно, вы захотите иметь несколько общих ресурсов и более чистых конфигурационных файлов. Вы можете создать файл для каждого ресурса и хранить его в отдельных файлах в /etc/drbd.d/<resourcename>.res
Конфигурация ресурсов одинакова на обоих узлах, поэтому мы можем просто скопировать файл конфигурации на другой сервер с помощью scp
:
scp /etc/drbd.conf root@server2:/etc/drbd.conf
Вы также можете убедиться, что оба сервера видят друг друга, добавив их в /etc/hosts
Шаг 4: создание метаданных устройства
Этот шаг должен быть выполнен только при первоначальном создании устройства на обоих хостах:
drbdadm create-md <ресурс>
Далее мы можем запустить, на обоих хостах, службу drbd:
systemctl start drbd
systemctl status drbd
Шаг 5: Запуск синхронизации
На главном хосте (сервере) выполните следующую команду:
drbdadm -- --overwrite-data-of-peer primary all
На данном этапе (мы только начинаем работать с drbd на ubuntu) любой из них может быть основным, просто выберите тот, который вам больше нравится. Вы можете проверить, как идет синхронизация на вторичном. Для этого выполните команду:
watch -n1 cat /proc/drbd
Вы увидите экран, подобный этому.
Шаг 6: Добавление файловой системы
Теперь мы можем создать файловую систему и смонтировать ее в какой-нибудь каталог. Но сначала сделайте так, чтобы служба drbd запускалась при каждой перезагрузке.
systemctl enable drbd.service
mkfs.ext4 /dev/drbd0
mount /dev/drbd0 /mnt/drb/
Шаг 7: Испытание и тестирование
Создадим тестовый файл на основном (мастер) хосте, а затем преобразуем этот хост во вторичный (secondary).
dd if=/dev/zero of=/mnt/drb/filename.ext bs=1M count=1024
umount /mnt/drb
drbdadm secondary r0
drbdadm status r0
Прежде чем мы начнем работать с будущим мастер-хостом, эти команды должны выглядеть следующим образом:
На втором хосте сначала можно проверить, находятся ли оба хоста в роли вторичного, а затем повысить их до роли первичного.
drbdadm status r0
drbdadm primary r0
Далее вы можете смонтировать устройство drb и проверить, находится ли файл, созданный на первом хосте, здесь.
mount /dev/drb0 /mnt/drb
ls -lh /mnt/drb/filename.ext
Судя по скриншоту файл также находится на другом хосте, значит все работает.
Заключение
Ну вот и все. В этой статье мы показали как установить и настроить DRBD на Ubuntu 22.04. Уверен что данная статья подойдет и для Debian.