Tłumaczenie artykułu zostało przygotowane w przeddzień rozpoczęcia kursu
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
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,
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
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 /dev/sdb1
:
# lsblk
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
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
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
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ę
# cd /mnt/DRDB_PRI/
# ls -l
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
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:
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.
Źródło: www.habr.com