Как настроить DRBD для репликации хранилища на двух серверах CentOS 7

Что такое DRBD

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

Оно отражает содержимое блочных устройств, таких как жесткие диски, разделы, логические тома и т. д.  между серверами.

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

Вы можете подумать об этом как о конфигурации сетевого RAID 1 с дисками, отраженными между серверами.

Однако он работает совсем не так, как RAID и даже сетевой RAID.

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

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

Это идеальная статья для начала работы с DRBD в Linux.

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

  • Узел 1: 192.168.56.101 — tecmint.tecmint.lan
  • Узел 2: 192.168.10.102 — server1.tecmint.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), вам необходимо добавить порт 7789 DRBD в брандмауэр, чтобы обеспечить синхронизацию данных между двумя узлами.

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

# 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: Добавление ресурса

Ресурс — это собирательный термин, который относится ко всем аспектам конкретного реплицируемого набора данных.

Мы определим наш ресурс в файле /etc/drbd.d/test.res.

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

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

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

где:

  • on hostname: состояния on 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 tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}

Шаг 4: Инициализация и включение ресурса

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

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

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

# drbdadm create-md test

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

# drbdadm up test

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

# lsblk

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

# drbdadm down test

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

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

На этом этапе DRBD теперь готов к работе.

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

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

# drbdadm primary --force test
# drbdadm status test

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

Шаг 6: Тестирование настройки 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

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

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

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

Если настройка работает нормально, все файлы, хранящиеся на томе, должны быть там:

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

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

# man drbdadm
# man drbdsetup
# man drbdmeta

Резюме

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

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

Не стесняйтесь поделиться своими мыслями с нами через форму обратной связи ниже.

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

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

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

5e7fa976b0640d40