How-to-Setup-DRBD-to-Replicate-Storage-on-Two-CentOS-7-Servers

Как настроить DRBD для Replicate Storage на двух серверах CentOS 7?

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

Вы можете думать об этом как о конфигурации RAID 1 с дисками, зеркально отображаемыми на серверах. Однако всё это работает совсем не так, как RAID и даже не как сетевой RAID.

Первоначально DRBD использовался главным образом в компьютерных кластерах высокой доступности (HA), однако, начиная с версии 9, его можно использовать для развертывания решений облачного хранения.

В этой статье мы покажем, как установить DRBD в CentOS и кратко продемонстрируем, как использовать его для репликации хранилища (раздела) на двух серверах. Это идеальная статья для начала работы с DRBD в Linux.

 

Тестовая среда

В этой статье мы используем кластер из двух узлов для настройки:

  • Узел 1: 192.168.56.101sedicomm.sedicomm.lan 
  • Узел 2: 192.168.56.102server1.sedicomm.lan 

 

 

Шаг 1: Установка пакетов DRBD

DRBD реализован в виде модуля ядра Linux. Он представляет собой драйвер для виртуального блочного устройства, поэтому он установлен в самом низу системного стека ввода-вывода.

DRBD может быть установлен из репозиториев ELRepo или EPEL. Начнем с импорта ключа подписи пакета ELRepo и включения репозитория, как показано на обоих узлах:

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

 

 

Затем мы можем установить модуль ядра DRBD и утилиты на обоих узлах, выполнив:

# yum install -y kmod-drbd84 drbd84-utils

 

 

Если у вас включен SELinux, вам нужно изменить политику, чтобы освободить процессы DRBD от контроля SELinux:

# semanage permissive -a drbd_t

 

 

Кроме того, если в вашей системе включен брандмауэр (firewalld), вам необходимо добавить порт DRBD 7789 в брандмауэр, чтобы разрешить синхронизацию данных между двумя узлами.

Запустите эти команды на первом узле:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload

 

 

Затем выполните эти команды на втором узле:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload

 

 

Шаг 2: Подготовка хранилища нижнего уровня

Теперь, когда у нас есть DRBD, установленный на двух узлах кластера, мы должны подготовить область хранения примерно одинакового размера на обоих узлах. Это может быть раздел жесткого диска (или полный физический жесткий диск), программное устройство RAID, логический том LVM или любой другой тип блочного устройства, найденный в вашей системе.

В этой статье мы создадим фиктивное блочное устройство размером 2 ГБ с помощью команды dd:

# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

 

 

Предположим, что это неиспользуемый раздел (/dev/sdb1) на втором блочном устройстве (/dev/sdb), подключенный к обоим узлам.

 

 

Шаг 3: Настройка DRBD

Основной файл конфигурации DRBD находится в /etc/drbd.conf, а дополнительные файлы конфигурации можно найти в каталоге /etc/drbd.d.

Чтобы реплицировать хранилище, нам нужно добавить необходимые конфигурации в файл /etc/drbd.d/global_common.conf, который содержит глобальные и общие разделы конфигурации DRBD, и мы можем определять ресурсы в файлах .res.

Давайте создадим резервную копию исходного файла на обоих узлах, а затем откроем новый файл для редактирования (используйте текстовый редактор по своему вкусу).

# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf

 

 

Добавьте следующие строки в оба файла:

global {
usage-count yes;
}
common {
net {
protocol C;
}
}

 

 

Сохраните файл, а затем закройте редактор.

 

 

Кратко остановимся на линейном протоколе C. DRBD поддерживает три различных режима репликации (три степени синхронности репликации), которые:

  • протокол A: протокол асинхронной репликации; чаще всего используется в сценариях репликации на большие расстояния.
  • протокол B: протокол полусинхронной репликации, также известный как синхронный протокол памяти.
  • протокол C: обычно используется для узлов в сетях с коротким расстоянием; это, безусловно, наиболее часто используемый протокол репликации в настройках DRBD.

 

 

Важно: выбор протокола репликации влияет на два фактора развертывания: защита и задержка. А пропускная способность, напротив, в значительной степени не зависит от выбранного протокола репликации.

 

 

Шаг 4: Добавление Resource

Resource — это общий термин, который относится ко всем аспектам конкретного реплицируемого набора данных. Мы определим наш Resource в файле /etc/drbd.d/test.res.

Добавьте следующее содержимое в файл на обоих узлах (не забудьте заменить переменные в содержимом фактическими значениями для вашей среды).

Обратите внимание на имена хостов, нам нужно указать сетевое имя хоста, которое можно получить, выполнив команду «uname -n«:

resource test {
on sedicomm.sedicomm.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.101:7789;
}
on server1.sedicomm.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.102:7789;
}
}
}

 

 

где:

  • on hostname: в разделе on указаны состояния, к которым относятся вложенные операторы конфигурации.
  • test: это имя нового ресурса.
  • device /dev/drbd0: указывает новое виртуальное блочное устройство, управляемое DRBD.
  • disk /dev/sdb1: это раздел блочного устройства, который является резервным устройством для DRBD.
  • meta-disk: определяет, где DRBD хранит свои метаданные. Использование Internal означает, что DRBD хранит свои метаданные на том же физическом устройстве нижнего уровня, что и фактические производственные данные.
  • address: указывает IP-адрес и номер порта соответствующего узла.

 

 

