Debian jessie – Podstawowa konfiguracja drbd
DRBD czyli Distributed Replicated Block Device jest rozwiązaniem programowym umożliwiającym replikację urządzeń blokowych takich jak dyski twarde, partycje, woluminy logiczne z wykorzystaniem sieci. Konfiguracja oparta jest o system Debian jessie, utworzone urządzenie działa w trybie active-passive
Operacje wykonywane na każdym z serwerów
1) Tworzymy partycje -w moim przypadku to /dev/sda3 o rozmiarze 50 GB i typie Linux (kod 83)
/dev/sda3 42008576 147028965 105020390 50.1G 83 Linux
2) Dodajemy w /etc/hosts wpisy z adresami IP i nazwą serwerów:
37.187.103.5 r2.marek.pro kimsufi2
176.31.127.129 r1.marek.pro kimsufi
3)Instalujemy drbd:
apt-get install drbd drbd8-utils
4)Dodajemy moduł drbd i sprawdzamy czy został poprawnie zainicjowany:
# modprobe drbd
r1:~# lsmod | grep drbd
drbd 318526 3
lru_cache 13032 1 drbd
libcrc32c 12426 1 drbd
5)Wykonujemy kopie głownej konfiguracji i dokonujemy własnej:
cp /etc/drbd.conf /etc/drbd.conf_orig
cat /dev/null > /etc/drbd.conf
vi /etc/drbd.conf
Przykładowy plik konfiguracyjny:
global { usage-count no; } common { syncer { rate 100M; } } resource r0 { protocol C; startup { wfc-timeout 15; degr-wfc-timeout 60; } disk { on-io-error detach; no-disk-flushes ; no-disk-barrier; c-plan-ahead 0; c-fill-target 24M; c-min-rate 80M; c-max-rate 720M; } net { # max-epoch-size 20000; max-buffers 36k; sndbuf-size 1024k ; rcvbuf-size 2048k; } on r1.uphost.pro { device /dev/drbd0; disk /dev/sda3; address 176.31.127.129:7788; meta-disk internal; } on r2.uphost.pro { device /dev/drbd0; disk /dev/sda3; address 37.187.103.5:7788; meta-disk internal; } }
6) Tworzymy macierz danych:
r1:~# drbdadm create-md r0 Writing meta data... initializing activity log NOT initialized bitmap New drbd meta data block successfully created.
7)Uruchamiamy DRBD
r1:~# /etc/init.d/drbd start Starting DRBD resources:[ d(r0) s(r0) n(r0) ]....
Operacje do wykonania na głównym (primary) serwerze
Ustawiamy serwer jako primary usuwając wszystki dane:
drbdadm -- --overwrite-data-of-peer primary all
Sprawdzamy na drugim serwerze stan synchronizacji:
r2:~# cat /proc/drbd version: 8.3.7 (api:88/proto:86-91) srcversion: EE47D8BF18AC166BE219757 0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r---- ns:0 nr:15790400 dw:15790144 dr:0 al:0 bm:963 lo:9 pe:29622 ua:8 ap:0 ep:1 wo:b oos:15664096 [=========>..........] sync'ed: 50.3% (15296/30716)M finish: 0:02:44 speed: 95,212 (85,352) K/sec
Po zakończeniu synchronizacji wynik będzie wyglądał tak:
# cat /proc/drbd version: 8.3.7 (api:88/proto:86-91) srcversion: EE47D8BF18AC166BE219757 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r---- ns:0 nr:31454240 dw:31454240 dr:0 al:0 bm:1920 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
Wracamy więc do pierwszego serwera, sprawdzamy czy synchronizacja została zrobiona i tworzymy system plików, oraz montujemy go na serwerze -w moim przypadku pod /home:
mkfs.ext3 /dev/drbd0 mount /dev/drbd0 /home
Sprawdzamy czy jest poprawnie zamontowany:
root@r1:~# mount | grep drbd /dev/drbd0 on /home type ext3 (rw,relatime,data=ordered) root@r1:~# df -h /dev/drbd0 Filesystem Size Used Avail Use% Mounted on /dev/drbd0 50G 1.1G 46G 3% /home root@r1:~#
Gotowe!
Zmiana serwera głównego
Aby zmienić serwer główny należy odmontować zasób na serwerze głównym i ustawić serwer jako secondary
r1:~# ls -l /home/ total 1049620 drwx------ 2 root root 16384 Jan 12 02:12 lost+found -rw-r--r-- 1 root root 0 Jan 12 08:49 s -rw-r--r-- 1 root root 1073741824 Jan 12 10:23 test root@r1:~# umount /home root@r1:~# drbdadm secondary r0
następnie logujemy się na serwer zapasowy, ustawiamy go jako główny i motujemy zasób:
root@r2:~# drbdadm primary r0 root@r2:~# mount /dev/drbd0 /home
Sprawdzamy czy zawartośc plików sie zgadza:
root@r2:~# ls -l /home/ total 1049620 drwx------ 2 root root 16384 Jan 12 02:12 lost+found -rw-r--r-- 1 root root 0 Jan 12 08:49 s -rw-r--r-- 1 root root 1073741824 Jan 12 10:23 test root@r2:~#
Zawartość się oczywiscie zgadza – jako potwierdzenie że r2 jest serwerem primary sprawdzamy /proc/drbd
root@r2:~# cat /proc/drbd version: 8.4.3 (api:1/proto:86-101) srcversion: 1A9F77B1CA5FF92235C2213 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:4 nr:54914052 dw:54914056 dr:1529 al:1 bm:3247 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0
Zapis „Primary/Secondary” potwierdza, że serwer r2 jest teraz jako primary.