Konfigurowanie DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7

Tłumaczenie artykułu zostało przygotowane w przeddzień rozpoczęcia kursu „Administrator Linuksa. Wirtualizacja i klastrowanie”.

DRBD (Distributed Replicated Block Device) to rozproszone, elastyczne i uniwersalnie replikowalne rozwiązanie pamięci masowej dla systemu Linux. Odzwierciedla zawartość urządzeń blokowych, takich jak dyski twarde, partycje, woluminy logiczne itp. pomiędzy serwerami. Tworzy kopie danych na dwóch urządzeniach pamięci masowej, dzięki czemu w przypadku awarii jednego z nich można wykorzystać dane na drugim.

Można powiedzieć, że jest to coś w rodzaju konfiguracja sieciowej macierzy RAID 1 z dyskami zmapowanymi na różne serwery. Działa jednak zupełnie inaczej niż RAID (nawet sieciowy RAID).

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

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

Środowisko testowe

W tej konfiguracji użyjemy 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: Zainstaluj pakiety DRBD

DRBD jest zaimplementowany jako moduł jądra Linuksa. Jest to sterownik wirtualnego urządzenia blokowego, dlatego znajduje się na samym dole stosu wejść/wyjść systemu.

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

# 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 musisz zainstalować moduł jądra DRBD i narzędzia na obu węzłach, używając:

# yum install -y kmod-drbd84 drbd84-utils

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

# semanage permissive -a drbd_t

Dodatkowo, jeśli w systemie działa zapora sieciowa (firewalld), konieczne będzie dodanie portu DRBD 7789, aby umożliwić synchronizację danych pomiędzy dwoma węzłami.

Uruchom te polecenia dla pierwszego węzła:

# 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 dla drugiego węzła:

# 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: Przygotuj pamięć niskiego poziomu

Teraz, gdy w obu węzłach klastra zainstalowaliśmy DRBD, musimy udostępnić na nich obszary pamięci masowej o mniej więcej tej samej wielkości. Może to być partycja dysku twardego (lub cały fizyczny dysk twardy), programowe urządzenie RAID, Wolumin logiczny LVM lub innego typu urządzenia blokowego znalezionego w systemie.

Na potrzeby tego artykułu utworzymy urządzenie blokowe testowe o pojemności 2 GB za pomocą polecenia dd.

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

Załóżmy, ż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 − /etc/drbd.conf, a dodatkowe pliki konfiguracyjne można znaleźć w katalogu /etc/drbd.d.

Aby zreplikować magazyn, musimy dodać do pliku niezbędne konfiguracje /etc/drbd.d/global_common.conf, który zawiera globalne i ogólne sekcje konfiguracji DRBD i musimy zdefiniować zasoby w .res akta.

