Наладжваем 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 ГБ з дапамогай каманды 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

Наладжваем DRBD для рэплікацыі сховішча на два CentOS 7 сервера
Ініцыялізацыя сховішча метададзеных

Далей мы павінны запусціць яго, што падлучыць рэсурс да яго прылады рэзервовага капіявання, затым усталюе параметры рэплікацыі і падлучыць рэсурс да свайго балю:

# drbdadm up test

Цяпер, калі вы запусціце каманду lsblk, вы заўважыце, што прылада/том DRBD drbd0 звязаны з рэзервовай прыладай /dev/sdb1:

# lsblk

Наладжваем DRBD для рэплікацыі сховішча на два CentOS 7 сервера
Спіс блокавых прылад

Каб адключыць рэсурс, запусціце:

# drbdadm down test

Каб праверыць стан рэсурсу, выканайце запусціце наступную каманду (звярніце ўвагу, што на гэтым этапе чакаецца стан дыскаў Inconsistent/Inconsistent):

# 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

Дадаць каментар