Назад | Перейти на главную страницу

Не удается запустить drbdadm с DRBD 8.4 на CentOS 7.3

Узлы:

Используйте этот способ установки DRBD на обоих узлах:

rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
yum -y install drbd84-utils kmod-drbd84

Добавлен новый жесткий диск и раздел на обоих узлах:

fdisk /dev/sdb

Затем отформатируйте раздел:

mkfs.ext4 /dev/sdb

(Ошибка на узле 2, поэтому удалил его и добавил новый диск стал /dev/sdc. Сформировал его.)

Следуйте официальному руководству, чтобы настроить базовый ресурс на обоих узлах:

http://docs.linbit.com/docs/users-guide-8.4/p-build-install-configure/#ch-configure

Создано /etc/drbd.d/r0.res на обоих узлах:

resource r0 {
    protocol C;
    on node1 {
            device /dev/drbd0;
            disk /dev/sdb;
            address 192.168.0.1:7789;
            meta-disk internal;
    }
    on node2 {
            device /dev/drbd0;
            disk /dev/sdc;
            address 192.168.0.2:7789;
            meta-disk internal;
    }
}

Отредактируйте iptables на обоих узлах:

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7788 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7799 -j ACCEPT
service iptables save

Инициализируйте данные на обоих узлах:

drbdadm create-md r0

Все ок.

Разместите ресурс на обоих узлах: drbdadm up r0

узел1:

Device '0' is configured!
Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 20

узел2:

??: Failure: (162) Invalid configuration request
additional info from kernel:
minor exists in different resource
Command 'drbdsetup-84 new-minor r0 0 0' terminated with exit code 10

У них обоих произошли проблемы.

Бегать cat /proc/drbd на обоих узлах:

узел1:

version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----s
    ns:0 nr:0 dw:0 dr:912 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2097052

узел2:

version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
 0: cs:WFConnection ro:Secondary/Unknown ds:Diskless/DUnknown C r----s
    ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Primary и Secondary неизвестно.

Бегать drbdadm connect all на узле 1:

r0: Failure: (125) Device has a net-config (use disconnect first)
Command 'drbdsetup-84 connect r0 ipv4:192.168.0.1:7789 ipv4:192.168.0.2:7789 --protocol=C' terminated with exit code 10

Бегать drbdadm -- --discard-my-data connect all на узле 2:

r0: Failure: (102) Local address(port) already in use.
Command 'drbdsetup-84 connect r0 ipv4:192.168.0.1:7789 ipv4:192.168.0.2:7789 --protocol=C --discard-my-data' terminated with exit code 10

Что плохого в его использовании?


Редактировать 1

После бега dd if=/dev/zero of=/dev/sdb(sdc) bs=1M oflag=direct status=progress на обоих узлах они также не могут работать drbdadm up r0 успешно:

узел1

No valid meta data found
Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 255

узел2

??: Failure: (162) Invalid configuration request
additional info from kernel:
minor exists in different resource
Command 'drbdsetup-84 new-minor r0 0 0' terminated with exit code 10

Редактировать 2

В это время побежал systemctl start brdb на обоих узлах все они ожидают рассмотрения. Ждать долго не дало результата.

И побежал lsblk -a сейчас:

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   10G  0 disk
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0    9G  0 part
  ├─cl-root 253:0    0    8G  0 lvm  /
  └─cl-swap 253:1    0    1G  0 lvm  [SWAP]
sdb           8:32   0   16G  0 disk
sr0          11:0    1 1024M  0 rom
drbd0       147:0    0    2G  0 disk

Вы не хотите создавать файловую систему на резервных дисках для DRBD (sdb и sdc); вы хотите сначала создать DRBD, а затем отформатировать полученное устройство DRBD в своей файловой системе. Это жестяная банка можно сделать иначе, но тогда вам нужно будет увеличить резервный раздел или уменьшить размер файловой системы, чтобы освободить место для метаданных DRBD (которые находятся в конце блочного устройства при использовании внутренних метаданных).

Процесс должен быть примерно таким:

-Установите все свое программное обеспечение, как вы сделали выше.

- Обнулите свой раздел на обоих узлах (необязательно, но сделайте это):

# dd if=/dev/zero of=/dev/sdb bs=1M oflag=direct status=progress
# dd if=/dev/zero of=/dev/sdc bs=1M oflag=direct status=progress

-Создайте файл конфигурации для ваших ресурсов DRBD, как вы это сделали выше.

-Добавьте правила брандмауэра, как вы это делали выше (за исключением того, что вам действительно не нужен порт 7799, поскольку он не используется в вашей конфигурации).

-Создайте метаданные DRBD на устройствах резервного копирования и вызовите r0 на обоих узлах:

# drbdadm create-md r0
# drbdadm up r0
# cat /proc/drbd

-Проверьте вывод cat /proc/drbd, вы должны увидеть, что ваше устройство Connected, Secondary/Secondary, и Inconsistent/Inconsistent. Если что-то из этого НЕ правда, СТОП, что-то не так.

-Затем выберите любой узел (НЕ ОБЕИХ), сделайте его первичным (DRBD не позволит вам стать первичным на узле с Inconsistent data) и создаем ФС:

# drbdadm primary r0 --force
# mkfs.ext4 /dev/drbd0

Тогда вы бы использовали /dev/drbd0 так же, как вы бы использовали /dev/sda или /dev/sdc; не трогай /dev/sdb или /dev/sdc когда-либо снова, если вы не уверены в том, что делаете. Прикосновение к поддерживающим дискам DRBD может вызвать несоответствия, о которых DRBD не узнает (пока вы не запустите verify или иначе перезаписать блок).

Продолжайте читать документацию LINBIT. DRBD, безусловно, отличный инструмент, и его легко использовать, если вы понимаете основы, но вы имеете дело с хранилищем, поэтому есть много места, чтобы постоянно портить вещи.