Поиск по сайту:

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


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

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

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

В этой статье мы покажем, как установить 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;
 }
}

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

Давайте ненадолго проясним строку протокол 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, к которым применяются прилагаемые инструкции конфигурации.
  • test: имя нового ресурса.
  • устройство /dev/drbd0: указывает новое виртуальное блочное устройство, управляемое DRBD.
  • диск /dev/sdb1: раздел блочного устройства, который является резервным устройством для устройства DRBD.
  • мета-диск: определяет, где DRBD хранит свои метаданные. Использование внутреннего означает, что DRBD хранит свои метаданные на том же физическом устройстве более низкого уровня, что и фактические производственные данные.
  • адрес: указывает 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

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

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 

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

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-страницы инструментов администрирования пользовательского пространства:

man drbdadm
man drbdsetup
man drbdmeta
Краткое содержание

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