Пераклад артыкула падрыхтаваны напярэдадні старту курса
DRBD (Distributed Replicated Block Device — размеркаваная рэпліцыруемая блокавая прылада) уяўляе сабой размеркаванае, гнуткае і ўніверсальна якое рэплікуецца рашэнне захоўвання дадзеных для Linux. Яно адлюстроўвае змесціва блокавых прылад, такіх як цвёрдыя кружэлкі, часткі, лагічныя тамы і г.д. паміж серверамі. Яно стварае копіі дадзеных на дзвюх прыладах захоўвання для таго, каб у выпадку збою аднаго з іх можна было выкарыстоўваць дадзеныя на другім.
Можна сказаць, што гэта нешта накшталт
Першапачаткова 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 ГБ з дапамогай каманды 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, да якога адносіцца ўкладзены аператар канфігурацыі.
- тэст: гэта імя новага рэсурсу.
- device /dev/drbd0: паказвае новую віртуальную блокавую прыладу, якую кіруе DRBD.
- disk /dev/sdb1: гэта частка блокавай прылады, які з'яўляецца рэзервовай прыладай для прылады DRBD.
- meta-disk: вызначае, дзе DRBD захоўвае свае метададзеныя. Internal азначае, што 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
Цяпер, калі вы запусціце каманду /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/
Зараз скапіруйце ці стварыце якія-небудзь файлы ў паказаным вышэй кропцы мантавання і зрабіце доўгі спіс з дапамогай
# 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