- 前言
- 为什么要写这本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第一部分 安全运维篇
- 第 1 章 Linux 服务器安全运维
- 第 2 章 Linux 网络安全运维
- 第 3 章 数据安全工具 DRBD、extundelete
- 第二部分 运维故障排查篇
- 第 4 章 Linux 系统运维故障排查思路
- 第 5 章 Linux 故障排查案例实战
- 第三部分 自动化运维篇
- 第 6 章 轻量级运维利器 pssh、pdsh 和 mussh
- 第 7 章 分布式监控系统 Ganglia
- 第 8 章 基于 nagios 的分布式监控报警平台 Centreon
- 第 9 章 通过 Ganglia 与 Centreon 构建智能化监控报警平台
- 第四部分 集群架构篇
- 第 10 章 高性能 Web 服务器 Nginx
- 第 11 章 高性能集群软件 Keepalived
- 第 12 章 千万级高并发负载均衡软件 HAProxy
- 第 13 章 构建高性能的 MySQL 集群系统
- 第 14 章 高性能负载均衡集群软件 HAProxy
3.3 DRBD 的管理与维护
3.3.1 启动 DRDB
1.在两个节点执行
在启动 DRBD 之前,需要分别在两台主机的 hdb1 分区上创建供 DRBD 记录信息的数据块。具体是分别在两台主机上执行:
[root@master-drbd ~]# drbdadm create-md r0 或者执行 drbdadm create-md all [root@master-drbd ~]# drbdadm create-md r0
2.在两个节点启动服务
接着在两个 drbd 节点启动 DRBD 服务,操作如下:
[root@master-drbd ~]# /etc/init.d/drbd start [root@slave-drbd ~]# /etc/init.d/drbd start
最好是在两个节点同时启动 DRBD 服务。
3.在任意节点查看节点状态
登录任意 drbd 节点,然后执行“cat/proc/drbd”命令,输出结果如下:
[root@master-drbd ~]# cat /proc/drbd 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent 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:b oos:2007644
对输出的含义解释如下:
- ro 表示角色信息,第一次启动 drbd 时,两个 drbd 节点默认都处于 Secondary 状态。
- ds 表示磁盘状态信息,“Inconsistent/Inconsistent”即“不一致/不一致”状态,表示两个节点的磁盘数据处于不一致状态。
- ns 表示网络发送的数据包信息。
- dw 表示磁盘写信息。
- dr 表示磁盘读信息。
4.设置主用节点
由于默认没有主用节点和备用节点之分,因此需要设置两个主机的主次节点。选择需要设置为主用节点的主机,然后执行如下命令:
[root@master-drbd ~]# drbdsetup /dev/drbd0 primary -o
也可以执行下面命令:
[root@master-drbd ~]# drbdadm -- --overwrite-data-of-peer primary all
第一次执行完此命令后,如果需要设置哪个是主用节点,就可以使用另外一个命令:
[root@master-drbd ~]# /sbin/drbdadm primary r0 或者/sbin/drbdadm primary all
执行此命令后,开始同步两台机器对应磁盘的数据:
[root@master-drbd ~]# cat /proc/drbd version: 8.3.13 (api:88/proto:86-96) 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----- ns:338640 nr:0 dw:0 dr:346752 al:0 bm:20 lo:1 pe:7 ua:64 ap:0 ep:1wo:b oos:10144232 [>....................] sync'ed: 3.3% (9904/10236)M finish: 0:46:26 speed: 3,632 (3,184) K/sec
从输出可知:
“ro”状态现在变为“Primary/Secondary”,“ds”状态也变为“UpToDate/Inconsistent”,也就是“实时/不一致”状态。现在数据正在主备两台主机的磁盘间进行同步,且同步进度为 3.3%,同步速度 3.1Mbit/s 左右。
等待片刻,再次查看同步状态,输出如下:
[root@master-drbd ~]# cat /proc/drbd version: 8.3.13 (api:88/proto:86-96) 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:10482024 nr:0 dw:0 dr:10482024 al:0 bm:640 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
可以看到同步完成了,并且“ds”状态也变为“UpToDate/UpToDate”,即“实时/实时”状态了。
如果第一次设置主用节点和备用节点时使用“/sbin/drbdadm primary r0”命令,那么会提示如下错误:
0: State change failed: (-2) Need access to UpToDate data Command '/sbin/drbdsetup 0 primary' terminated with exit code 17
只要第一次执行上面命令成功,以后就可以用“/sbin/drbdadm primary r0”命令设置主用节点了。
5.挂载 DRBD 设备
由于 mount 操作只能在主用节点上进行,因此只有设置了主用节点后才能格式化磁盘分区,同时,在两个节点中,同一时刻只能有一台处于 primary 状态,另一台处于 secondary 状态,而处于 secondary 状态的节点上不能挂载 DRBD 设备,要在备用节点上挂载 DRBD 设备,必须停止备用节点的 DRBD 服务或将备用节点角色升级为主用节点。
下面首先将 DRBD 设备格式化为 ext3 文件系统,然后在主用节点挂载,操作如下:
[root@master-drbd ~]# mkfs.ext3 /dev/drbd0 [root@master-drbd ~]# mount /dev/drbd0 /mnt
完成挂载后,就可以在/mnt 目录下写数据了,此目录下的数据会自动同步到备用节点上。
3.3.2 测试 DRBD 数据镜像
为了验证 DRBD 的数据镜像功能,我们做一个简单的测试,首先在 DRBD 主用节点上的/mnt 目录下创建一个 200MB 的文件,操作如下:
[root@master-drbd ~]# dd if=/dev/zero of=/mnt/testdrbd.tmp bs=10M count=20 [root@master-drbd ~]# ls –al /mnt/testdrbd.tmp -rw-r--r-- 1 root root 209715200 Mar 17 14:03 testdrbd.tmp
完成操作后,接着在备机上查看文件是否已经同步过去,为了保证数据的一致性,需要首先停止备用节点的 DRBD 服务,操作如下:
[root@slave-drbd /]# /etc/init.d/drbd stop Stopping all DRBD resources: . [root@slave-drbd /]# mount /dev/sdb1 /mnt [root@slave-drbd /]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 75226176 15156412 56186756 22% / /dev/sda1 101086 19526 76341 21% /boot tmpfs 2025204 0 2025204 0% /dev/shm /dev/sdb1 10317472 359240 9434132 4% /mnt [root@slave-drbd /]# cd /mnt [root@slave-drbdmnt]# ll total 205020 drwx------ 2 root root 16384 Mar 17 13:58 lost+found -rw-r--r-- 1 root root 209715200 Mar 17 14:03 testdrbd.tmp
可以看到,在主用节点 master-drbd 上产生的文件 testdrbd.tmp 也完整地保存到备用节点 slave-drbd 的镜像磁盘设备上。
测试完毕后,要重新启动备用节点的 DRBD 服务,此时必须先卸载/dev/sdb1 设备,然后才能成功启动 DRBD 服务。
注意 这里挂载的是/dev/sdb1 设备,而不是 DRBD 设备,因为 DRBD 设备只有在 DRBD 服务启动的时候才加载到系统中。
3.3.3 DRBD 主备节点切换
在系统维护的时候,或者在高可用集群中,当主用节点出现故障时,就需要将主备节点的角色互换。主备节点切换有两种方式,分别是停止 DRBD 服务切换和正常切换,下面依次介绍。
1.停止 DRBD 服务切换
关闭主用节点服务,此时挂载的 DRBD 分区就自动在主用节点卸载了,操作如下:
[root@master-drbd /]# /etc/init.d/drbd stop Stopping all DRBD resources:
然后查看备用节点的 DRBD 状态:
[root@slave-drbd /]# cat /proc/drbd version: 8.3.13 (api:88/proto:86-96) 0: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r----- ns:0 nr:16 dw:16 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
从输出可以看到,现在主用节点的状态变为“Unknown”,接着在备用节点执行切换命令:
[root@slave-drbd ~]# drbdadm primary all
此时会出现如下报错信息:
2: State change failed: (-7) Refusing to be Primary while peer is not outdated Command 'drbdsetup 2 primary' terminated with exit code 11
因此,必须在备用节点执行如下命令:
[root@slave-drbd ~]# drbdsetup /dev/drbd0 primary -o
或者
[root@slave-drbd ~]# drbdadm -- --overwrite-data-of-peer primary all
现在就可以正常切换了。接着查看此节点的状态,信息如下:
[root@slave-drbd /]# cat /proc/drbd version: 8.3.13 (api:88/proto:86-96) 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/Outdated C r----- ns:0 nr:16 dw:16 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
可以看出,原来的备用节点已经处于“Primary”状态了,而原来的主用节点由于 DRBD 服务未启动,还处于“Unknown”状态,在原来的主用节点服务启动后,会自动变为“Secondary”状态,无需在原来主用节点上再次执行切换到备用节点的命令。
最后,在新的主用节点上挂载 DRBD 设备即可完成主备节点的切换:
[root@slave-drbd /]# mount /dev/drbd0 /mnt
2.正常切换
首先在主用节点卸载磁盘分区:
[root@ master-drbd /]# umount /mnt
然后执行:
[root@master-drbd ~]# drbdadm secondary all
如果不执行这个命令,直接在备用节点执行切换到主用节点的命令,会报如下错误:
2: State change failed: (-1) Multiple primaries not allowed by confi Command 'drbdsetup 2 primary' terminated with exit code 11
此时查看 master-drbd 节点的 DRBD 状态,信息如下:
[root@master-drbd ~]# cat /proc/drbd version: 8.3.13 (api:88/proto:86-96) 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----- ns:36 nr:16 dw:52 dr:97 al:2 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
可以看到,两个节点都处于“Secondary”状态了,那么接下来就要指定一个主用节点,在备用节点执行如下命令:
[root@slave-drbd ~]# drbdadm primary all [root@slave-drbd ~]# cat /proc/drbd version: 8.3.13 (api:88/proto:86-96) 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:0 nr:36 dw:36 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
至此,主备节点成功切换角色。最后在新的主用节点挂载 DRBD 磁盘分区即可:
[root@slave-drbd ~]# mount /dev/drbd0 /mnt
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论