DRBD(Distributed Replicated Block Device)分布式复制块设备是基于软件的无共享复制存储解决方案,可镜像主机之间的块设备(硬盘,分区,逻辑卷等)的内容
DRBD镜像数据的特点1)实时:当应用程序修改设备上的数据时,复制将连续进行。2)透明:应用程序不需要知道数据存储在多个主机上。3)同步或异步: 使用同步镜像,在所有主机上执行写操作后,将通知应用程序写完成。 使用异步镜像,当本地完成写入时(通常在它们传播到其他主机之前),会通知应用程序写入完成。
结合上面的拓扑图,简单实践一下DRBDNode1:192.168.31.6Node2:192.168.31.7
已配置好了双机互信,可以参考之前的高可用集群Heartbeat配置实践中的配置
1、yum安装DRBD的相关安装包kmod-drbd84、drbd84-utils1)先安装ELRepo yum源yum install https://www.elrepo.org/elrepo-release-6-9.el6.elrepo.noarch.rpmELRepo是CentOS十分有用的稳定的软件源,与其他软件源不一样的是,这个第三方源主要是提供硬件驱动、内核更新方面的支持,如显卡、无线网卡、内核等等
2)yum install kmod-drbd84会自动安装drbd84-utils Installing : drbd84-utils-9.5.0-1.el6.elrepo.x86_64 Installing : kmod-drbd84-8.4.11-1.el6_10.elrepo.x86_64 且会自动更新内核版本
2、在node1和node2分别添加一块磁盘分区,且不要格式化如下图所示/dev/sda6 大小为10G3、配置drbd的配置文件cat /etc/drbd.conf可以看出drbd的配置文件分为两个
1)全局配置文件global_common.conf2)资源配置文件*.res(自行创建)首先cd /etc/drbd.d,备份一下全局配置文件cp global_common.conf global_common.conf_default_bakvi global_common.conf
global { usage-count yes;}common { handlers { pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f"; } startup { } options { } disk { on-io-error detach; } net { cram-hmac-alg "sha1"; shared-secret "www.walkingcloud.cn"; } syncer { rate 1000M; }}再配置res资源配置文件 vi disk_sda6_sync.res
resource disk_sda6_sync { on node1.walkingcloud.cn{ device /dev/drbd0; disk /dev/sda6; address 192.168.31.6:7789; meta-disk internal; } on node2.walkingcloud.cn { device /dev/drbd0; disk /dev/sda6; address 192.168.31.7:7789; meta-disk internal; }}4、配置文件同步到node2上
scp global_common.conf disk_sda6_sync.res node2:/etc/drbd.d/
5、加载drbd到内核lsmod | grep drbdmodprobe drbd ssh node2 "lsmod | grep drbd"
6、在两个节点上初始化已定义的资源并启动drbd服务
1)初始化资源,在Node1和Node2上分别执行:drbdadm create-md disk_sda6_sync2)启动服务,在Node1和Node2上分别执行:service drbd start
3)查看启动状态cat /proc/drbd或者drbd-overview 4)从上面的信息中可以看出此时两个节点均处于Secondary状态。于是接下来需要将其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令drbdadm -- --force primary disk_sda6_sync可以使用iftop查看同步时的网络流量iftop -i eth0 -N -n -m 1000M -P等待同步进度完成
7、在node1主节点上格式化,并挂载,测试文件写入
文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化
8、测试高可用性
1)先在主节点上卸载并切换为Secondaryumount /dev/drbd0drbdadm secondary disk_sda6_syncdrbd-overview2)在node2上将资源设置为主,直接挂载 drbdadm primary disk_sda6_sync mount /dev/drbd0 /home
可以正常读取,当然这是手动切换primary和secondary来实现,在实际生产环境可以drbd+corosync等方式实现自动化故障迁移,后期再进行实践测试