我在两个Debian拉伸服务器上有一个很好的DRBD工作版本,我通过下面这个很棒的指南创建了这个版本:https://www.howtoforge.com/setting-up-network-raid1-with-drbd-on-debian-squeeze-p2/。
但是每次重新启动之后,我必须重新做一些事情才能使它再次进入工作状态。
在重新启动之前,我看到了它在工作时的情况:
root@server1:~# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:8 nr:0 dw:4 dr:1209 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
在服务器2上:
root@server2:~# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r----- ns:0 nr:8 dw:8 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
在服务器1上:
root@server1:~# mount ... /dev/drbd0 on /var/www type ext3 (rw,relatime,data=ordered)
这是我在重启后所看到的。所有设备都在工作,但安装、服务启动和主/次要配置丢失。通过这样做,我尝试在开始时添加drbd:
update-rc.d drbd defaults
在这两台服务器上,这似乎都不起作用。DRBD只是没有启动,但是在这两台服务器上手动执行/etc/init.d/drdb start都很好。
另外,我也不确定我是否可以将DRBD卷添加到fstab中,因为如果DRBD服务甚至没有启动,它肯定无法工作吗?我读过关于在_netdev中使用fstab的文章,但是fstab条目的各种组合并没有奏效。
最后,我还必须在每次重新启动时设置DRBD的主状态和次要状态,然后手动重新装入卷。
因此,在重新启动之后,我就是这样让它工作的:
在服务器1上:
root@server1:/etc# /etc/init.d/drbd status ● drbd.service - LSB: Control DRBD resources. Loaded: loaded (/etc/init.d/drbd; generated; vendor preset: enabled) Active: inactive (dead) Docs: man:systemd-sysv-generator(8)
root@server1:/etc# /etc/init.d/drbd start [ ok ] Starting drbd (via systemctl): drbd.service. root@jmtest1:/etc# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
root@server1:/etc# drbdadm primary r0
root@server1:/etc# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
在服务器2上:
root@server2:~# /etc/init.d/drbd status ● drbd.service - LSB: Control DRBD resources. Loaded: loaded (/etc/init.d/drbd; generated; vendor preset: enabled) Active: inactive (dead) Docs: man:systemd-sysv-generator(8)
root@server2:~# /etc/init.d/drbd start [ ok ] Starting drbd (via systemctl): drbd.service.
root@server2:~# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
root@server2:~# drbdadm secondary r0
root@server2:~# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
我尝试过的一些fstab条目:
/dev/drbd0 /var/www ext3 _netdev 0 2 UUID=042cc2e395b2b32 /var/www ext3 none,noauto 0 0
不确定您是应该使用UUID还是只使用/dev/drbd0
我有以下几个问题,为什么没有开始:
update-rc.d drbd defaults不能工作?发布于 2018-12-11 06:57:12
这里有很多要打开的包,但我首先要说的是: DRBD版本已经过时了!您应该将其升级到8.4.11 (截至本文编写日期为2018年12月),或者转移到9个分支。但是你提出的问题可以用你正在使用的版本来解决。
让我们来看看你在帖子底部提出的三个同意的问题:
最理想的是没有。必须首先提升DRBD设备,然后才能使用。即使对于能够自动升级的DRBD-9块设备来说,fstab也不是最好的选择,因为在大多数情况下,它会绊倒所有事情的引导过程。但从技术上讲,它可以有很多警告。
别那样做。Debian使用systemd,而DRBD有一个systemd单元文件。除非您使用群集管理器,否则您应该使用它,这是我强烈推荐的。因此,在缺少Pacemaker集群资源管理器的情况下,您应该发出诸如# systemctl enable drbd这样的命令,使其在引导时启动。或者# systemctl start drbd在服务停止后启动它。最常见的命令是启动、停止、重新启动、启用和禁用。
因为DRBD没有领袖选举的概念。外部系统必须将DRBD资源提升到Primary,而且一次只能有一个主系统。有很多方法可以做到这一点。
您可以使用# drbdadm primary <resource>“手动”提升资源,然后从那里挂载东西--但这正是您想要避免的。DRBD可以在版本9中“自动升级”,它将在试图打开资源块设备进行访问时(比如文件系统挂载或卷组激活)自动提升资源--但是您正在运行的版本不能这样做(升级?这可能对你来说就足够了)。或者您可以使用有限的州领导人选举系统来控制促销活动,并确保DRBD和它所支持的应用程序堆栈的状态。那是心脏起搏器。
你想要心脏起搏器我保证。起搏器并不太难,但它非常大。为了达到你想要的目的,你不需要学到太多。你可以花费大量的时间和精力来构建一个“完美”的星团来抵御太阳下的任何失败,而这些努力将会得到回报。这是个好系统。
一种可持续发展/心脏起搏器,DRBD-9.x或DRBD-8.4.x的最新组合,无论你在上面拥有什么,都应该自动完成你想要的东西。有很多文档详细介绍了如何做到这一点。这里有一个最新的:
如果你有时间的话,我会建议你阅读整本指南。在过去的几年里,DRBD经历了一些严重的演变。
发布于 2020-11-04 15:45:14
扩展@Spooler的回答:请参阅drbd8 8手册第5.8.3章中的“变成主-on”指令。虽然这一章是关于双主模式的,但对于主动-被动的设置来说,成为-主-开启也是有效的.
https://serverfault.com/questions/943617
复制相似问题