Zróbmy kopię zapasową oryginalnego pliku na obu węzłach, a następnie otwórzmy nowy plik do edycji (użyj wybranego 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 do obu plików:

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

Zapisz plik, a następnie zamknij edytor.

Przyjrzyjmy się przez chwilę linii protokołu C. DRBD obsługuje trzy różne tryby replikacji (czyli trzy stopnie synchronizacji replikacji), a mianowicie:

  • protokół A: protokół replikacji asynchronicznej; najczęściej używany w scenariuszach replikacji na duże odległości.
  • protokół B: Protokół replikacji półsynchronicznej lub protokół pamięci synchronicznej.
  • protokół C: zwykle używany dla węzłów w sieciach o krótkich dystansach; jest to zdecydowanie najczęściej używany protokół replikacji w ustawieniach DRBD.

To jest ważne: Wybór protokołu replikacji wpływa na dwa czynniki wdrożenia: bezpieczeństwo i opóźnienie. Natomiast przepustowość nie zależy znacząco od wybranego protokołu replikacji.

Krok 4: Dodaj zasób

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

Dodaj poniższy plik do pliku na obu węzłach (pamiętaj o zastąpieniu zmiennych rzeczywistymi wartościami dla Twojego środowiska).

Zwróć uwagę na nazwy hostów, musimy podać nazwę hosta sieciowego, którą można uzyskać za pomocą polecenia 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 nazwę hosta: Sekcja on, do której odnosi się zagnieżdżona instrukcja konfiguracji.
  • test: To jest nazwa nowego zasobu.
  • urządzenie /dev/drbd0: Wskazuje nowe wirtualne urządzenie blokowe zarządzane przez DRBD.
  • dysk /dev/sdb1: Jest to partycja urządzenia blokowego, która jest urządzeniem zapasowym dla urządzenia DRBD.
  • metadysk: Określa, gdzie DRBD przechowuje swoje metadane. Wewnętrzne oznacza, że ​​DRBD przechowuje swoje metadane na tym samym fizycznym urządzeniu niskiego poziomu, co rzeczywiste dane w środowisku produkcyjnym.
  • adres: Wskazuje adres IP i numer portu odpowiedniego węzła.

Pamiętaj też, że jeśli parametry mają te same 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ć w następujący sposób:

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. Zainicjuj i uruchom zasób

Do interakcji z DRBD będziemy używać następujących narzędzi administracyjnych (które współdziałają z modułem jądra w celu konfiguracji i administrowania zasobami DRBD):

  • drbdadm: Narzędzie administracyjne wysokiego poziomu DRBD.
  • drbdsetup: Narzędzie administracyjne niższego poziomu służące do łączenia urządzeń DRBD z urządzeniami kopii zapasowych, konfigurowania par urządzeń DRBD w celu odzwierciedlenia ich urządzeń do tworzenia kopii zapasowych oraz sprawdzania konfiguracji działających urządzeń DRBD.
  • Drbdmeta: Narzędzie do zarządzania metadanymi.

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

# drbdadm create-md test

Konfigurowanie DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7
Inicjowanie magazynu metadanych

Następnie musimy go uruchomić, co połączy zasób z jego urządzeniem zapasowym, następnie ustawimy parametry replikacji i połączymy zasób z jego równorzędnym urządzeniem:

# drbdadm up test

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

# lsblk

Konfigurowanie DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7
Lista urządzeń blokowych

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 dysków Niespójny/niespójny):

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

Konfigurowanie DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7
Sprawdzanie statusu zasobu włączone
zło

Krok 6: Ustaw główne źródło synchronizacji zasobu/urządzenia początkowego

Na tym etapie DRBD jest gotowy do pracy. Teraz musimy określić, 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

Konfigurowanie DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7
Ustawienie węzła podstawowego jako urządzenia początkowego
Po zakończeniu synchronizacji stan obu dysków powinien wynosić UpToDate.

Krok 7: Testowanie konfiguracji DRBD

Na koniec musimy sprawdzić, czy urządzenie DRBD będzie działać zgodnie z potrzebami do przechowywania zreplikowanych danych. Pamiętaj, że użyliśmy pustego wolumenu dysku, dlatego musimy stworzyć na urządzeniu system plików i zamontować go, aby sprawdzić, czy uda nam się go wykorzystać do przechowywania zreplikowanych danych.

Musimy 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

Konfigurowanie DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7
Tworzenie systemu plików na woluminie Drbd

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 utwórz długą listę polecenia:

# cd /mnt/DRDB_PRI/
# ls -l 

Konfigurowanie DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7
Wyświetl zawartość głównego woluminu Drbd

Następnie odmontuj urządzenie (upewnij się, że uchwyt nie jest otwarty, po odmontowaniu zmień katalog, aby uniknąć błędów) i zmień rolę węzła z podstawowej na pomocniczą:

# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test

Ustaw drugi węzeł (który ma zasób pełniący rolę drugorzędną) jako podstawowy, a następnie podłącz do niego urządzenie i utwórz długą listę punktów podłączenia. Jeśli konfiguracja działa prawidłowo, 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 

Konfigurowanie DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7
Sprawdzanie konfiguracji DRBD działającej w węźle dodatkowym.

Więcej informacji można znaleźć na stronach pomocy narzędzi administracyjnych:

# man drbdadm
# man drbdsetup
# man drbdmeta

FAQ: Instrukcja obsługi DRBD.

Streszczenie

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

Dowiedz się więcej o kursie.

Źródło: www.habr.com

Dodaj komentarz