Wyszukiwanie w witrynie

Jak skonfigurować DRBD do replikacji pamięci na dwóch serwerach CentOS 7


DRBD (skrót od Distributed Replicated Block Device) to rozproszone, elastyczne i wszechstronne rozwiązanie do replikowanej pamięci masowej dla systemu Linux. Odzwierciedla zawartość urządzeń blokowych, takich jak dyski twarde, partycje, woluminy logiczne itp. pomiędzy serwerami. Polega na utworzeniu kopii danych na dwóch urządzeniach pamięci masowej, tak że w przypadku awarii jednego można wykorzystać dane znajdujące się na drugim.

Można o tym pomyśleć trochę jak o konfiguracji sieciowej RAID 1 z dyskami dublowanymi na serwerach. Działa jednak w zupełnie inny sposób niż RAID, a nawet sieciowy RAID.

Pierwotnie DRBD był używany głównie w klastrach komputerowych o wysokiej dostępności (HA), jednak począwszy od wersji 9 można go używać do wdrażania rozwiązań przechowywania w chmurze.

W tym artykule pokażemy, jak zainstalować DRBD w CentOS i pokrótce zademonstrujemy, jak go używać do replikacji pamięci (partycji) na dwóch serwerach. To idealny artykuł, aby rozpocząć korzystanie z DRBD w systemie Linux.

Środowisko testowe

Na potrzeby tego artykułu w tej konfiguracji używamy klastra z dwoma węzłami.

  • Węzeł 1: 192.168.56.101 – tecmint.tecmint.lan
  • Węzeł 2: 192.168.56.102 – serwer1.tecmint.lan

Krok 1: Instalowanie pakietów DRBD

DRBD jest zaimplementowany jako moduł jądra Linuksa. Stanowi dokładnie sterownik dla wirtualnego urządzenia blokowego, więc jest instalowany tuż pod spodem stosu we/wy systemu.

DRBD można zainstalować z repozytoriów ELRepo lub EPEL. Zacznijmy od zaimportowania klucza podpisywania pakietu ELRepo i włącz repozytorium, jak pokazano na obu węzłach.

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

Następnie możemy zainstalować moduł jądra DRBD i narzędzia na obu węzłach, uruchamiając:

yum install -y kmod-drbd84 drbd84-utils

Jeśli masz włączony SELinux, musisz zmodyfikować zasady, aby wyłączyć procesy DRBD spod kontroli SELinux.

semanage permissive -a drbd_t

Dodatkowo, jeśli Twój system ma włączoną zaporę sieciową (firewalld), musisz dodać port DRBD 7789 w zaporze, aby umożliwić synchronizację danych pomiędzy dwoma węzłami.

Uruchom te polecenia w pierwszym węźle:

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

Następnie uruchom te polecenia na drugim węźle:

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: Przygotowanie magazynu niższego poziomu

Teraz, gdy w dwóch węzłach klastra zainstalowaliśmy DRBD, musimy przygotować obszar przechowywania o mniej więcej tej samej wielkości w obu węzłach. Może to być partycja dysku twardego (lub cały fizyczny dysk twardy), programowe urządzenie RAID, wolumin logiczny LVM lub dowolny inny typ urządzenia blokowego znaleziony w systemie.

Na potrzeby tego artykułu utworzymy fikcyjne urządzenie blokowe o rozmiarze 2GB za pomocą polecenie dd.

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

Zakładamy, że jest to nieużywana partycja (/dev/sdb1) na drugim urządzeniu blokowym (/dev/sdb) podłączonym do obu węzłów.

Krok 3: Konfiguracja DRBD

Główny plik konfiguracyjny DRBD znajduje się w /etc/drbd.conf, a dodatkowe pliki konfiguracyjne można znaleźć w katalogu /etc/drbd.d.

Aby zreplikować pamięć, musimy dodać niezbędne konfiguracje w pliku /etc/drbd.d/global_common.conf, który zawiera sekcje globalną i wspólną konfiguracji DRBD i możemy zdefiniować zasoby w .res pliki.

Zróbmy kopię zapasową oryginalnego pliku na obu węzłach, a następnie otwórz nowy plik do edycji (użyj dowolnego edytora tekstu).

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

Dodaj następujące wiersze w obu plikach:

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

Zapisz plik, a następnie zamknij edytor.

Zacieńmy na chwilę więcej światła linią protokół C. DRBD obsługuje trzy różne tryby replikacji (a więc trzy stopnie synchroniczności replikacji), którymi są:

  • protokół A: protokół replikacji asynchronicznej; jest najczęściej używany w scenariuszach replikacji na duże odległości.
  • protokół B: półsynchroniczny protokół replikacji, czyli protokół synchroniczny pamięci.
  • protokół C: powszechnie używany w węzłach sieci o małych odległościach; jest to zdecydowanie najczęściej używany protokół replikacji w konfiguracjach DRBD.

Ważne: wybór protokołu replikacji wpływa na dwa czynniki wdrożenia: ochronę i opóźnienie. Natomiast przepustowość jest w dużej mierze niezależna od wybranego protokołu replikacji.

Krok 4: Dodawanie zasobu

Zasób to zbiorczy termin odnoszący się do wszystkich aspektów konkretnego zreplikowanego zbioru danych. Zdefiniujemy nasz zasób w pliku o nazwie /etc/drbd.d/test.res.

Dodaj następującą treść do pliku w obu węzłach (pamiętaj o zastąpieniu zmiennych w treści rzeczywistymi wartościami dla Twojego środowiska).

