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

Przekład artykułu przygotowany przed rozpoczęciem kursu „Administrator Linux. Wirtualizacja i klastrowanie”.

DRBD (Distributed Replicated Block Device — rozproszony replikowany blokowy system) to rozproszone, elastyczne i wszechstronnie replikowane rozwiązanie do przechowywania danych dla systemu Linux. Odbija zawartość urządzeń blokowych, takich jak dyski twarde, partycje, woluminy logiczne itd. między serwerami. Tworzy kopie danych na dwóch urządzeniach przechowywania, aby w przypadku awarii jednego z nich można było skorzystać z danych na drugim.

Można powiedzieć, że to coś w rodzaju sieciowej konfiguracji RAID 1 z dyskami replikowanymi na różne serwery. Funkcjonuje to jednak zupełnie inaczej niż RAID (nawet sieciowy).

Początkowo DRBD było wykorzystywane głównie w komputerowych klastrach wysokiej dostępności (HA — high availability), jednak od dziewiątej wersji może być używane do wdrażania rozwiązań chmurowych.

W tym artykule wyjaśnimy, jak zainstalować DRBD w CentOS i krótko zademonstrujemy, jak używać go do replikacji przechowywania (partycji) na dwóch serwerach. To idealny artykuł do rozpoczęcia pracy z DRBD w Linuxie.

Środowisko testowe

Będziemy używać klastra składającego się z dwóch węzłów dla tej konfiguracji.

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

Krok 1: Instalacja pakietów DRBD

DRBD jest wdrażane jako moduł jądra Linux. Reprezentuje on sterownik dla wirtualnego urządzenia blokowego, dlatego znajduje się na samym dole stosu wejścia-wyjścia systemu.

DRBD można zainstalować z ELRepo lub EPEL. Zacznijmy od importu klucza podpisu pakiety ELRepo i włą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 należy zainstalować moduł jądra DRBD i narzędzia na obu węzłach za pomocą:

# yum install -y kmod-drbd84 drbd84-utils

Jeśli masz włączone SELinux, musisz dostosować polityki, aby zwolnić procesy DRBD z kontroli SELinux.

# semanage permissive -a drbd_t

Ponadto, jeśli w twoim systemie działa zapora (firewalld), musisz dodać port DRBD 7789, aby zezwolić na synchronizację danych między dwoma węzłami.

Uruchom te komendy 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 komendy 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. Przygotowanie niskopoziomowego przechowywania

Teraz, gdy mamy zainstalowane DRBD na obu węzłach klastra, musimy przygotować na nich obszary przechowywania o podobnym rozmiarze. Może to być partycja dysku twardego (lub cały fizyczny dysk twardy), urządzenie RAID. logiczny wolumen LVM lub inny typ urządzenia blokowego znajdującego się w twoim systemie.

W tym artykule stworzymy testowe urządzenie blokowe o rozmiarze 2 GB za pomocą polecenia dd.

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

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

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

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

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

Dodaj do obu plików następujące linie:

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

Zapisz plik, a następnie zamknij edytor.

Przyjrzyjmy się na chwilę linii protocol C. DRBD obsługuje trzy różne tryby replikacji (tj. trzy stopnie synchronizacji replikacji), a mianowicie:

  • protocol A: protokół replikacji asynchronicznej; najczęściej używany w scenariuszach replikacji na dużych odległościach.
  • protocol B: protokół replikacji pół-synchronicznej lub protokół synchronizacji pamięci.
  • protocol C: zazwyczaj używany dla węzłów w sieciach o małych odległościach; to zdecydowanie najczęściej stosowany protokół replikacji w konfiguracjach DRBD.

Ważne: wybór protokołu replikacji wpływa na dwa czynniki wdrożenia: odporność i opóźnienie. Pasmo, z drugiej strony, nie zależy w dużej mierze od wybranego protokołu replikacji.

Krok 4. Dodanie zasobu

Zasób (Resource) to zbiorczy termin odnoszący się do wszystkich aspektów konkretnych replikowanych danych. Zdefiniujemy nasz zasób w pliku /etc/drbd.d/test.res.

Dodaj następujące do pliku na obu węzłach (nie zapomnij zastąpić zmiennych rzeczywistymi wartościami dla twojego środowiska).

