DRBD实现文件存储高可用
DRDB是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。由内核模块和相关应用层工具程序组成,主要被用于Linux平台下的高可用(HA)方案之中,实现不同机器上数据的同步,保持数据的一致性。当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。在高可用(HA)解决方案中使用DRBD,可以代替使用一个共享盘阵列存储设备。因为数据同时存在于本地主机和远程主机上,在遇到需要切换的时候,远程主机只需要使用它上面的那份备份数据,就可以继续提供服务了。
Drbd的配置(主从模式)
实验环境:
2个节点:
192.168.10.132 fjw132
192.168.10.135 fjw135
1、修改两台节点的hosts文件,使其可以互相访问
[root@fjw132 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.10.132 fjw132 192.168.10.135 fjw135
2、使用ssh让两台机可以互相连接
root@fjw132 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 03:9a:6b:18:10:22:06:fb:1e:81:e4:d0:ce:da:11:05 root@fjw132 The key‘s randomart image is: +--[ RSA 2048]----+ |B+Eo. | |B+o | |++.. . | | o+. o . | | o+.o S | |...+ . . | | o o | | . | | | +-----------------+ [root@fjw132 ~]# ssh-copy-id 192.168.10.135
3、设置时钟同步:
[root@fjw132 ~]# crontab -l */5 * * * * ntpdate cn.pool.ntp.org
4、安装drbd
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum install -y kmod-drbd84 drbd84-utils
5、修改drbd配置文件
vim /etc/drbd.d/global_common.conf global { usage-count no; #是否参加DRBD使用统计,默认为yes。 } common { protocol C; #使用DRBD的同步协议 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"; } disk { on-io-error detach; #配置I/O错误处理策略为分离 } syncer { rate 1024M; #设置主备节点同步时的网络速率 } }
6、创建配置文件
[root@fjw132 ~]# cat /etc/drbd.d/mysql.res resource mysql { #资源名称 protocol C; #使用协议 meta-disk internal; device /dev/drbd1; #DRBD设备名称 syncer { verify-alg sha1; # 加密算法 } net { allow-two-primaries; } on fjw132 { disk /dev/sdb1; address 192.168.10.132:7789; #设置DRBD监听地址与端口 } on fjw135 { disk /dev/sdb1; address 192.168.10.135:7789; } }
7、装一个硬盘并分好区为/dev/sdb1
fdisk -l #查看新磁盘 fdisk /dev/sdb 添加分区
以上步骤两台节点都做相同操作
8、在fjw132上启动
[root@fjw135 ~]# drbdadm create-md mysql initializing activity log initializing bitmap (160 KB) to all zero Writing meta data... New drbd meta data block successfully created. [root@fjw135 ~]# modprobe drbd [root@fjw135 ~]# drbdadm up mysql [root@fjw135 ~]# drbdadm -- --force primary mysql
9、在对端节点192.168.10.135执行
drbdadm create-md mysql modprobe drbd drbdadm up mysql
10、在fjw132上格式化和挂载到创建的/data目录上
[root@fjw132 ~]# mkfs.ext4 /dev/drbd1 [root@fjw132 ~]# mount /dev/drbd1 /data [root@fjw132 ~]# drbd-overview NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop. 1:mysql/0 Connected Primary/Secondary UpToDate/UpToDate [root@fjw135 ~]# drbd-overview NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop. 1:mysql/0 Connected Secondary/Secondary UpToDate/UpToDate
11、测试,在/data目录上创建一个文件1.txt
[root@fjw132 ~]# echo "123" > /data/1.txt
12、先把主结点降为从结点(先卸载才能变为从)
[root@fjw132 ~]# umount /data [root@fjw132 ~]# drbdadm secondary mysql [root@fjw132 ~]# drbd-overview NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop. 1:mysql/0 Connected Secondary/Secondary UpToDate/UpToDate
13、到fjw135上升级
[root@fjw135 ~]# drbdadm primary mysql [root@fjw135 ~]# drbd-overview NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop. 1:mysql/0 Connected Primary/Secondary UpToDate/UpToDate
14、挂载并查看
[root@fjw135 ~]# mount /dev/drbd1 /data [root@fjw135 ~]# ls /data 1.txt lost+found [root@fjw135 ~]# cat /data/1.txt 123
完!
本文出自 “认真的运维有点帅” 博客,请务必保留此出处http://fjwww.blog.51cto.com/13408626/1975398
原文地址:http://fjwww.blog.51cto.com/13408626/1975398