Преводът на статията е подготвен в очакване на старта на курса .
DRBD (Distributed Replicated Block Device — разпределено репликирано блочно устройство) представлява разпределено, гъвкаво и универсално решение за съхранение на данни за Linux. То отразява съдържанието на блочни устройства, като твърди дискове, партишъни, логически обеми и т.н. между сървъри. Създава копия на данните на две устройства за съхранение, така че при повреда на едното, данните на второто да могат да се използват.
Може да се каже, че това е нещо подобно на 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 устройство, или друг тип блочно устройство, налично в системата ви.
В тази статия ще създадем тестово блочно устройство с размер 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 
Инициализация на хранилището на метаданни
След това трябва да го стартираме, което ще свърже ресурса с резервното му устройство, ще зададе параметрите на репликация и ще свърже ресурса с неговия пир:
# drbdadm up test Сега, ако стартирате командата , ще забележите, че устройството/томът 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 
Създаваме файлова система на тома Drbd
След това я монтирайте както е показано (можете да дадете подходящо име на точката на монтаж):
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
Сега копирайте или създайте някакви файлове в указаната по-горе точка на монтаж и направете дълъг списък с помощта на :
# 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 е изключително гъвкав и универсален, което го прави решение за репликация на хранилища, подходящо за добавяне на HA практически във всяко приложение. В тази статия показваме как да инсталирате DRBD в CentOS 7 и кратко демонстрираме как да го използвате за репликация на хранилище. Не се колебайте да споделите вашите мисли с нас чрез формата за обратна връзка по-долу.
Източник: habr.com
