生产环境下的高可用NFS文件服务器.doc_第1页
生产环境下的高可用NFS文件服务器.doc_第2页
生产环境下的高可用NFS文件服务器.doc_第3页
生产环境下的高可用NFS文件服务器.doc_第4页
生产环境下的高可用NFS文件服务器.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、DRBD简介 分布式复制块设备(DRBD,Distributed Replicated Block Device)是一种基于Linux的软件组件, 它是由内核模块和相关程序而组成的,通过网络镜像促进共享存储系统的替换。也就是说: 当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系 统的创建也是由DRBD的同步来实现的)。本地节点(主机)与远程节点(主机)的数据可以保证 实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。在高可用(HA)解决方案中使用DRBD的功能,可以代替使用一个共享盘阵存储设备。因为数据同时存在于本地主机和远程主机上,在遇到需要切换的时候,远程主机只需要使用它上面的那份备份数据,就可以继续提供服务分布式复制块设备(DRBD)是在90年代末由Philipp Reisner和Lars Ellenberg设想和开发的。开发者是为了创建一个Linux安全标准,以最低成本提供最佳的安全保障。分布式复制块设备的当前版本可以与Linux 的普通版本一起使用,用于在被动系统和主动系统之间进行存储数据的同步复制。数据可以在两个系统同时读取和输入。分布式复制块设备还支持资源级别防护。分 布式复制块设备(DRBD)工程与一组称为Heartbeat的管理程序一起使用。它已经被收集到Linux的一些发行版中,目前流行的Linux中只有 Centos有预编译好的安装包和对应内核。分布式复制块设备(DRBD)是LINBIT信息技术有限责任公司的一个注册商标,总部设在奥地利维也纳。该软件已通过通用公共许可证(GNU GPL)发布,它可以在许可协议允许的范围内自由分发和修改。 二、DRBD的工作原理理解DRBD其实就是网络RAID-1,二台服务器中就算其中的某台因电源或主板损坏而宕机而对数据无任何影响(可以用硬盘RAID-1来理解 DRBD),而真正的热切换可以通过Heartbeat来实现,这样切换过程跟Keepalived类似,是非常短及不需要人为干预的。 三、DRBD的使用DRBD需要构建在底层设备之上,然后构建出一个块设备出来。对于用户来说,一个DRBD设备,就像是一块物理的磁盘,可以在商脉内创建文件系统。DRBD所支持的底层设备有以下这些类:(1)一个磁盘,或者是磁盘的某一个分区(2)一个soft raid 设备(3)一个LVM的逻辑卷(4)一个EVMS(Enterprise Volume Management System,企业卷管理系统)的卷(5)其他任何的块设备我们的线上环境采取的第一种,即用单独的磁盘来做的DRBD。 四、DRBD的配置过程我查阅了网上大量的教程类文间,感觉写得不算是详细;今天我登陆到服务器上,发现我的DRBD+Heartbeat已经稳定运行了161天(海量图 片文件服务器),相当的稳定和高效。如果没有线上环境的同学也不要着急,大家完全可以根据我的文章用VMware workstation6.0+Centos5.x系统实现这个实验,达到熟练掌握的目的。需要注意的地方我会重点说明,整个测试过程参考生产服务器。服务器1:,单独拿一块硬盘sdb作DRBD服务器2:,单独拿一块硬盘sdb作DRBD网络拓补很简单: eth0:91,物理bridge连接,eth1:,这个可以采用虚拟网段VM5 eth0:92,物理bridge连接,eth1:,这个可以采用虚拟网段VM5VIP: 94,这个是通过Heartbeat来实现的,原理跟Keepalived类似,它通过在某台服务器的eth0:0上绑定,如果遇到故障就转移,达到高HA的目的;这个同时也是对外提供服务的IP。Hosts的配置在二台机器上一样,不需要太复杂,只配置心跳部分即可,即: 91 92 centos2另外关于时间同步一说,蛮多哥哥说要ntpdate,其实也没什么必要;不过为了线上环境的严谨,这步就做一下吧,ntpdate ntp.api.bz。 DRBD的安装和配置DRBD官方网站:/DRBD源码下载地址: /drbdFAQ: /DRBD/FAQ目前流行的Linux中只有Centos有预编译好的安装包和对应内核.如果不想用Centos可以选择从源码安装.DRBD有两种安装模式:直接编译进内核 或 作为一个可加载的内核模块编译.以下使用的是CentOS 5.2 i386 系统安装与测试:1. 安装依赖库.yum install gcc gcc-c+ make glibc flex2. 在primary和secondary上都使用相同的安装方法:1. tarzxvfdrbd-8.0.6.tar.gz 2. cddrbd-8.0.6 3. make 4. /makeKDIR=/usr/src/linux*内核所在的位置*,如果没有更改内核可 5. /直接运行make,软件会直接到/lib/module里边去寻找系统环境, 6. /如果是新的内核需要对内核进行编译安装,否则make时候会错误中断掉. 7. makeinstall3. 安装完主要生成命令: “drbdsetup”, “drbdadmin”和配置文件: /etc/drbd.conf启动文件: /etc/init.d/drbd模块文件: drbd.ko (在编译好的安装包目录下的drbd下可以找到)1. ls/lib/modules/2.6.18-128.el5/kernel/drivers/block/ 2. cpqarray.kodrbd.konbd.kosx8.ko所有命令和配置文件都可以在源码包编译成功的目录下面找到./scripts/drbd.conf是最原始的配置文件, 当/etc/drbd.conf被破坏, 可以直接拷贝覆盖掉. 4. drbd采用的是模块控制的方式, 所以先要加载drbd.ko 模块.1. modprobedrbd 2. 查看drbd模块是否已经加载到内核中了: 3. lsmod|grepdrbd 4. drbd2263522/有的话表示加载模块成功.5. 先确认两台要镜像的机器是否正常, 之间的网络是否通畅, 需要加载的硬盘是否处于umount状态.6. 在两台主机上都创建硬件设备drbd.1. mknod/dev/drbd0b1470 2. /mknod/dev/drbd1b1471 3. /mknod/dev/drbd2b1472如需多个drbd设备则依次去创建.7. 二台机器将/dev/sdb1互为镜相(两台机器配置相同).1. yum-yinstallportmap 2. yum-yinstallnfs 3. mkdir/d/创建共享目录. 4. vim/etc/exports 5. /d/(rw,no_root_squash,no_all_squash,sync) 6. /etc/init.d/portmapstart 7. chkconfiglevel3portmapon 8. chkconfiglevel3nfsoff 9. /nfs不需要启动,也不需要设置成开机自动运行,这些都将由后面的heartbeat来完成.8. 配置drbd.DRBD运行时,会读取一个配置文件/etc/drbd.conf.这个文件里描述了DRBD设备与硬盘分区的映射关系, 和DRBD的一些配置参数1. rootcentos1#cat/etc/drbd.conf 2. #创建一个资源,名字叫r0 3. resourcer0 4. protocolC; 5. #采用C协议,表示收到远程主机的写入确认后,则认为写入完成。 6. startupwfc-timeout0;degr-wfc-timeout120; 7. diskon-io-errordetach; 8. net 9. timeout60; 10. connect-int10; 11. ping-int10; 12. max-buffers2048; 13. max-epoch-size2048; 14. 1. syncerrate30M; 2. #设置主备节点同步时的网络速率最大值 3. 4. device/dev/drbd0; 5. disk/dev/sdb; 6. address:7788; 7. meta-diskinternal; 8. 9. 10. device/dev/drbd0; 11. disk/dev/sdb; 12. address:7788; 13. meta-diskinternal; 14. 15. 16. #每个主机的说明以on开头,分别是各自的主机名,再后面的为这个主机的配置;监听端口为7788,meta-diskinternal即表示在同一个局域网内17. 9.drbd的启动, 激活前面配置的drbd资源 “r0. (两个节点都要执行)在启动DRBD之前,你需要分别在两台主机的hdb1分区上, 创建供DRBD记录信息的数据块.分别在两台主机上执行:1. rootcentos1/#drbdadmcreate-mdr0/创建r0的资源,r0是我们在drbd.conf里定义的资源名称. 2. rootcentos2/#drbdadmcreate-mdr0现在可以启动drbd了, 分别在两台主机上执行.3. rootcentos1/#/etc/init.d/drbdstart#我喜欢用servicedrbdstart 4. rootcentos2/#/etc/init.d/drbdstart设置drbd开机自动启动.5. rootcentos1/#chkconfig-adddrbd 6. rootcentos2/#chkconfig-adddrbd现在可以查看drbd当前的状态, 然后在centos1上执行:7. rootcentos1/#cat/proc/drbd 8. version:8.0.0(api:86/proto:86) 9. SVNRevision:2713buildbyrootcentos1,2008-06-2714:07:14 10. 1:cs:Connectedst:Secondary/Secondaryds:Inconsistent/InconsistentCr 11. ns:0nr:0dw:0dr:0al:0bm:0lo:0pe:0ua:0ap:0 12. resync:used:0/31hits:0misses:0starving:0dirty:0changed:0 13. act_log:used:0/257hits:0misses:0starving:0dirty:0changed:0第一行的st表示两台主机的状态,都是”备机”状态.ds是磁盘状态,都是”不一致”状态.这是由于,DRBD无法判断哪一方为主机,以哪一方的磁盘数据作为标准数据.所以,我们需要初始化一个主机, 那么需要在centos1上执行.10.初始化centos1(这步只要在主节点上操作)14. rootcentos1/#drbdsetup/dev/drbd0primary-o/定义为主节点. 15. #drbdadmprimaryr0第一次设置主节点时用 drbdadm 命令会失败, 所以先用drbdsetup 来做, 以后就可以用drbdadm了.再次查看drbd当前的状态.16. rootcentos1#cat/proc/drbd 17. version:8.0.0(api:86/proto:86) 18. SVNRevision:2713buildbyrootcentos1,2008-06-2714:07:14 19. 1:cs:SyncSourcest:Primary/Secondaryds:UpToDate/InconsistentCr 20. ns:18528nr:0dw:0dr:18528al:0bm:1lo:0pe:0ua:0ap:0 21. .synced:0.3%(8170/8189)M 22. finish:6:46:43speed:336(324)K/sec 23. resync:used:0/31hits:1156misses:2starving:0dirty:0changed:2 24. act_log:used:0/257hits:0misses:0starving:0dirty:0changed:0现在主备机状态分别是主/备, 主机磁盘状态是实时, 备机状态是不一致.在第3行, 可以看到数据正在同步中, 即主机正在将磁盘上的数据, 传递到备机上.现在的进度是0.3%.设置完之后的第一次同步耗时比较长, 因为需要把整个分区的数据全部同步一遍.第一次同步完成之后, 就可以对drbd的设备创建文件系统了:稍等一段时间, 在数据同步完后, 再查看一下两台机器的DRBD状态:25. rootcentos1#cat/proc/drbd 26. SVNRevision:3048,2010-01-2006:09:12 27. 0:cs:Connectedst:Primary/Secondaryds:UpToDate/UpToDateCr28. rootcentos2#servicedrbdstatus 29. SVNRevision:3048,2010-01-2006:09:02 30. 0:cs:Connectedst:Secondary/Primaryds:UpToDate/UpToDateCr现在磁盘状态都是实时, 表示数据同步完成了.#查看drbd的实时状态,我喜欢用service drbd status11.drbd的使用.现在可以把主机上的DRBD设备挂载到一个目录上进行使用.备机的DRBD设备无法被挂载, 因为它是用来接收主机数据的, 由DRBD负责操作.在centos1主服务器上执行:31. rootcentos1/#mkfs.ext3/dev/drbd0 32. rootcentos1mnt#mount/dev/drbd0/d/只要在主节点上操作现在, 就可以对 /d 分区进行读写操作了.注意: secondary节点上不允许对drbd设备进行任何操作, 包括只读.所有的读写操作只能在primary节点上进行.只有当primary节点挂掉之后, secondary节点才能提升成为primary节点, 继续进行读写操作. 18. 五、Heartbeat的配置过程真实的服务器之间的连接用交叉线连接,本着简单高效的原则,直接购买即可。1. 安装, 在两台主机都同样的安装.1. yum-yinstallheartbeat 2. #奇怪的事,此命令要执行二次,不然heartbeat还真安装不上去,奇怪的问题。 3. 其中Heartbeat配置共涉及3个文件. 4. /etc/ha.d/ha.cf 5. /etc/ha.d/haresources 6. /etc/ha.d/authkeys 7. /etc/ha.d/resource.d/killnfsd2. 二个节的配置的配置文件都是一样, 文件内容如下8. logfile/var/log/ha-log 9. #定义HA的日志名字及存放位置 10. logfacilitylocal0 11. keepalive2 12. #设定心跳(监测)时间为2秒 13. deadtime5 14. #死亡时间定义为5秒 15. ucasteth 16. #采用单播方式,IP地址指定为对方IP 17. auto_failbackoff 18. #服务器正常后由主服务器接管资源,另一台服务器放弃该资源 19. 20. #定义节点2. 编辑双机互联验证文件: authkeys21. rootcentos1ha.d#vim/etc/ha.d/authkeys 22. auth1 23. 1crc 24. /需要将/etc/ha.d/authkeys设为600的权限. 25. rootcentos1ha.d#chmod600/etc/ha.d/authkeys 26. rootcentos2ha.d#chmod600/etc/ha.d/authkeys3. 编辑集群资源文件: haresources27. rootcentos1ha.d#vim/etc/ha.d/haresources 28. IPaddr:94/24/eth0drbddisk:r0Filesystem:/dev/drbd0:/d:ext3killnfsd 29. #此文件二台机器上配置一样,千万不要自做聪明在另一台机器上配置成4.编辑脚本文件killnfsd,目的其实就是为了重启nfs服务。这是因为NFS服务切换后,必须重新mount一下nfs共享出来的目录,否则会出现stale NFS file handle的错误。30. #rootcentos1ha.d#vim/etc/ha.d/resource.d/killnfsd 31. #killall-9nfsd;/etc/init.d/nfsrestart;exit0 32. #rootcentos1ha.d#chmod755/etc/ha.d/resource.d/killnfsd5. 在二个节点启动Heartbeat即可,先在主节点启动33. rootcentos1/#serviceheartbeatstart 34. rootcentos2/#serviceheartbeatstart 35. #这时就可以在另外的机器上面,正常挂载94:/d到自己的/mnt/data下进行正常的读写了,client会认为这个就是一个提供NFS的机器。36. 六、测试由于我的线上环境已经很稳定了,这个测试结果是让大家进行的,让大家熟悉DRBD+Heartbeat;我建议做完此步后再做测试,看Heartbeat是否能做到真正的热切换。测试一、在另一台FreeBSD8下挂载94:/d,向里面写数据时,忽然重新启动主DRBD,看此时写数据有影响不,发现DRBD+Heartbeat正常切换还是需要些时间的;测试二、正常状态下关机Primary机,然后看数据有无问题,观察DRBD的status;然后等主机启动后,再观察变化,然后再关机secondary,然后再启动,观察DRBD变化及Heartbeat起作用了没。测试三、假设此时把primary的et

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论