Также обратите внимание, что если параметры имеют одинаковые значения на обоих хостах, вы можете указать их непосредственно в разделе ресурсов.

Например, приведенная выше конфигурация может быть изменена:

resource test {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
on sedicomm.sedicomm.lan {
address 192.168.56.101:7789;
}
on server1.sedicomm.lan {
address 192.168.56.102:7789;
}
}

 

 

Шаг 5: Инициализация и разрешение Resource

Для взаимодействия с DRBD мы будем использовать следующие инструменты администрирования, которые взаимодействуют с модулем ядра для настройки и администрирования ресурсов DRBD:

  • drbdadm: инструмент администрирования высокого уровня DRBD.
  • drbdsetup: инструмент администрирования более низкого уровня для подключения устройств DRBD к их устройствам резервного блока; для настройки пар устройств DRBD; для зеркального отображения их устройств резервного блока и для проверки конфигурации работающих устройств DRBD.
  • Drbdmeta: инструмент управления метаданными.

 

 

После добавления всех начальных конфигураций ресурса мы должны вызвать Resource на обоих узлах:

# drbdadm create-md test

 

 

Initialize-Meta-Data-Storage

 

 

Далее, мы должны разрешить Resource, который будет подключать его к устройству поддержки; затем он устанавливает параметры репликации и подключает Resource к своему пиру:

# drbdadm up test

 

 

Теперь, если вы запустите команду lsblk, вы заметите, что устройство DRBD device/volume drbd0 связано с устройством поддержки /dev/sdb1:

# lsblk

 

 

List-Block-Devices

 

 

Чтобы отключить Resource, запустите:

# drbdadm down test

 

 

Чтобы проверить состояние Resource, выполните следующую команду (обратите внимание, что на этом этапе ожидается «Inconsistent» состояние диска):

# drbdadm status test

 

 

Или же:

# drbdsetup status test --verbose --statistics #for a more detailed status

 

 

Check-Resource-Status-on-Nodes

 

 

Шаг 6: Установка основного ресурса/источника начальной синхронизации устройства

На этом этапе DRBD готов к работе. Теперь нам нужно указать, какой узел следует использовать в качестве источника начальной синхронизации устройства.

Выполните следующую команду только на одном узле, чтобы начать первоначальную полную синхронизацию:

# drbdadm primary --force test
# drbdadm status test

 

 

Set-Primary-Node-for-Initial-Device

 

 

После завершения синхронизации состояние обоих дисков должно быть «UpToDate«.

 

 

Шаг 7: Тестирование настройки DRBD

Наконец, нам нужно проверить, как будет работать устройство DRBD для хранения реплицированных данных. Помните, что мы использовали пустой том диска, поэтому мы должны создать файловую систему на устройстве и смонтировать её, чтобы проверить, можем ли мы использовать её для хранения реплицированных данных.

Мы можем создать файловую систему на устройстве с помощью следующей команды на узле, с которого мы начали первоначальную полную синхронизацию (у которого есть ресурс с основной ролью):

# mkfs -t ext4 /dev/drbd0

 

 

 

 

Затем смонтируйте его, как показано (вы можете дать точке монтирования подходящее имя):

# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/

 

 

Теперь скопируйте или создайте несколько файлов в указанной выше точке монтирования и выполните «длинный листинг» с помощью команды ls:

# cd /mnt/DRDB_PRI/
# ls -l 

 

 

List-Contents-of-Drbd-Primary-Volume

 

 

Далее, unmount устройство (убедитесь, что монтирование не открыто, измените каталог после размонтирования, чтобы избежать ошибок) и измените роль узла с primary на secondary:

# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test

 

 

На другом узле (у которого есть ресурс с дополнительной ролью), сделайте его primary, затем подключите к нему устройство и выполните «-ls -l». Если настройка работает нормально, все файлы, хранящиеся на томе, должны быть там:

# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls -l 

 

 

Test-DRBD-Setup-Working-on-Secondary-Node

 

 

Для получения дополнительной информации загляните в справочные страницы инструментов администрирования:

# man drbdadm
# man drbdsetup
# man drbdmeta

 

 

Ссылка: Руководство пользователя DRBD.

 

 

Итог:

DRBD чрезвычайно гибок и универсален, что делает его решением для репликации хранилища, подходящим для добавления практически в любое приложение. В этой статье мы показали, как установить DRBD в CentOS 7, и кратко продемонстрировали, как использовать его для репликации хранилища.

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Системы хранения данных

Больше похожих постов

Как настроить NFS в RHEL/CentOS/Fedora и Debian/Ubuntu

Как настроить NFS в RHEL/CentOS/Fedora и Debian/Ubuntu

450
0
NFS (сетевая файловая система) в основном разработана для совместного использования файлов и папок между системами Linux/Unix компанией Sun Microsystems в…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню