Przekład artykułu przygotowany przed rozpoczęciem kursu .
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 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.rpmNastępnie należy zainstalować moduł jądra DRBD i narzędzia na obu węzłach za pomocą:
# yum install -y kmod-drbd84 drbd84-utilsJeś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 --reloadNastę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 --reloadKrok 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. 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=1024Załóż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 
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 , zauważysz, że urządzenie/tom DRBD drbd0 jest połączone z urządzeniem zapasowym. /dev/sdb1:
# lsblk 
Lista urządzeń blokowych
Aby odłączyć zasób, uruchom:
# drbdadm down testAby 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 
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 
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 
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ą :
# cd /mnt/DRDB_PRI/
# ls -l 
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 testInny 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 
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 drbdmetaInformacja: .
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.
Źródło: habr.com
