Настраиваем DRBD для репликации хранилища на два CentOS 7 сервера

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Перевод статьи подготовлен в преддверии старта курса «Администратор Linux. Виртуализация и кластеризация».


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

Можно сказать, что это нечто вроде сетевой конфигурации RAID 1 с дисками, отражаемыми на разные сервера. Однако оно работает совсем не так, как RAID (даже сетевой). Первоначально DRBD использовалось главным образом в компьютерных кластерах высокой доступности (HA — high availability), однако, начиная с девятой версии, оно может использоваться для развертывания решений облачного хранилища. В этой статье мы расскажем, как установить DRBD в CentOS, и кратко продемонстрируем, как использовать его для репликации хранилища (раздела) на двух серверах. Это идеальная статья для начала работы с DRBD в Linux.

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

Мы будем использовать кластер из двух узлов для этого сетапа.

  • Узел 1: 192.168.56.101 – tecmint.tecmint.lan
  • Узел 2: 192.168.56.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), вам необходимо добавить порт 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;  } }


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

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

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


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

Шаг 4. Добавление ресурса

Ресурс (Resource) — это собирательный термин, который относится ко всем аспектам конкретного реплицируемого набора данных. Мы определим наш ресурс в файле /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, к которому относится вложенный оператор конфигурации.
  • 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;         		} }


Шаг 5. Инициализация и запуск ресурса

Для взаимодействия с 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):

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


Проверка состояния ресурса на у
злах


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

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

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

# drbdadm primary --force test # drbdadm status test


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

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

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

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

# mkfs -t ext4 /dev/drbd0


Создаем файловую систему на томе Drbd

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

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


Теперь скопируйте или создайте какие-нибудь файлы в указанной выше точке монтирования и сделайте длинный список с помощью команды ls:
# cd /mnt/DRDB_PRI/ # ls -l 


Вывести список содержимого основного тома Drbd

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

# 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 


Проверка сетапа DRBD, работающего на вторичном узле.

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

# man drbdadm # man drbdsetup # man drbdmeta


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

Резюме

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



Источник: habr.com

Комментарии: