Vyhledávání na webu

Jak nastavit DRBD pro replikaci úložiště na dvou serverech CentOS 7


DRBD (zkratka pro Distributed Replicated Block Device) je distribuované, flexibilní a všestranné řešení replikovaného úložiště pro Linux. Zrcadlí obsah blokových zařízení, jako jsou pevné disky, oddíly, logické svazky atd. mezi servery. Zahrnuje kopii dat na dvou úložných zařízeních, takže pokud jedno selže, lze použít data na druhém.

Můžete si to představit jako síťovou konfiguraci RAID 1 s disky zrcadlenými mezi servery. Funguje však velmi odlišným způsobem než RAID a dokonce i síťový RAID.

Původně se DRBD používalo hlavně v počítačových clusterech s vysokou dostupností (HA), ale počínaje verzí 9 jej lze použít k nasazení řešení cloudových úložišť.

V tomto článku si ukážeme, jak nainstalovat DRBD v CentOS a stručně si ukážeme, jak jej použít k replikaci úložiště (oddílu) na dva servery. Toto je perfektní článek, jak začít s používáním DRBD v Linuxu.

Testovací prostředí

Pro účely tohoto článku používáme pro toto nastavení dva clustery uzlů.

  • Uzel1: 192.168.56.101 – tecmint.tecmint.lan
  • Uzel2: 192.168.56.102 – server1.tecmint.lan

Krok 1: Instalace balíčků DRBD

DRBD je implementován jako modul jádra Linuxu. Představuje přesně ovladač pro virtuální blokové zařízení, takže je ustaven těsně u spodní části systémového I/O zásobníku.

DRBD lze nainstalovat z úložišť ELRepo nebo EPEL. Začněme importem podpisového klíče balíčku ELRepo a povolte úložiště, jak je znázorněno na obou uzlech.

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

Poté můžeme nainstalovat modul jádra DRBD a nástroje na oba uzly spuštěním:

yum install -y kmod-drbd84 drbd84-utils

Pokud máte povolený SELinux, musíte upravit zásady tak, aby byly procesy DRBD vyňaty z kontroly SELinuxu.

semanage permissive -a drbd_t

Kromě toho, pokud má váš systém povolenou bránu firewall (firewall), musíte do brány firewall přidat port DRBD 7789, aby byla umožněna synchronizace dat mezi dvěma uzly.

Spusťte tyto příkazy na prvním uzlu:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

Poté spusťte tyto příkazy na druhém uzlu:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

Krok 2: Příprava úložiště nižší úrovně

Nyní, když máme DRBD nainstalované na dvou uzlech clusteru, musíme na obou uzlech připravit zhruba stejně velkou úložnou oblast. Může to být oddíl pevného disku (nebo celý fyzický pevný disk), softwarové zařízení RAID, logický svazek LVM nebo jakýkoli jiný typ blokového zařízení nalezený ve vašem systému.

Pro účely tohoto článku vytvoříme fiktivní blokové zařízení o velikosti 2 GB pomocí příkazu dd.

 
dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

Budeme předpokládat, že se jedná o nepoužívaný oddíl (/dev/sdb1) na druhém blokovém zařízení (/dev/sdb) připojeném k oběma uzlům.

Krok 3: Konfigurace DRBD

Hlavní konfigurační soubor DRBD se nachází na adrese /etc/drbd.conf a další konfigurační soubory lze nalézt v adresáři /etc/drbd.d.

Abychom replikovali úložiště, musíme přidat potřebné konfigurace do souboru /etc/drbd.d/global_common.conf, který obsahuje globální a společné části konfigurace DRBD a můžeme definovat zdroje v .res soubory.

Udělejme zálohu původního souboru na obou uzlech a poté otevřete nový soubor pro úpravy (použijte textový editor podle vašeho vkusu).

mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
vim /etc/drbd.d/global_common.conf 

Přidejte do obou souborů následující řádky:

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

Uložte soubor a zavřete editor.

Pojďme krátce zastínit více světla na linii protokol C. DRBD podporuje tři různé režimy replikace (tedy tři stupně synchronicity replikace), kterými jsou:

  • protokol A: Asynchronní replikační protokol; nejčastěji se používá ve scénářích replikace na dlouhé vzdálenosti.
  • protokol B: Semisynchronní replikační protokol neboli synchronní protokol paměti.
  • protokol C: běžně používaný pro uzly v sítích na krátké vzdálenosti; je to zdaleka nejběžněji používaný replikační protokol v nastaveních DRBD.

Důležité: Výběr replikačního protokolu ovlivňuje dva faktory vašeho nasazení: ochranu a latenci. A propustnost je naproti tomu do značné míry nezávislá na zvoleném replikačním protokolu.

Krok 4: Přidání zdroje

Zdroj je souhrnný termín, který označuje všechny aspekty konkrétní replikované datové sady. Náš zdroj definujeme v souboru s názvem /etc/drbd.d/test.res.

Přidejte do souboru následující obsah na oba uzly (nezapomeňte nahradit proměnné v obsahu skutečnými hodnotami pro vaše prostředí).

Všimněte si názvů hostitelů, musíme zadat název hostitele sítě, který lze získat spuštěním příkazu 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;
        }
}
}

kde:

  • on hostname: sekce on uvádí, na který hostitel se vztahují přiložené konfigurační příkazy.
  • test: je název nového zdroje.
  • device /dev/drbd0: určuje nové virtuální blokové zařízení spravované DRBD.
  • disk /dev/sdb1: je oddíl blokového zařízení, který je záložním zařízením pro zařízení DRBD.
  • meta-disk: Definuje, kam DRBD ukládá svá metadata. Použití Internal znamená, že DRBD ukládá svá metadata na stejné fyzické zařízení nižší úrovně jako skutečná produkční data.
  • adresa: určuje IP adresu a číslo portu příslušného uzlu.

Všimněte si také, že pokud mají možnosti stejné hodnoty na obou hostitelích, můžete je zadat přímo v sekci prostředků.

Výše uvedená konfigurace může být například restrukturalizována na:

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;
        		}
}

Krok 5: Inicializace a povolení prostředku

Pro interakci s DRBD použijeme následující nástroje pro správu, které komunikují s modulem jádra za účelem konfigurace a správy prostředků DRBD:

  • drbdadm: nástroj pro správu DRBD na vysoké úrovni.
  • drbdsetup: nástroj pro správu nižší úrovně pro připojení zařízení DRBD s jejich záložními blokovými zařízeními, pro nastavení párů zařízení DRBD pro zrcadlení jejich záložních blokových zařízení a pro kontrolu konfigurace běžících zařízení DRBD.
  • Drbdmeta: je nástroj pro správu metadat.

Po přidání všech počátečních konfigurací prostředků musíme zdroj vyvolat na obou uzlech.

drbdadm create-md test

Dále bychom měli povolit prostředek, který připojí prostředek k jeho podpůrnému zařízení, poté nastaví parametry replikace a připojí prostředek ke svému peer:

drbdadm up test

Když nyní spustíte příkaz lsblk, všimnete si, že zařízení/svazek DRBD drbd0 je přidružen k podpůrnému zařízení /dev/sdb1:

lsblk

Chcete-li prostředek zakázat, spusťte:

drbdadm down test

Chcete-li zkontrolovat stav prostředku, spusťte následující příkaz (všimněte si, že v tomto okamžiku se očekává stav disku Nekonzistentní/Nekonzistentní):

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

Krok 6: Nastavte primární zdroj/zdroj počáteční synchronizace zařízení

V této fázi je DRBD nyní připraveno k provozu. Nyní mu musíme říci, který uzel by měl být použit jako zdroj počáteční synchronizace zařízení.

Spusťte následující příkaz pouze na jednom uzlu, abyste zahájili počáteční úplnou synchronizaci:

drbdadm primary --force test
drbdadm status test

Po dokončení synchronizace by měl být stav obou disků UpToDate.

Krok 7: Testování nastavení DRBD

Nakonec musíme otestovat, zda bude zařízení DRBD dobře fungovat pro ukládání replikovaných dat. Pamatujte, že jsme použili prázdný diskový svazek, proto musíme na zařízení vytvořit souborový systém a připojit jej, abychom otestovali, zda jej můžeme použít pro ukládání replikovaných dat.

Souborový systém můžeme na zařízení vytvořit pomocí následujícího příkazu na uzlu, kde jsme zahájili počáteční plnou synchronizaci (který má zdroj s primární rolí):

mkfs -t ext4 /dev/drbd0 

Poté jej připojte podle obrázku (přípojnému bodu můžete dát vhodný název):

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

Nyní zkopírujte nebo vytvořte některé soubory ve výše uvedeném bodu připojení a proveďte dlouhý výpis pomocí příkazu ls:

cd /mnt/DRDB_PRI/
ls -l 

Dále odpojte zařízení (ujistěte se, že připojení není otevřené, po odpojení změňte adresář, abyste předešli případným chybám) a změňte roli uzlu z primárního na sekundární:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

Na druhém uzlu (který má prostředek se sekundární rolí) jej nastavte jako primární, poté k němu připojte zařízení a proveďte dlouhý výpis bodu připojení. Pokud nastavení funguje správně, měly by tam být všechny soubory uložené ve svazku:

drbdadm primary test
mkdir -p /mnt/DRDB_SEC/
mount /dev/drbd0 /mnt/DRDB_SEC/
cd /mnt/DRDB_SEC/
ls  -l 

Další informace naleznete v manuálových stránkách nástrojů pro správu uživatelského prostoru:

man drbdadm
man drbdsetup
man drbdmeta
souhrn

DRBD je extrémně flexibilní a všestranné, což z něj dělá řešení replikace úložiště vhodné pro přidání HA do téměř jakékoli aplikace. V tomto článku jsme si ukázali, jak nainstalovat DRBD v CentOS 7, a stručně jsme ukázali, jak jej použít k replikaci úložiště. Neváhejte se s námi podělit o své myšlenky prostřednictvím formuláře pro zpětnou vazbu níže.