目录

drbd常见状态以及维护

drbd1 为主服务器 drbd2 为备服务器

正常情况下

a) 主服务器drbd1显示:

/images/posts/20150720105943185.png

b) 备服务器drbd2显示:

/images/posts/20150720110122605.png

主服务器drbd1的网络出现故障,备服务器处于正常状态

a) 当前状态

主服务器drbd1此时显示为:

/images/posts/20150720110138387.png

主服务器处于StandAlone状态,表示网络配置不可用,资源还没有被连接或者是被管理断开。

备服务器drbd2此时显示为:

/images/posts/20150720110146384.png

当drbd2探测到对等节点宕机(无论是真正的硬件故障还是人工干预),drbd2都将其连接状态有Connected变为WFConnection,直到对等节点恢复。Drbd资源会在此时运行disconnected模式下。在disconnected模式下,资源以及和棋相关的块设备都是可用的,并可以在必要时进行升降级,但是并不能将修改复制到对等节点。

b) 处理方法

将备服务器drbd2提升为主服务器,提供服务,操作如下:

/images/posts/20150720110220230.png

新数据将写入drbd2服务器中保存。

c) drbd1节点恢复正常后

drbd1当前状态为StandAlone,此时,drbd1是不会和drbd2互相联系的。

将drbd1节点降级为备服务器,然后连接当前主服务器drbd2,操作如下:

/images/posts/20150720110227873.png

备服务器drbd2的网络出现故障,主服务器处于正常状态

a) 当前状态

主服务器drbd1此时显示为:

/images/posts/20150720110308696.png

备服务器drbd2此时显示为:

/images/posts/20150720110317676.png

b) 处理方法

不做处理,还是由主服务器提供服务,数据还是写入主服务器drbd1中,但数据未被同步到drbd2中。

c) drbd2节点恢复后

在drbd2服务器上操作如下,能清楚看到drbd2节点与drbd1主服务器连接上了,会进行同步,将主服务器上drbd1的数据同步过来,最后达到一致状态。

/images/posts/20150720110343758.png

drbd1主服务器状态变化如下:

/images/posts/20150720110355365.png

主服务器drbd1和备服务器drbd2都出现故障

a) 当前状态

主服务器drbd1此时显示为:

/images/posts/20150720110517331.png

备服务器drbd2此时显示为:

/images/posts/20150720110525042.png

表示主备节点都处于单机状态,互相失去联系。

b) 处理方法

当所有节点都处于宕机状态时,不能继续提供服务,只能手动恢复一个或者多个节点。

c) 当只有一个节点(主服务器drbd1或者备服务器drbd2)可恢复故障

此时处于单机状态,不用其他操作,单机提供服务即可,可往磁盘读取数据,等待另一个节点的恢复后再进行后续操作。

d) 当主服务器drbd1节点先恢复故障,备服务器drbd2后恢复故障。

主节点恢复后,提供服务,数据存于drbd1节点的磁盘中,而后drbd2节点也恢复后,互相不能联系,此时处于脑裂状态,两节点都处于standalone状态,如下所示:

/images/posts/15586799263277.png

/images/posts/15586799637680.png

恢复步骤为:

第一步,在drbd2备服务器上操作:

/images/posts/15586800014711.png

/images/posts/15586800299222.png

第二步,在drbd1主服务器上操作后,连接上drbd2:

/images/posts/15586800663590.png

第三步,在drbd2备服务器上状态变化为:

/images/posts/15586800964780.png

此时,主备节点都相互联系上,drbd1主服务器上的数据会同步到drbd2备服务器上。

e) 当备服务器drbd2节点先恢复故障,主服务器drbd1后恢复故障。

备服务器先恢复,则将备服务器drbd2升级为主服务器,提供服务,待原来的主节点drbd1恢复后则降为备服务器节点,drbd2上的数据将会同步到drbd1上。

/images/posts/1558680131136.png

备节点恢复后,如果之前主节点有挂载磁盘,则先卸载掉,在drbd1节点上操作如下:

/images/posts/15586801999780.png

/images/posts/15586801759034.png

/images/posts/15586802484963.png

在drbd2节点(当前主服务器)操作如下:

/images/posts/15586802779106.png

此时,drbd1节点成为备服务器,联系上主节点drbd2,主节点drbd2的数据将同步到drbd1上。

/images/posts/15586803042670.png

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
查看资源的连接状态
[root@node1 ~]# drbdadm cstate r1
Connected
资源的连接状态;一个资源可能有以下连接状态中的一种
StandAlone 独立的:网络配置不可用;资源还没有被连接或是被管理断开(使用 drbdadm disconnect 命令),或是由于出现认证失败或是脑裂的情况
Disconnecting 断开:断开只是临时状态,下一个状态是StandAlone独立的
Unconnected 悬空:是尝试连接前的临时状态,可能下一个状态为WFconnection和WFReportParams
Timeout 超时:与对等节点连接超时,也是临时状态,下一个状态为Unconected悬空
BrokerPipe:与对等节点连接丢失,也是临时状态,下一个状态为Unconected悬空
NetworkFailure:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
ProtocolError:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
TearDown 拆解:临时状态,对等节点关闭,下一个状态为Unconected悬空
WFConnection:等待和对等节点建立网络连接
WFReportParams:已经建立TCP连接,本节点等待从对等节点传来的第一个网络包
Connected 连接:DRBD已经建立连接,数据镜像现在可用,节点处于正常状态
StartingSyncS:完全同步,有管理员发起的刚刚开始同步,未来可能的状态为SyncSource或PausedSyncS
StartingSyncT:完全同步,有管理员发起的刚刚开始同步,下一状态为WFSyncUUID
WFBitMapS:部分同步刚刚开始,下一步可能的状态为SyncSource或PausedSyncS
WFBitMapT:部分同步刚刚开始,下一步可能的状态为WFSyncUUID
WFSyncUUID:同步即将开始,下一步可能的状态为SyncTarget或PausedSyncT
SyncSource:以本节点为同步源的同步正在进行
SyncTarget:以本节点为同步目标的同步正在进行
PausedSyncS:以本地节点是一个持续同步的源,但是目前同步已经暂停,可能是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步
PausedSyncT:以本地节点为持续同步的目标,但是目前同步已经暂停,这可以是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步
VerifyS:以本地节点为验证源的线上设备验证正在执行
VerifyT:以本地节点为验证目标的线上设备验证正在执行
查看资源角色的命令
[root@node1 ~]# drbdadm role r1
Primary/Secondary (在前面为当前节点)
Parimary 主:资源目前为主,并且可能正在被读取或写入,如果不是双主只会出现在两个节点中的其中一个节点上
Secondary 次:资源目前为次,正常接收对等节点的更新
Unknown 未知:资源角色目前未知,本地的资源不会出现这种状态
查看硬盘状态
[root@node1 ~]# drbdadm dstate r1
UpToDate/UpToDate
本地和对等节点的硬盘有可能为下列状态之一:
Diskless 无盘:本地没有块设备分配给DRBD使用,这表示没有可用的设备,或者使用drbdadm命令手工分离或是底层的I/O错误导致自动分离
Attaching:读取无数据时候的瞬间状态
Failed 失败:本地块设备报告I/O错误的下一个状态,其下一个状态为Diskless无盘
Negotiating:在已经连接的DRBD设置进行Attach读取无数据前的瞬间状态
Inconsistent:数据是不一致的,在两个节点上(初始的完全同步前)这种状态出现后立即创建一个新的资源。此外,在同步期间(同步目标)在一个节点上出现这种状态
Outdated:数据资源是一致的,但是已经过时
DUnknown:当对等节点网络连接不可用时出现这种状态
Consistent:一个没有连接的节点数据一致,当建立连接时,它决定数据是UpToDate或是Outdated
UpToDate:一致的最新的数据状态,这个状态为正常状态
查看同步进度
[root@node1 ~]# cat /proc/drbd 或者 执行/usr/local/drbd/sbin/drbd-overview
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@localhost.localdomain, 2016-04-24 20:16:24
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:2767088 nr:0 dw:0 dr:2774680 al:0 bm:168 lo:0 pe:1 ua:7 ap:0 ep:1 wo:f oos:18202972
[=>..................] sync'ed: 13.3% (17776/20476)M
finish: 0:12:59 speed: 23,344 (22,492) K/sec
由此可见:进度已经完成了13.3%,传输速度大概22M/S
注:
ds是磁盘状态信息
dw是磁盘写信息
dr是磁盘读信息
###########################测试验证###################################
格式化文件系统(文件格式根据自己的系统环境选择)
[root@node1 ~]# mkfs.ext4 /dev/drbd0
挂载此文件系统
[root@node1 ~]# mkdir /data
[root@node1 ~]# mount /dev/drbd0  /data/
在挂载data目录中创建一个测试文件,然后卸载挂载目录,然后切换主备节点,在备用节点上查看刚刚建立的测试文件还是否存在
Node1:
[root@node1 ~]# mkdir  /data/test
[root@node1 ~]# umount /data/
将node1变为备用节点
[root@node1 ~]# drbdadm secondary r1
[root@node1 ~]# drbdadm role r1
Secondary/Secondary
Node2上:
将node2变为主节点
[root@node2 ~]# drbdadm primary  r1
[root@node2 ~]# drbdadm role r1
Primary/Secondary
挂载设备,然后看文件是否存在
[root@node2 ~]# mount /dev/drbd0 /mnt/
[root@node2 ~]# cd /mnt/
[root@node2 mnt]# ls
test
OK!  到这里已经算是完成了!