编辑1

编辑1

节点:

  • 节点1
  • 节点2

使用这种方式在两个节点上安装 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

(node2 出现故障,因此将其移除并添加了一个新磁盘/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

PrimarySecondary未知。

在节点1上运行drbdadm connect all

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

在节点2上运行drbdadm -- --discard-my-data connect all

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在两个节点上运行,全部都处于pending状态。等待了很久也没有结果。

现在就跑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

答案1

您不想在 DRBD 的备份磁盘上创建文件系统(sdbsdc);您想先创建 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,因为您的配置中没有使用它)。

r0-在支持块设备上创建 DRBD 的元数据,并在两个节点上启动:

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

-检查 的输出cat /proc/drbd,您应该看到您的设备是ConnectedSecondary/SecondaryInconsistent/Inconsistent。如果其中任何一个是不是真的,停止,有些不对劲。

—然后,选择任一节点(不是两个都选),强制其成为主节点(DRBD 不会让您在具有Inconsistent数据的节点上成为主节点)并创建 FS:

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

/dev/drbd0然后,您将像使用/dev/sda或一样使用;除非您对所做的事情有信心,否则/dev/sdc不要再碰/dev/sdb或。触碰 DRBD 的备份磁盘可能会引起 DRBD 无法察觉的不一致(直到您运行或以其他方式覆盖该块)。/dev/sdcverify

继续阅读 LINBIT 的文档。DRBD 显然是一个很棒的工具,一旦你理解了基础知识,它就很容易使用,但是你处理的是存储,因此有很大空间会永久地搞乱事情。

相关内容