DRBD: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 16 промежуточных версий 7 участников)
Строка 1: Строка 1:
  +
[[Категория:Linux]]
 
  +
[[Категория:NetworkStorage]]
 
=Постановка задачи=
 
=Постановка задачи=
 
Требуется создать отказоустойчивый кластер с общим хранилищем данных. Область применения - кластера www-серверов (с распределением запросов round-robin-dns или аппаратными load-balancer).
 
Требуется создать отказоустойчивый кластер с общим хранилищем данных. Область применения - кластера www-серверов (с распределением запросов round-robin-dns или аппаратными load-balancer).
Строка 16: Строка 17:
 
sys-cluster/drbd-kernel
 
sys-cluster/drbd-kernel
 
</PRE>
 
</PRE>
и, соответвенно, для архитектуры которая используется в /etc/portage/package.keywords
+
и, соответственно, для архитектуры которая используется в /etc/portage/package.keywords
 
<PRE>
 
<PRE>
 
sys-cluster/drbd ~amd64
 
sys-cluster/drbd ~amd64
Строка 25: Строка 26:
 
{{Root|emerge -DuN sys-cluster/drbd sys-cluster/drbd-kernel}}
 
{{Root|emerge -DuN sys-cluster/drbd sys-cluster/drbd-kernel}}
   
{{Note| При обновлении ядра нужно будет переустановить sys-cluster/drbd-kernel. На обоих нодах кластера версия содулей должна быть одинаковой.}}
+
{{Note| При обновлении ядра нужно будет переустановить sys-cluster/drbd-kernel. На обоих нодах кластера версия модулей должна быть одинаковой.}}
   
 
=Простой конфиг=
 
=Простой конфиг=
Строка 63: Строка 64:
 
* sirmax,nightmare - имена нод (hostname)
 
* sirmax,nightmare - имена нод (hostname)
   
В /etc/hosts но нодах
+
В /etc/hosts на нодах
 
<PRE>
 
<PRE>
 
#
 
#
Строка 70: Строка 71:
 
</PRE>
 
</PRE>
   
  +
=Начало работы с DRBD=
=1111=
 
   
  +
Загрузить модуль:
 
{{Root|modprobe 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>
   
  +
Создать массив:
# modprobe drbd
 
# drbdadm create-md drbd0
+
{{Root|<nowiki>drbdadm create-md r0
 
drbdadm create-md r0
 
 
md_offset 41883086848
 
md_offset 41883086848
 
al_offset 41883054080
 
al_offset 41883054080
Строка 90: Строка 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}}
 
# drbdadm attach drbd0
+
{{Root|drbdadm connect r0}}
# drbdadm connect drbd0
 
   
   
Строка 121: Строка 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

Текущая версия на 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

Устанавливаю:

emerge -DuN sys-cluster/drbd sys-cluster/drbd-kernel
Note: При обновлении ядра нужно будет переустановить sys-cluster/drbd-kernel. На обоих нодах кластера версия модулей должна быть одинаковой.

Простой конфиг

Пример простого конфига (минимальный рнабочий)

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

Загрузить модуль:

modprobe 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

Создать массив:

drbdadm create-md r0 md_offset 41883086848 al_offset 41883054080 bm_offset 41881772032 Found some data ==> This might destroy existing data! <== Do you want to proceed? [need to type 'yes' to confirm] yes Writing meta data... initializing activity log NOT initialized bitmap New drbd meta data block successfully created.


drbdadm attach r0
drbdadm connect r0



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