User Tools

Site Tools


решение_drbd

This is an old revision of the document!


Решение DRBD

Подготовка узлов

Добавляем жесткие диски, создаем точки монтирования

root@nodeN:~# lshw -C disk

root@nodeN:~# mkdir /disk2

Установка и настройка

root@nodeN:~# apt install drbd8-utils

root@nodeN:~# systemctl enable drbd.service

root@nodeN:~# cat /etc/drbd.d/global_common.conf
...
        startup {
...
                wfc-timeout 30;
        }
...
root@nodeN:~# cat /etc/drbd.d/r0.res
resource r0 {
        on node1.corpX.un {
                device /dev/drbd0;
                disk /dev/sdb;
#                disk /dev/sdb1; 
                address 10.Z.M.100+X:7788;
                meta-disk internal;
        }
        on node2.corpX.un {
                device /dev/drbd0;
                disk /dev/sdb;
#                disk /dev/sdb1;  
                address 10.Z.M.200+X:7788;
                meta-disk internal;
        }
}
root@nodeN:~# drbdadm create-md r0

Одновременно на двух узлах (в ubuntu16 может потребоваться перезагрузка):

root@nodeN:~# service drbd start

root@nodeN:~# ps ax | grep drbd
root@node1:~# drbdadm -- --overwrite-data-of-peer primary r0

root@nodeN:~# cat /proc/drbd
root@nodeN:~# watch cat /proc/drbd

Можно не ожидая синхронизации:

root@node1:~# mkfs.ext4 /dev/drbd0

root@node1:~# mount /dev/drbd0 /disk2

Смена ролей узлов

после окончания синхронизации

root@node1:~# cp /etc/hostname /disk2
root@node1:~# umount /disk2
root@node1:~# drbdadm secondary r0

root@node2:~# drbdadm primary r0
root@node2:~# mount /dev/drbd0 /disk2
root@node2:~# cat /disk2/hostname

Отключение зеркалируемого раздела

root@node2:~# umount /disk2
root@node2:~# drbdadm secondary r0

Восстановление после сбоя

  • Устанавливаем новый диск
root@nodeNEW:~# drbdadm create-md r0

root@nodeNEW:~# service drbd start

Решение ситуации Split-Brain

nodeN# service drbd stop

Выбираем узел, данные которого будут затерты.

nodeZ# drbdadm invalidate r0

Одновременно на двух узлах:

root@nodeN:~# service drbd start

DRBD и Heartbeat

root@nodeN:~# systemctl disable drbd.service

root@nodeN:~# service heartbeat stop

root@nodeN:~# cat /etc/ha.d/haresources
node1.corpX.un drbddisk Filesystem::/dev/drbd0::/disk2::ext4
root@nodeN:~# service heartbeat start

DRBD и Pacemaker

root@nodeN:~# systemctl disable drbd.service

crm(live)configure# primitive pr_drbd_r0 ocf:linbit:drbd params drbd_resource="r0" op monitor interval="15s"

crm(live)configure# ms ms_drbd_r0 pr_drbd_r0 meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"

crm(live)configure# primitive pr_fs_r0 ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/disk2" fstype="ext4"

crm(live)configure# colocation col_fs_on_drbd inf: pr_fs_r0 ms_drbd_r0:Master

crm(live)configure# order or_fs_after_drbd inf: ms_drbd_r0:promote pr_fs_r0:start

crm(live)configure# commit
# crm resource move pr_fs_r0 node1.corpX.un

# crm configure show
...
location cli-prefer-pr_fs_r0 pr_fs_r0 role=Started inf: node1.corpX.un
...

Дополнительные материалы

Доброго времени суток.

DRBD можно совместить с OCFS2 так:
1. Конфигурируем ресурс DRBD как обычный (без поддержки нескольких primary)
2. Инициализируем DRBD (create-md, service drbd start) и выключаем
3. Конфигурируем ресурс DRBD как во вложении
4. Конфигурируем OCFS (cluster.conf из вложения + dpkg-reconfigure
ocfs2-utils), запускаем
5. Запускаем DRBD, создаём ФС.

Опирался на статью: http://www.drbd.org/users-guide/ch-ocfs2.html (без
использования Pacemaker).
решение_drbd.1507282114.txt.gz · Last modified: 2017/10/06 12:28 by val