Wysoko dostępny serwer plików DRBD Pacemaker HA Cluster na Debianie 8

Najlepszy sposób na zbudowanie wysokodostępnego serwera plików dość niskim kosztem to użycie dwóch komputerów, sprzęgnięcie ich w sieć i postawienie na nich DRBD.

Po co nam taki klaster? Jest to super rozwiązanie gdy potrzebujemy mieć 100% dostępność do danych dyskowych. Przy użyciu dwóch kompuetrów dane między nimi są synchronizowane wiec nawet jak wypadnie nam jeden komputer to cały czas zasób dyskowy jest dostępny. Po ponownym podłączeniu noda który wypadł z klastra mamy synchroniazję i ponownie te same dane na obu dyskach/urządzeniach. Jest to prostu RAID realizowany przez sieć,

W ostatnim wpisie podawałem informację o zbudowaniu bezdyskowego klastra obliczeniowego: https://supercomputers.pl/moj-wlasny-diskless-klaster-typu-beowulf/. Jednak taki klaster nie obejdzie się bez wysokodostepnego klastra plików którego budowe postaram się teraz opisać.

Klaster DRBD – sprzęt do budowy

Do budowy klastra wykorzystałem dwa komputery DELL Optiplex D280. W każdym po 2GB RAM, 1xHDD SATA 80 GB oraz dwa interfejsy sieciowe:
– o przykładowym adresie 192.168.xx.xx – et1 -służacy do kompunikacji z siecią (fizycznie interfejs wbudowany na płycie)
– o przykładowym adresie 10.21.x.xx – eth0 służacy do komunikacji z drugim nodem klasta (fizycznie to dodatkowa karta seieciowa – Netis AD1102).


Przy okazji od razu uprzedzam że problemów z instalacją karty Netis AD1102 miałem bardzo dużo – jest ona oparta o układ Realtek RTL8169SC i w debianie jego uruchomienie to spory problem.

Przygotowanie sprzętu

Pierwsze co trzeba zrobić to zmienić sledzie w karcie sieciowej na low profile. Wybór padł akurat na tą konkretną kartę ponieważ normalne i krótkie śledzie są w zestawie.

Instrukcja stworzenia klastra DRBD

Oczywiście instalujemy system uwzględniając tylko podstawowe składniki.

Po instalacji pierwsze rzeczy które wykonałem to dogranie pakietu SSH:

apt-get install ssh

Po instalacji w /etc/ssh/sshd_config

Dodaje linijkę:
PermitRootLogin yes

i komentuje:
#PermitRootLogin without-password

Co pozwala mi się beztresowo logować na roota przez SSH. Uwaga nie polecam robić takich manewrów na maszynach wystawionych do Netu.

Kolejna sprawa to ustawienie interfaceów. Wchodzimy w /etc/network/interfaces.

interface eth1 ustawiamy statycznie tak aby mógł łączyć się z innym sprzętem:
allow-hotplug eth1
iface eth1 inet static
address 192.168.x.xxx
netmask 255.255.255.0
gateway 192.168.x.xxx

eth0 analogicznie tylko że z inną adresacją – to będzie interface do łączenia się z drugim nodem

Teraz trzeba powpisywać w hosts adresy:
192.168.1.221 nfs1.blinked.pl nfs1
192.168.1.222 nfs2.blinked.pl nfs2
10.21.5.20 drbd1.blinked.pl drbd1
10.21.5.21 drb2.blinked.pl drbd2

Taką samą operację wykonujemy na drugim komputerze

DRBD
Oczywiście przed instalacją odruchowo robimy
apt-get update

A potem już tylko
apt-get install drbd8-utils

Warto też zadbać o czas więc instalujemy też NTP
apt-get install ntp

Po instalacji pakietów przechodzę do tworzenia partycji dla DRBD:
fdisk /dev/sda

Naciskając „n” tworzymy nową partycję
Jeżeli już wszystko się uda to wciskamy „w” aby zapisać

Kasujemy wszystkie możliwe dane na partycji (u mnie sda3)
dd if=/dev/zero of=/dev/sda3

Najważniejsza część czyli konfiguracja DRBD
Edytujemy plik /etc/drbd.d.conf/global_common.conf

global { usage-count no; }
common { protocol C; }
resource r0 {
on nfs1 {
device /dev/drbd0;
disk /dev/sda3;
address 192.168.1.221:7788;
meta-disk internal;
}
on nfs2 {
device /dev/drbd0;
disk /dev/sda3;
address 192.168.1.222:7788;
meta-disk internal;
}
}

ładujemy moduł DRBD:
modprobe drbd

Robimy mirror:
drbdadm create-md r0

Podnosimy dysk:
drbdadm up r0

Na pierwszym hoście (nfs1) wykonujemy polecenie:
drbdadm — –overwrite-data-of-peer primary r0/0

Co uczyni maszynę nfs1 maszyną primary

Podgląd replikacji:
cat /proc/drbd

Teraz formatujemy nasz dysk
mkfs.ext4 /dev/drbd0

Tworzymy katalog w którym będzie dostępny nasz zasób:
mkdir -p /dane

I na koniec montujemy:
mount /dev/drbd0 /dane

I to na tyle jeżeli chodzi o DRBD.
Bardzo ważne jest jednak nie pomijanie jakiegokolwiek kroku. Mega ważne jest to żeby partycje były identyczne, żebyśmy nie zapomnieli o NTP
i hostsach co najczęściej prowadzi do sporych problemów a to są takie proste tematy.

NFS
Tutaj instalacja w zasadzie ogranicza się do zainstalowania pakietu:
apt-get install nfs-kernel-server

i dodania informacji do pliku /etc/exports
/dane 192.168.1.0/255.255.255.0(rw,no_root_squash,no_all_squash,sync)

Heartbeat
Czyli najważniejsza cześć klastra. Wybrałęm heartbeat zamiast Peacemaker ponieważ jest prostszy i do tej instalacji lepiej się sprawdzi.
Heartbeat odpowiada za to żeby dwa nody stały się klasterm i żeby po awarii całego systemu wszystko nadal funkcjonowało jak należy.
Instalacja poprzez wydanie komendy:
apt-get install heartbeat

Podstawowa czynność to konfiguracja pliku :
/etc/ha.d/ha.cf

Tutaj zawartość radzę przekleić bez pytań gdyż proszę mi wierzyć było to okupione masą testów i orania wielu maszyn:
initdead 30
keepalive 1
traditional_compression off
deadtime 10
deadping 10
warntime 5
# Wypisujemy nody
node nfs1 nfs2
# To jest bardzo ważna linia – sprawdzanie statusów i restart nodów
stonith_host nfs1 external/ipmi nfs2 192.168.1.221 root haslo lan
stonith_host nfs2 external/ipmi nfs1 192.168.1.222 root haslo lan
use_logd on
# W przypadku powstania uszkodzonego noda usługi pozostają na działającym
auto_failback off
# Pingowanie innych hostów w celu sprawdzenia czy to nie większa kraksa
ping_group lan_ping 192.168.1.1 192.168.1.10
# Takover if pings (above) fail
respawn hacluster /usr/lib/heartbeat/ipfail

##### Mega ważne – podajemy też interfejsy którymi nody są spięte bezpośrednio
# nfs1
ucast eth0 192.168.1.221
ucast eth1 10.21.5.1
# nfs2
ucast eth0 192.168.1.222
ucast eth1 10.21.5.2

Teraz edytujemy plik /etc/heartbeat/haresources w którym dajemy informacje o naszym dysku sieciowym i adresie IP klastra:
nfs1 IPaddr::192.168.1.220/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/dane::ext4 nfs-kernel-server

Ważne info: na obu nodach wskazujemy na pierwszego noda.

 

W ten sposób postawiliśmy własny klaster DRBD i mamy softwaroy RAID sieciowy. Działa to super – w momencie odłączenia jednego noda nadal mamy dostęp do danych, po podłączeni z powrotem drugiego wszystko sie synchronizuje i  zawsze na dyskach mamy te same dane.

michal
Jestem wielkim fanem technologii,jak to moja babcia mnie zawsze nazywała "informatykiem". Moimi największymi pasjami jest wykorzystanie automatyzacji, technologii do usprawnienia procesów w e-commerce. Uwielbiam retro komputery, budowanie klastrów. Ogólnie jestem trochę dziwakiem

Artykuły autora | Strona www autora

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.