Zwróć uwagę na nazwy hostów, musimy określić nazwę hosta sieciowego, którą można uzyskać uruchamiając polecenie 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;
        }
}
}

Gdzie :

  • na nazwie hosta: sekcja on wskazuje, którego hosta dotyczą załączone instrukcje konfiguracyjne.
  • test: to nazwa nowego zasobu.
  • urządzenie /dev/drbd0: określa nowe wirtualne urządzenie blokowe zarządzane przez DRBD.
  • dysk /dev/sdb1: to partycja urządzenia blokowego, która jest urządzeniem bazowym dla urządzenia DRBD.
  • meta-dysk: określa, gdzie DRBD przechowuje swoje metadane. Korzystanie z funkcji Wewnętrzne oznacza, że DRBD przechowuje swoje metadane na tym samym fizycznym urządzeniu niższego poziomu, co rzeczywiste dane produkcyjne.
  • adres: określa adres IP i numer portu odpowiedniego węzła.

Pamiętaj również, że jeśli opcje mają równe wartości na obu hostach, możesz je określić bezpośrednio w sekcji zasobów.

Na przykład powyższą konfigurację można zrestrukturyzować do:

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: Inicjowanie i włączanie zasobu

Do interakcji z DRBD będziemy używać następujących narzędzi administracyjnych komunikujących się z modułem jądra w celu konfiguracji i administrowania zasobami DRBD:

  • drbdadm: narzędzie administracyjne wysokiego szczebla DRBD.
  • drbdsetup: narzędzie administracyjne niższego poziomu służące do podłączania urządzeń DRBD z ich urządzeniami z blokiem bazowym, konfigurowania par urządzeń DRBD w celu tworzenia kopii lustrzanych ich urządzeń z blokami bazowymi oraz sprawdzania konfiguracji działających urządzeń DRBD.
  • Drbdmeta: to narzędzie do zarządzania metadanymi.

Po dodaniu wszystkich początkowych konfiguracji zasobów musimy wywołać zasób w obu węzłach.

drbdadm create-md test

Następnie powinniśmy włączyć zasób, który podłączy zasób wraz z urządzeniem bazowym, następnie ustawi parametry replikacji i połączy zasób z równorzędnym urządzeniem:

drbdadm up test

Teraz, jeśli uruchomisz polecenie lsblk, zauważysz, że urządzenie/wolumin DRBD drbd0 jest powiązane z urządzeniem bazowym /dev/sdb1:

lsblk

Aby wyłączyć zasób, uruchom:

drbdadm down test

Aby sprawdzić stan zasobu, uruchom następujące polecenie (pamiętaj, że w tym momencie oczekiwany jest stan dysku Niespójny/Niespójny):

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

Krok 6: Ustaw główny zasób/źródło początkowej synchronizacji urządzenia

Na tym etapie DRBD jest gotowy do działania. Musimy teraz powiedzieć, który węzeł ma zostać użyty jako źródło początkowej synchronizacji urządzenia.

Uruchom następującą komendę tylko na jednym węźle, aby rozpocząć początkową pełną synchronizację:

drbdadm primary --force test
drbdadm status test

Po zakończeniu synchronizacji stan obu dysków powinien wynosić UpToDate.

Krok 7: Testowanie konfiguracji DRBD

Na koniec musimy przetestować, czy urządzenie DRBD będzie dobrze działać w przypadku replikowanego przechowywania danych. Pamiętaj, że użyliśmy pustego woluminu dyskowego, dlatego musimy utworzyć na urządzeniu system plików i zamontować go, aby sprawdzić, czy uda nam się go wykorzystać do przechowywania replikowanych danych.

Możemy utworzyć system plików na urządzeniu za pomocą następującego polecenia, w węźle, w którym rozpoczęliśmy początkową pełną synchronizację (który ma zasób z rolą podstawową):

mkfs -t ext4 /dev/drbd0 

Następnie zamontuj go jak pokazano (możesz nadać punktowi montowania odpowiednią nazwę):

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

Teraz skopiuj lub utwórz kilka plików w powyższym punkcie montowania i wykonaj długą listę za pomocą polecenia ls:

cd /mnt/DRDB_PRI/
ls -l 

Następnie odmontuj urządzenie (upewnij się, że uchwyt nie jest otwarty, po odmontowaniu zmień katalog, aby zapobiec błędom) i zmień rolę węzła z podstawowego na drugorzędny:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

W drugim węźle (który ma zasób pełniący rolę drugorzędną) ustaw go jako podstawowy, następnie zamontuj na nim urządzenie i wykonaj długą listę punktów podłączenia. Jeśli konfiguracja działa poprawnie, wszystkie pliki zapisane na woluminie powinny się tam znajdować:

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

Aby uzyskać więcej informacji, zobacz strony podręcznika narzędzi do administrowania przestrzenią użytkownika:

man drbdadm
man drbdsetup
man drbdmeta
Streszczenie

DRBD jest niezwykle elastyczny i wszechstronny, co czyni go rozwiązaniem do replikacji pamięci masowej, odpowiednim do dodawania HA do niemal każdej aplikacji. W tym artykule pokazaliśmy, jak zainstalować DRBD w CentOS 7 i krótko zademonstrowaliśmy, jak go używać do replikacji pamięci. Podziel się z nami swoimi przemyśleniami, korzystając z poniższego formularza opinii.