В этом пошаговом руководстве демонстрируется установка распределенного Реплицированного блочного устройства (DRBD) на CentOS Linux.
Что такое DRBD?
DRBD (распределенное реплицируемое блочное устройство) – это программный пакет для Linux-систем. Он используется для репликации устройств хранения данных с одного узла на другой узел по сети.
Он может предоставить помощь для решения проблем аварийного восстановления и отработки отказа. DRBD можно понимать как высокую доступность оборудования и может рассматриваться как замена сетевых хранилищ.
Как работает DRBD?
Предположим, что мы хотим кластеризировать раздел хранения в системе с 2 centos, нам требуется блочное устройство (например, /dev/sdb1) в обеих системах. Эти системы определяются как первичный и вторичный узлы (могут переключаться между первичными и вторичными узлами). DRBD использует виртуальное блочное устройство (например, drbd0) для совместного использования блочных устройств /dev/sdb1 обеих систем. Основным узлом является то, где виртуальный диск drbd0 смонтирован для чтения/записи цели.
Для начала необходимо установить пакеты DRBD, которые используются для создания виртуального диска drbd0. Мы можем отформатировать его как файловую систему xfs или ext3 для использования устройства /dev/drbd0.
Устройство drbd0 настроено на использование блок устройств /dev/sdb1 на обеих системах. Теперь мы работаем только на устройстве drbd0.
Поскольку drbd0 может быть смонтирован только на первичном узле, доступ к содержимому осуществляется только с первичного узла. В любом случае, если основная система выходит из строя, мы можем потерять системные файлы, но виртуальное устройство drbd0 будет доступно, мы можем переключить изначально вторичный узел как первичный и снова получить доступ к его содержимому.
Использование DRBD на Centos7
Требования
- Две установленные системы Centos
- Свободный блок-устройство, как/dev/sdb1 на обеих системах (предпочтительно того же размера)
- Selinux разрешающий или отключенный
- Порт 7788 разрешен в брандмауэре
- Узлы должны находиться в одной сети.
Установка
Здесь мы следуем за установкой, добавляя репозиторий epel, так как пакеты drbd недоступны в дистрибутивах centos.
$ rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
также добавьте gpg-ключ на обоих узлах. GPG-ключ – открытый ключ, используемый для шифрования связи между узлами.
$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
Теперь мы можем использовать yum для установки пакетов drbd. Мы должны определить версию drbd, Поддерживаемые нашим ядром. Проверьте версии drbd, доступные для вашего ядра:
$ yum info *drbd* | grep Name
Вывод будет такой:
Теперь установите требуемую версию drbd вместе с необходимыми модулями ядра.
$ yum -y install drbd84-utils kmod-drbd84
Проверьте, загружен ли модуль ядра или нет.
$ lsmod | grep -i drbd
если ответ команды выше дает пустые Выходные данные, то модули ядра не загружаются. Вам нужно перезагрузить систему и попробовать:
$ modprobe drbd
modprobe – это команда, которая грамотно добавляет или удаляет модули из ядра linux. Для того чтобы сделать модули загружаемые при каждой загрузке, добавьте службу systemd-modules-load. Итак, создайте файл с именем drbd.conf внутри /etc/modulesload.d.
$ echo drbd > /etc/modules-load.d/drbd.conf
Настройка DRBD
Конфигурационные файлы DRBD находятся в каталоге /etc/drbd.d/
По умолчанию /etc/drbd.d/global_common.conf доступен и содержит глобальные или основные конфигурации. Другие файлы конфигурации называются файлами ресурсов с расширением *.res, сейчас мы создадим ресурс файлов конфигурации на обоих узлах и будем использовать drbd для указанного блока устройства.
Создайте файл ресурсов с именем andreyex.res
$ vi /etc/drbd.d/andreyex.res
скопируйте и вставьте содержимое ниже в файл ресурсов
resource andreyex { protocol C; on node1 { device /dev/drbd0; disk /dev/sdb1; address 10.20.222.14:7788; meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/sdb1; address 10.20.222.15:7788; meta-disk internal; } }
Здесь:
- andreyex – это имя ресурса. Имена ресурсов всегда должны быть уникальными.
- протокол C используется для синхронной связи. Это полностью синхронный протокол репликации. Другие доступные протоколы – протокол А и протокол В.
- протокол А: протокол асинхронной репликации. Обычно предпочтительнее для узлов в длинных удаленных сетях.
- протокол Б: полусинхронной репликации протокола. Также вызывается как синхронный протокол памяти.
- протокол С: предпочтительный для узлов в близким расположением сетей.
- node 1 и node2 являются именем хоста отдельных узлов. Используйте только для идентификации блоков.
- device/dev/drbd0 – это логическое устройство, созданное в качестве устройства.
- disk /dev/sdb1 является физическим блочным устройством, которое будет занимать drbd0.
- адрес 10.20.222.14: 7788 и адрес 10.20.222.15: 7788 являются ip-адрес двух соответствующих узлов с открытым TCP-портом 7788.
- meta-internal disk используется для определения использования Мета-данных внутреннего диска.
Конфигурация должна быть одинаковой на обоих узлах.
Теперь нам нужно инициализировать хранение метаданных на каждом узле:
$ drbdadm create-md andreyex
если выдается сообщение об ошибке, то вы должны создать фиктивный файл данных вручную, и затем попробовать выше команду.
$ dd if=/dev/zero of=/dev/sdb1 bs=1024k count=1024
Команда dd используется для создания случайного файла с указанной памятью.
Команда md должна быть успешной.
После использования логического устройства, подключите устройство drbd0 к диску sdb1 на обоих узлах. См. Выходные данные lsblk
$ lsblk
Выходные данные должны быть такими
в противном случае подключите устройство drbd0 к диску sdb1 через файл ресурсов.
$ drbdadm attach andreyex or $ drbdadm up andreyex Once again try, $ lsblk
Запустите и включите службу drbd на обоих узлах.
$ systemctl start drbd $ systemctl enable drbd
Запуск может быть быстрым для одного узла и занять некоторое время для другого узла.
Настройка первичных и вторичных узлов
DRDB использует только один узел в то время, как основной узел, где чтение и запись могут быть предварительно сформированы.
сначала мы определим узел 1 в качестве основного узла.
$ drbdadm primary andreyex --force
Проверка состояния процесса drbd:
$ cat /proc/drbd or $ drbd-overview
Выходные данные выглядят так:
Здесь мы можем получить информацию :
- в настоящее время какой узел первичный и какой вторичный.
- процесс синхронизации данных.
- drbd состояние устройства. как: Непоследовательный, Современный, Бездисковый.
Другой узел, node2 автоматически устанавливается как вторичный узел. см. Раздел состояние процесса обзора drbd.
Основной шаг, который мы еще не выполнили, является форматирование устройства drbd0. Это можно сделать только на одном из узлов.
Здесь мы форматируем drbd0 как ext3. также работает файловая система xfs. Лучше использовать тот же тип диска, что и в /dev/sdb1.
$ mkfs -t ext3 /dev/drbd0
Теперь, снова на первичном узле, (например, это node1 в этой статье), мы должны смонтировать устройство drbd0, чтобы иметь возможность работать с ним.
$ mount /dev/drbd0 /mnt you can select your required mount point instead of /mnt. for example, I can mount the /dev/drbd0 device to /var/lib/mysql to use it for mysql database drbd.
Тестирование процесса DRBD
После установки drbd на обоих узлах, один узел становится основным. Мы смонтировали устройство в /mnt. Теперь создайте файл для проверки синхронизации узлов drbd.
$ touch /mnt/drbdtest.txt $ ll /mnt/
После этого мы установим node1 как вторичный и node2 как первичный. Процесс похож на зеркальный. На узле 1 (на первичном узле экземпляра) отключите устройство /dev/drbd0, сделайте его вторичным. В node2 (на экземпляре вторичный узел) сделайте его первичным узлом и смонтируйте в требуемое расположение.
на узле 1:
$ umount /mnt $ drbdadm secondary andreyex
на узле 2:
$ drbdadm primary andreyex $ mount /dev/drbd0 /mnt
после успешного монтирования в node2 проверьте папку файлов /mnt. Вы должны увидеть drbdtest.txt-файл (создан на node1).
$ ll /mnt/
Если вы хотите использовать графический интерфейс для управления и визуализации drbd кластер узлов, вы можете использовать lcmc (кластера консоли управления Linux).
Вот и все! Вы успешно установили DRBD в вашей системе. Если останутся какие-либо вопросы, вы можете прокомментировать ниже в разделе комментариев.