Узлы:
Используйте этот способ установки 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
Что плохого в его использовании?
После бега dd if=/dev/zero of=/dev/sdb(sdc) bs=1M oflag=direct status=progress
на обоих узлах они также не могут работать drbdadm up r0
успешно:
No valid meta data found
Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 255
??: 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
В это время побежал 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, безусловно, отличный инструмент, и его легко использовать, если вы понимаете основы, но вы имеете дело с хранилищем, поэтому есть много места, чтобы постоянно портить вещи.