DRBD: различия между версиями
(→Ссылки) |
Sirmax (обсуждение | вклад) |
||
(не показано 29 промежуточных версий 8 участников) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Linux]] |
||
+ | [[Категория:NetworkStorage]] |
||
+ | =Постановка задачи= |
||
+ | Требуется создать отказоустойчивый кластер с общим хранилищем данных. Область применения - кластера www-серверов (с распределением запросов round-robin-dns или аппаратными load-balancer). |
||
+ | =Установка (gentoo)= |
||
⚫ | |||
+ | ==Конфиг ядра== |
||
+ | Для DRBD требуется connector. |
||
+ | {{Kernel|Поддержка DRBD|<pre> |
||
+ | Device Drivers ---> |
||
+ | <*> Connector - unified userspace <-> kernelspace linker ---> |
||
+ | </pre>}} |
||
+ | ==Установка модулей ядра и ПО для работы с DRBD== |
||
+ | ПО для работы с DRBD и модули помечены как нестабильные. Добавить в /etc/portage/package.unmask: |
||
<PRE> |
<PRE> |
||
+ | sys-cluster/drbd |
||
+ | sys-cluster/drbd-kernel |
||
+ | </PRE> |
||
+ | и, соответственно, для архитектуры которая используется в /etc/portage/package.keywords |
||
+ | <PRE> |
||
+ | sys-cluster/drbd ~amd64 |
||
+ | sys-cluster/drbd-kernel ~amd64 |
||
+ | </PRE> |
||
+ | Устанавливаю: |
||
+ | {{Root|emerge -DuN sys-cluster/drbd sys-cluster/drbd-kernel}} |
||
+ | |||
+ | {{Note| При обновлении ядра нужно будет переустановить sys-cluster/drbd-kernel. На обоих нодах кластера версия модулей должна быть одинаковой.}} |
||
+ | |||
⚫ | |||
+ | Пример простого конфига (минимальный рнабочий) |
||
+ | <PRE> |
||
global { |
global { |
||
usage-count no; |
usage-count no; |
||
Строка 9: | Строка 37: | ||
common { |
common { |
||
protocol C; |
protocol C; |
||
+ | syncer { rate 300M; } |
||
+ | net { allow-two-primaries; } |
||
} |
} |
||
Строка 14: | Строка 44: | ||
on sirmax { |
on sirmax { |
||
device /dev/drbd1; |
device /dev/drbd1; |
||
− | disk /dev/ |
+ | disk /dev/sde1; |
− | address |
+ | address 172.16.254.1:7789; |
meta-disk internal; |
meta-disk internal; |
||
} |
} |
||
Строка 22: | Строка 52: | ||
on nightmare { |
on nightmare { |
||
device /dev/drbd1; |
device /dev/drbd1; |
||
− | disk /dev/ |
+ | disk /dev/sdb1; |
− | address |
+ | address 172.16.254.2:7789; |
meta-disk internal; |
meta-disk internal; |
||
} |
} |
||
} |
} |
||
+ | </PRE> |
||
+ | Обратить внимание: <BR> |
||
+ | * net { allow-two-primaries; } - разрешить синхронизацию в 2 направлениях, необходима работа кластерной ФС поверх DRBD. |
||
+ | * 172.16.254.2,172.16.254.1 - ip адреса нод кластра (в моем случае это сеть 172.16.254.0/30) |
||
+ | * sirmax,nightmare - имена нод (hostname) |
||
+ | В /etc/hosts на нодах |
||
− | |||
+ | <PRE> |
||
+ | # |
||
+ | 172.16.254.1 sirmax |
||
+ | 172.16.254.2 nightmare |
||
</PRE> |
</PRE> |
||
+ | =Начало работы с DRBD= |
||
+ | Загрузить модуль: |
||
⚫ | |||
+ | <PRE> |
||
+ | [ 7.644351] drbd: initialised. Version: 8.3.2 (api:88/proto:86-90) |
||
+ | [ 7.644355] drbd: GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by root@nightmare, 2009-09-06 17:25:08 |
||
+ | [ 7.644358] drbd: registered as block device major 147 |
||
+ | [ 7.644360] drbd: minor_table @ 0xffff88007d976580 |
||
+ | </PRE> |
||
+ | Создать массив: |
||
− | |||
⚫ | |||
− | |||
− | |||
− | |||
− | |||
− | |||
⚫ | |||
− | # drbdadm create-md drbd0 |
||
− | |||
⚫ | |||
md_offset 41883086848 |
md_offset 41883086848 |
||
al_offset 41883054080 |
al_offset 41883054080 |
||
Строка 57: | Строка 97: | ||
initializing activity log |
initializing activity log |
||
NOT initialized bitmap |
NOT initialized bitmap |
||
− | New drbd meta data block successfully created. |
+ | New drbd meta data block successfully created.</nowiki>}} |
+ | {{Root|drbdadm attach r0}} |
||
− | |||
− | + | {{Root|drbdadm connect r0}} |
|
− | # drbdadm connect drbd0 |
||
Строка 88: | Строка 127: | ||
[86381.994469] drbd1: conn( Unconnected -> WFConnection ) |
[86381.994469] drbd1: conn( Unconnected -> WFConnection ) |
||
</PRE> |
</PRE> |
||
− | |||
− | |||
− | |||
drbdadm -- --overwrite-data-of-peer primary r0 |
drbdadm -- --overwrite-data-of-peer primary r0 |
||
Строка 115: | Строка 151: | ||
<BR> |
<BR> |
||
http://xgu.ru/wiki/DRBD |
http://xgu.ru/wiki/DRBD |
||
+ | <BR> |
||
+ | http://b2d.kiev.ua/blog/?p=7 |
||
+ | <BR> |
||
+ | http://sources.redhat.com/cluster/doc/usage.txt |
||
+ | <BR> |
||
+ | http://blog.sozinov.eu/2008/10/gfs-global-file-system.html |
Текущая версия на 22:00, 17 июля 2011
Постановка задачи
Требуется создать отказоустойчивый кластер с общим хранилищем данных. Область применения - кластера www-серверов (с распределением запросов round-robin-dns или аппаратными load-balancer).
Установка (gentoo)
Конфиг ядра
Для DRBD требуется connector.
Linux Kernel Configuration: Поддержка DRBD |
Device Drivers ---> <*> Connector - unified userspace <-> kernelspace linker ---> |
Установка модулей ядра и ПО для работы с DRBD
ПО для работы с DRBD и модули помечены как нестабильные. Добавить в /etc/portage/package.unmask:
sys-cluster/drbd sys-cluster/drbd-kernel
и, соответственно, для архитектуры которая используется в /etc/portage/package.keywords
sys-cluster/drbd ~amd64 sys-cluster/drbd-kernel ~amd64
Устанавливаю:
Простой конфиг
Пример простого конфига (минимальный рнабочий)
global { usage-count no; } common { protocol C; syncer { rate 300M; } net { allow-two-primaries; } } resource r0 { on sirmax { device /dev/drbd1; disk /dev/sde1; address 172.16.254.1:7789; meta-disk internal; } on nightmare { device /dev/drbd1; disk /dev/sdb1; address 172.16.254.2:7789; meta-disk internal; } }
Обратить внимание:
- net { allow-two-primaries; } - разрешить синхронизацию в 2 направлениях, необходима работа кластерной ФС поверх DRBD.
- 172.16.254.2,172.16.254.1 - ip адреса нод кластра (в моем случае это сеть 172.16.254.0/30)
- sirmax,nightmare - имена нод (hostname)
В /etc/hosts на нодах
# 172.16.254.1 sirmax 172.16.254.2 nightmare
Начало работы с DRBD
Загрузить модуль:
[ 7.644351] drbd: initialised. Version: 8.3.2 (api:88/proto:86-90) [ 7.644355] drbd: GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by root@nightmare, 2009-09-06 17:25:08 [ 7.644358] drbd: registered as block device major 147 [ 7.644360] drbd: minor_table @ 0xffff88007d976580
Создать массив:
dmesg [86352.936619] drbd1: disk( Diskless -> Attaching ) [86352.936625] drbd1: Starting worker thread (from cqueue [20959]) [86352.937639] drbd1: No usable activity log found. [86352.937644] drbd1: max_segment_size ( = BIO size ) = 32768 [86352.937648] drbd1: drbd_bm_resize called with capacity == 81800336 [86352.938477] drbd1: resync bitmap: bits=10225042 words=159767 [86352.938482] drbd1: size = 39 GB (40900168 KB) [86352.938494] drbd1: Writing the whole bitmap, size changed [86352.977094] drbd1: 39 GB (10225042 bits) marked out-of-sync by on disk bit-map. [86353.006166] drbd1: recounting of set bits took additional 1 jiffies [86353.006171] drbd1: 39 GB (10225042 bits) marked out-of-sync by on disk bit-map. [86353.006178] drbd1: disk( Attaching -> Inconsistent ) [86381.994378] drbd1: conn( StandAlone -> Unconnected ) [86381.994398] drbd1: Starting receiver thread (from drbd1_worker [21012]) [86381.994459] drbd1: receiver (re)started [86381.994469] drbd1: conn( Unconnected -> WFConnection )
drbdadm -- --overwrite-data-of-peer primary r0
cat /proc/drbd version: 8.0.16 (api:86/proto:86) GIT-hash: d30881451c988619e243d6294a899139eed1183d build by root@nightmare, 2009-08-31 14:34:25 1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r--- ns:5408 nr:0 dw:0 dr:5408 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 [>....................] sync'ed: 0.1% (39936/39940)M finish: 28:23:56 speed: 360 (336) K/sec resync: used:0/61 hits:337 misses:1 starving:0 dirty:0 changed:1 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
Ссылки
http://www.netup.ru/articles.php?n=13
http://habrahabr.ru/blogs/hi/50143/
http://wiki.samba.org/index.php/6.0._DRBD
http://xgu.ru/wiki/DRBD
http://b2d.kiev.ua/blog/?p=7
http://sources.redhat.com/cluster/doc/usage.txt
http://blog.sozinov.eu/2008/10/gfs-global-file-system.html