Zwróć uwagę na nazwy hostów, musimy określić sieciową nazwę hosta, 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 nazwie hosta: sekcja, do której odnosi się zagnieżdżony operator konfiguracji.
  • test: to nazwa nowego zasobu.
  • device /dev/drbd0: określa nowe wirtualne urządzenie blokowe zarządzane przez DRBD.
  • dysk /dev/sdb1: to sekcja urządzenia blokowego, która jest urządzeniem zapasowym dla urządzenia DRBD.
  • meta-dysk: definiuje, gdzie DRBD przechowuje swoje metadane. Internal oznacza, że DRBD przechowuje swoje metadane na tym samym fizycznym, niskopoziomowym urządzeniu, co rzeczywiste dane w produkcji.
  • address: określa adres IP i numer portu odpowiadającego węzła.

Zwróć również uwagę, że jeśli na obu hostach parametry mają takie same wartości, możesz je określić bezpośrednio w sekcji zasobów.

Na przykład, powyższa konfiguracja może być przekształcona w:

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. Inicjalizacja i uruchomienie zasobu

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

  • drbdadm: narzędzie administracji na wyższym poziomie DRBD.
  • drbdsetup: narzędzie administracji na niższym poziomie do łączenia urządzeń DRBD z ich urządzeniami zapasowymi, konfiguracji par urządzeń DRBD do odzwierciedlania ich urządzeń zapasowych oraz do sprawdzania konfiguracji działających urządzeń DRBD.
  • Drbdmeta: narzędzie do zarządzania metadanymi.

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

# drbdadm create-md test

Konfigurujemy DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7.
Inicjalizacja magazynu metadanych

Następnie musimy go uruchomić, co połączy zasób z jego urządzeniem zapasowym, następnie ustawi parametry replikacji i połączy zasób z jego peerem:

# drbdadm up test

Teraz, jeśli uruchomisz polecenie lsblk, zauważysz, że urządzenie/tom DRBD drbd0 jest połączone z urządzeniem zapasowym. /dev/sdb1:

# lsblk

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

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

# drbdadm down test

Aby sprawdzić stan zasobu, wykonaj następujące polecenie (zwróć uwagę, że na tym etapie oczekiwany jest stan dysków Niespójny/Niespójny):

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

Konfigurujemy DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7.
Sprawdzenie stanu zasobu na węzłach
Krok 6: Ustalenie głównego zasobu/źródła początkowej synchronizacji urządzeń

Krok 6: Ustalenie głównego zasobu/źródła początkowej synchronizacji urządzeń

Na tym etapie DRBD jest już gotowy do pracy. Teraz musimy wskazać, który węzeł należy użyć jako źródło początkowej synchronizacji urządzeń.

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

# drbdadm primary --force test
# drbdadm status test

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

Krok 7: Testowanie konfiguracji DRBD

Na koniec musimy sprawdzić, czy urządzenie DRBD działa tak, jak powinno, do przechowywania replikowanych danych. Pamiętaj, że używaliśmy pustego woluminu dysku, więc musimy utworzyć system plików na urządzeniu i zamontować go, aby sprawdzić, czy możemy go używać do przechowywania replikowanych danych.

Musimy utworzyć system plików na urządzeniu za pomocą następującej komendy na węźle, z którego rozpoczęliśmy początkową pełną synchronizację (na którym znajduje się zasób z rolą główną):

# mkfs -t ext4 /dev/drbd0

Konfigurujemy 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ć punkcie montowania odpowiednią nazwę):

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

Teraz skopiuj lub utwórz jakieś pliki w wyżej wymienionym punkcie montowania i zrób długi listę za pomocą komendy ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Konfigurujemy DRBD do replikacji pamięci masowej na dwóch serwerach CentOS 7.
Wyświetlenie zawartości głównego woluminu Drbd

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

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

Inny węzeł (na którym znajduje się zasób z rolą pomocniczą) ustaw jako główny, a następnie podłącz do niego urządzenie i wykonaj długi listę punktów montowania. Jeśli konfiguracja działa prawidłowo, wszystkie pliki przechowywane na woluminie powinny tam być:

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

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

Aby uzyskać więcej informacji, zapoznaj się z stronami pomocy narzędzi administracyjnych:

# man drbdadm
# man drbdsetup
# man drbdmeta

Informacja: Podręcznik użytkownika DRBD.

Podsumowanie

DRBD jest niezwykle elastyczny i wszechstronny, co sprawia, że jest rozwiązaniem do replikacji pamięci masowej, odpowiednim do dodawania HA praktycznie do każdej aplikacji. W tym artykule pokazaliśmy, jak zainstalować DRBD na CentOS 7 i zwięźle pokazaliśmy, jak go używać do replikacji pamięci masowej. Zachęcamy do dzielenia się swoimi przemyśleniami z nami za pomocą formularza opinii poniżej.

Dowiedz się więcej o kursie.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster