DRDB (Distributed Replicated Block Device) wykorzystywany jest w klastrach HA (High Availability). Ale jak go zainstalować i skonfigurować?
Wymagania
Aby wszystko działało poprawnie musisz posiadać:
- dodatkowy dysk (urządzenie blokowe typu dysk czyli np. cały dysk, partycja lub logiczny wolumen) na OBU maszynach (najlepiej tego samego rozmiaru),
- połączenie sieciowe pomiędzy dwoma maszynami,
- działający DNS (albo przynajmniej takie same wpisy w/etc/hosts),
- działająca synchronizacja czasu z zewnętrznymi serwerami czasu,
- otwarty port 7788 na firewallu.
- Selinux Permissive
Instalajca
Obie maszyny: dodanie repozytorium elrepo
Instalacja pakietu dodającego repozytorium elrepo:
/bin/rpm -ivh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
Obie maszyny: Instalacja pakietu DRBD
/usr/bin/yum install -y kmod-drbd83 drbd83-utils
Niekiedy trzeba przerestartować maszynę gdyż moduł może być przeznaczony dla innej wersji jądra, które właśnie została zainstalowana.
Obie maszyny: Ładowanie modułu DRBD
Załaduj moduł drbd albo zrestartuj obie maszyny:
/sbin/modprobe drbd
Obie maszyny: stworzenie pliku konfiguracyjnyego dla pierwszego dysku
Plik konfiguracyjny musi być taki sam na obu nodach:
[root@heartbeat2 ~]# cat /etc/drbd.d/disk1.res resource disk1 { startup { wfc-timeout 30; outdated-wfc-timeout 20; degr-wfc-timeout 30; } net { cram-hmac-alg sha1; shared-secret sync_disk; } syncer { rate 100M; verify-alg sha1; } on heartbeat1 { device minor 1; disk /dev/sdb; address 192.168.200.231:7789; meta-disk internal; } on heartbeat2 { device minor 1; disk /dev/sdb; address 192.168.200.232:7789; meta-disk internal; } }
Obie maszyny: Sprawdzenie plików /etc/hosts albo działający DNS
Ja jestem leniwy więc rozwiązywanie nazw załatwiam przez /etc/hosts
192.168.200.231 heartbeat1 heartbeat1.localnet 192.168.200.232 heartbeat2 heartbeat2.localnet
Obie maszyny: Synchronizacja czasu
Ja synchronizację czasu załatwiam przez puppet-a i ntp usługę, można jednak zrobić to przez rdate lub ntpdate i crontab:
1 * * * * root ntpdate your.ntp.server
Obie maszyny: Inicjalizacja DRBD meta data
Zgodnie z definicjami w pliku /etc/drdb/disk1.res
/sbin/drbdadm create-md disk1
Obie maszyny: start usługi DRBD
Startujemy usługę DRBD
/etc/init.d/drbd start
Pierwszy node: inicjacja dysku
Określamy, na pierwszym nodzie dysk:
/sbin/drbdadm -- --overwrite-data-of-peer primary disk1
Oczekiwanie na koniec synchronizacji
Informacje miedzy nodami powinny być jednakowe, więc czekamy na synchronziację:
[root@heartbeat1 drbd.d]# cat /proc/drbd version: 8.3.16 (api:88/proto:86-97) GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37 1: cs:SyncSource ro:Secondary/Secondary ds:UpToDate/Inconsistent C r----- ns:681984 nr:0 dw:0 dr:685056 al:0 bm:41 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:366780 [==========>.........] sync'ed: 55.8% (366780/822460)K finish: 0:00:08 speed: 41,424 (41,424) K/sec
Utworzenie systemu plików na urządzeniu
Utworzenie systemu plików na urządzeniu:
/sbin/mkfs.ext4 /dev/drbd1
Montowanie urządzenia
Montowanie systemu plików:
mkdir /srv/disk1/ mount /dev/drbd1 /srv/disk1/