一、DRBD简介
分布式复制块设备(DRBD 技术)是一种基于软件的,无共享,复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像 DRBD 镜像数据的特点: 实时性:当应用对磁盘的数据进行修改时,复制立即发生。 透明性:应用程序的数据存储在镜像设备上是独立和透明的,数据可存储在不同的服务器 上。 同步镜像和异步镜像:同步镜像,当本地发申请进行写操作进行时,同步写到两台服务器 上。异步镜像,当本地写申请已经完成对本地的写操作时,开始对对应的服务器进行写操作 二、要求及拓扑 本实验部署drbd+heartbeat+nfs环境,建立一个高可用(HA)的文件系统服务器集群,通过DRBD保证了服务器数据的完整性和一致性。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主服务器和备份服务器上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续提供主服务器上相同的服务,并且client用户对主服务器的故障无感知。
三、实验环境 系统:VMware redhat-5.4 master node1.abc.com 192.168.2.1 eth1 192.168.3.1 slave node2.abc.com 192.168.2.2 eth1 192.168.3.2 虚拟ip:192.168.2.100 两台服务器新加一块硬盘/dev/sdb,创建/dev/sdb1分区互为镜像
注意创建分区时,大小要一致,若不一致,以小的为准 //时间相同,读取主板时间作为当前时间 # hwclock -s //两个服务器的hosts文件修改,可以正常解析ip与主机名 # echo "192.168.2.1 node1.abc.com" >> /etc/hosts # echo "192.168.2.2 node1.abc.com" >> /etc/hosts 四、DRBD配置 在node1和node2做以下操作:(在node1在操作,然后可通过scp命令实现相关文件拷贝到node2上) 1、安装drbd #rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm # rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm # modprobe drbd //加载drbd模块 # lsmod |grep drbd //查看模块加载情况 2、主要目录及命令 /etc/drbd.conf 配置文件 /etc/rc.d/init.d/drbd 配置脚本 /etc/drbd.d/ 主目录 /sbin/drbdadm 高级别管理工具 /sbin/drbdmeta 低级别管理工具 /sbin/drbdsetup 低级别管理工具 /usr/sbin/drbd-overview 查看工具 注: rpm -ql drbd83 查看 3、修改配置文件 #vim /etc/drbd.conf # You can find an example in /usr/share/doc/drbd.../drbd.conf.example include "drbd.d/global_common.conf"; include "drbd.d/*.res"; ~ ~ :r /usr/share/doc/drbd83-8.3.8/drbd.conf //末行模式下执行读命令来加载 #cp /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.bak # vim /etc/drbd.d/global_common.conf (替换掉原来的内容) global { usage-count yes; # minor-count dialog-refresh disable-ip-verification } common { protocol C;
startup { //启动延时配置 wfc-timeout 120; degr-wfc-timeout 120; } disk { on-io-error detach; fencing resource-only; } net { cram-hmac-alg "sha1"; shared-secret "mydrbdlab"; } syncer { rate 100M; } } # vim /etc/drbd.d/web.res //定义资源 resource web { //资源名称 on node1.abc.com { device /dev/drbd0; disk /dev/sdb1; address 192.168.2.1:7789; meta-disk internal; } on node2.abc.com { device /dev/drbd0; disk /dev/sdb1; address 192.168.2.2:7789; meta-disk internal; } } 4、初始化,启动服务 #drbdadm create-md web # service drbd start &&chkconfig drbd on //并设为开机启动 5、指定主节点 #drbdadm -- --overwrite-data-of-peer primary web (在自定义主节点上执行) 不加 “-- --overwrite-data-of-peer” 错误: 0: State change failed: (-2) Need access to UpToDate data Command 'drbdsetup 0 primary' terminated with exit code 17 日志信息:block drbd0: State change failed: Need access to UpToDate data 6、创建目录,实现挂载(在主节点上执行) #mkdir /data #mkfs -t ext3 /dev/drbd0 //格式化 #mount /dev/drbd0 /data 7、查看drbd状态 #drbd-overview (#service drbd status) 主节点node1
备份节点nod2
五、nfs配置 两台服务器配置相同,可通过scp拷贝
1、修改nfs的共享菜单 # echo "/data 192.168.2.0/24(rw,sync,no_root_squash)" > /etc/exports 2、启动服务 # service nfs start && chkconfig nfs on
3、修改nfs启动脚本。 /etc/init.d/nfs中的stop部分killproc 脚本nfsd -2 修改为 -9 116 stop) 117 # Stop daemons. 118 echo -n $"Shutting down NFS mountd: " 119 killproc rpc.mountd 120 echo 121 echo -n $"Shutting down NFS daemon: " 122 killproc nfsd -9
六、heartbeat配置 在node1和node2做如下操作 1、安装 heartbeat-2.1.4-11.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-11.el5.i386.rpm 依赖包: libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm 注:下载地址http://vault.centos.org/5.4/extras 2、拷贝配置文档 # cd /usr/share/doc/heartbeat-2.1.4/ # cp authkeys ha.cf haresources /etc/ha.d/ 3、修改配置文档 1)、ha.cf配置(做如下添加) bcast eth1 node node1.abc.com node node2.abc.com 2)、haresources资源文件 #echo “node1.abc.com 192.168.2.100/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/d ata::ext3 killnfsd” >> /etc/ha.d/haresoures 3)、验证authkeys #vim authkeys auth 3 3 md5 hello #chmod 600 authkeys 设置权限值为600 4)、killnfsd服务控制脚本配置 #echo “killall -9 nfsd; /etc/init.d/nfs restart; exit 0” >>/etc/ha.d/resource.d/killnfsd #chmod 755 /etc/ha.d/resource.d/killnfsd //添加可执行权限 4、开启Heartbeat服务 #service heartbeat start && chkconfig heartbeat on 七、测试 1、创建挂载 #mkdir /mnt/data #mount 192.168.2.100:/data /mnt/data 2、编写shell,间隔1s创建一次空文件xxx # vim /mnt/data/test.sh while true do echo ----\> trying touch xxx:$(date) touch xxx echo \<---- done touch xxx: $(date) echo sleep 1 done 3、将主节点node1的heartbeat服务停止,则备份节点node2接管服务 #service heartbeat stop //node1接点
注:以上实现的drbd的单主模式, 任何资源在任何特定的时间,集群中只存在一个主节点。 正是因为这样在集群中只能有一个节点可以随时操作数据,这种模式可用在任何的文件系统上(EXT3、EXT4、XFS等等)。
本文出自 “刘园的博客” 博客,请务必保留此出处http://liuyuan51.blog.51cto.com/5971950/1123418 (责任编辑:IT) |