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

Преводът на статията е подготвен в очакване на старта на курса „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 GB с помощта на командата 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, към който принадлежи вложен оператор за конфигурация.
  • 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

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

След това трябва да го стартираме, което ще свърже ресурса с резервното му устройство, ще зададе параметрите на репликация и ще свърже ресурса с неговия пир:

# drbdadm up test

Сега, ако стартирате командата lsblk, ще забележите, че устройството/томът DRBD drbd0 е свързан с резервното устройство /dev/sdb1:

# lsblk

Настройваме DRBD за репликация на хранилище на два CentOS 7 сървъра
Списък на блочните устройства

За да деактивирате ресурса, изпълнете:

# drbdadm down test

За да проверите състоянието на ресурса, изпълнете следната команда (обърнете внимание, че на този етап се очаква състоянието на дисковете Несъответстващо/Несъответстващо):

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

Настройваме DRBD за репликация на хранилище на два CentOS 7 сървъра
Проверка на състоянието на ресурса на у
злах

Стъпка 6: Настройка на основния ресурс/източник на начална синхронизация на устройствата

На този етап DRBD вече е готов за работа. Сега трябва да укажем кой възел да използваме като източник на начална синхронизация на устройствата.

Изпълнете следната команда само на един възел, за да започнете първоначалната пълна синхронизация:

# drbdadm primary --force test
# drbdadm status test

Настройваме DRBD за репликация на хранилище на два CentOS 7 сървъра
Настройка на основния възел като начално устройство
След завършване на синхронизацията, състоянието и на двата диска трябва да е UpToDate.

Стъпка 7: Тестиране на DRBD настройката

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

Трябва да създадем файлова система на устройството с помощта на следната команда на възела, от който започнахме първоначалната пълна синхронизация (на който има ресурс с основна роля):

# mkfs -t ext4 /dev/drbd0

Настройваме DRBD за репликация на хранилище на два CentOS 7 сървъра
Създаваме файлова система на тома Drbd

След това я монтирайте както е показано (можете да дадете подходящо име на точката на монтаж):

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

Сега копирайте или създайте някакви файлове в указаната по-горе точка на монтаж и направете дълъг списък с помощта на командата ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Настройваме DRBD за репликация на хранилище на два CentOS 7 сървъра
Извеждане на списъка със съдържанието на основния том 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 за репликация на хранилище на два CentOS 7 сървъра
Проверка на настройката на DRBD, работеща на вторичния възел.

За допълнителна информация се обърнете към страниците с помощ за административните инструменти:

# man drbdadm
# man drbdsetup
# man drbdmeta

Помощ: Ръководство на потребителя DRBD.

Резюме

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

Научете повече за курса.

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster