设为首页 收藏本站
查看: 748|回复: 0

[经验分享] DRBD + HeartBeat + MooseFS-DevilRex119

[复制链接]

尚未签到

发表于 2019-1-6 13:58:50 | 显示全部楼层 |阅读模式
  DRBD + HeartBeat + MooseFS
  建立高可用的Moosefs文件系统
  目录
  1.概述... 2
  2.系统构架... 2
  3.DRBD.. 3
  原理... 3
  安装... 4
  配置... 4
  监控... 6
  测试... 8
  4.HeartBeat. 8
  准备工作... 8
  安装... 9
  监控与测试... 11
  5.MooseFS. 12
  安装元服务器(主从都一样)... 13
  备份服务器Backup server (metalogger) 安装... 14
  存储块服务器Chunk servers 安装... 15
  客户端Users’ computers 安装... 16
  监控界面:... 17
  测试... 17
  6.集成与测试... 18
  集成... 18
  测试... 18
1.概述
  Moose通过DNBD提供磁盘及时同步,通过HeartBeat提供Failover,来达到高可用。
2.系统构架
  搭建此环境前,应该对整体的系统构架有清楚的认识,下面是我的系统构架图

3.DRBD
  原理
  DRBD(Distributed Replicated BlockDevice)是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中. 本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了.
  DRBD的工作原理如下图:
  +----------+
  | 文件系统 |
  +----------+
  |
  V
  +-------------+
  |   块设备层  |
  | (/dev/drbd1)|
  +-------------+
  |           |
  |           |
  V           V
  +------------+  +-------------+
  |  本地硬盘  |  | 远程主机硬盘|
  | (/dev/sda1)|  | (/dev/sda1) |
  +------------+  +-------------+
  ==========================================================
  注意:你需要为本地主机和远程主机,指定一个DRBD使用的硬盘分区.这两个分区的大小建议相同.  我们指定两台主机的/dev/sda1 分区作为DRBD的使用的分区.此分区最好是新划分出来的分区,系统规划过程应预留此分区为DRBD,如果是已经安装好的系统没有分区的话,防止系统数据丢失,建议用Linux分区工具对系统进行分区。
  *注意! 在没有建立drbd资源时,切不可提前格式化硬盘!
  系统环境:Centos5.5 x86_64 [2.6.18-194.el5]
  master(主机):IP地址:10.1.27.34  镜像分区:/dev/sda1,4GB
  slave (备机):IP地址:10.1.27.35  镜像分区:/dev/sda1,4GB
  软件环境:
  Centos自带RPM包    kernel-headers     kernel-devel
  如果找不到,建议利用yum安装相关的包库 yum –y install kernel-headers kernel-devel2.
安装
  从官方网站下载源码包来编译或直接使用yum源来安装,这里以CentOS为例说明安装过程,其它系统类似。
  [root@server1 ~]# uname -a
  Linux server1 2.6.18-194.el5 #1 SMP Fri Apr2 14:58:35 EDT 2010 i686 i686 i386 GNU/Linux
  Note : 在安装过程中系统不要选择虚拟机内核去安装DRBD,否则会出现加载不了内核的错误,如我的内核是2.6.18-194.el5xen和2.6.18-194.el5,应选择后者,在电脑启动的BIOS上课选择启动的内核
  通过yum安装DRBD服务(请设置好网络和yum下载镜像):
  Note: 在编译之前,首先要确认系统中已经安装了gcc,make, glibc库,flex scanner generator和bison等工具,其中gcc的版本必须和编译当前linux内核所用的gcc是相同版本的。
  查看gcc版本的命令:gcc -v
  查看当前linux内核对应gcc版本的命令:cat/proc/version
  [root@ server1 ~]# yum -y installkmod-drbd83 drbd83
  检查DRBD是否安装成功:
  [root@ server1 ~]# lsmod | grep -i drbd
  drbd                  228528  3
  如果没有提示,则系统找不到相应的模块执行下面的命令找到drbd.ko
  [root@server1 ~]#  modprobe -l | grep -i drbd
  /lib/modules/2.6.18-194.11.1.el5/weak-updates/drbd83/drbd.ko
  安装成功之后/sbin目录下面有drbdadm,drbdmeta,drbdsetup命令,以及/etc/init.d/drbd启动脚本。
配置
  DRBD运行需要读取/etc/drbd.conf配置文件,下面是两台主机节点配置的drbd.conf文件的简单示例:
  [root@ server1 ~]#cat /etc/drbd.conf
  # 是否参加DRBD使用者统计.默认是yes
  global { usage-count yes; }
  # 设置主备节点同步时的网络速率最大值,单位是字节.
  common { syncer { rate 50M; } }
  # 一个DRBD设备(即:/dev/drbdX),叫做一个"资源".里面包含一个DRBD设备的主备节点的相关信息.
  resource r0 {
  # 使用协议C.表示收到远程主机的写入确认后,则认为写入完成.
  protocol C;
  # 设置主备机之间通信使用的信息算法.
  net{
  cram-hmac-alg sha1;
  shared-secret "secret string";
  }
  # 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.
  onserver1 {
  # /dev/drbd1使用的磁盘分区是/dev/sda1
  device    /dev/drbd1;
  disk      /dev/sda1;
  # 设置DRBD的监听端口,用于与另一台主机通信
  address   10.1.27.34:7898;
  meta-disk  internal;
  }
  onserver2 {
  device    /dev/drbd1;
  disk      /dev/sda1;
  address   10.1.27.35:7898;
  meta-disk  internal;
  }
  }
  drbd.conf的配置参数很多,有兴趣的话可以使用命令:mandrbd.conf来查看了解更多的参数说明。
  建立drbd设备
  在启动DRBD之前,你需要分别在两台主机的sda1分区上,创建供DRBD记录信息的数据块.
  注意:如果你在这步之前已经给/dev/sda1格式化的话,这里会报错,并且无法继续,抱错内容如下:
  md_offset ...........
  al_offset...........
  bm_offset...........
  Found ext3 filesystem which uses

  Device>  wouldcorrupt data and result in
  'access beyondend of device' errors.
  You need toeither
  * use externalmeta data (recommended)
  * shrink thatfilesystem first
  * zero out thedevice (destroy the filesystem)
  Operation refused.
  Command 'drbdmeta
  根据报错和官方描述的大概意思就是:有了文件系统,会被认为该设备已经被使用,不能被drbd所使用,最好的解决办法就是低格硬盘破坏该文件系统~
  官方的方法如下:破坏文件系统:
  #dd if=/dev/zero bs=1M count=1 of=/dev/sda1;sync
  # drbdadm create-md r0  // 配置文件中的resource名
  --==  Thank you for participating in the global usage survey  ==--
  The server's response is:
  you are the 1889th user to install this version
  Writing meta data...
  initializing activity log
  NOT initialized bitmap
  New drbd meta data block successfully created.
  success
监控
  启动服务
  [root@server1 ~]#/etc/init.d/drbd start
  [root@ server2~]#/etc/init.d/drbd start
  两台机器同时启动
  在任意节点查看节点状态
  [root@ server1 ~]# cat /proc/drbd
  1: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/Inconsisten”,即为“不一致/不一致”状态,表示两个节点的磁盘数据处于不一致状态。
  Ns表示网络发送的数据包信息。
  Dw是磁盘写信息
  Dr是磁盘读信息
  设置主节点
  由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
  [root@ server1 ~]#drbdsetup /dev/drbd1 primary–o
  或者执行下面命令也是可以的
  [root@ server1 ~]#drbdadm ----overwrite-data-of-peer primary all
  第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:
  [root@ server1 ~]#/sbin/drbdadm primary r0或者/sbin/drbdadmprimary all
  执行此命令后,开始同步两台机器对应磁盘的数据
  [root@ server1 ~]#cat /proc/drbd
  1: cs:SyncSource ro:Primary/Secondaryds:UpToDate/Inconsistent C r----
  ns:576224 nr:0 dw:0 dr:581760 al:0 bm:34lo:84 pe:369 ua:256 ap:0 ep:1 wo:b oos:1443196
  [====>...............] sync'ed: 28.4%(1443196/2007644)K delay_probe: 69
  finish: 0:03:56 speed: 6,024 (5,876) K/sec
  从输出可知:“ro状态现在变为“Primary/Secondary”,“ds”状态也变为“UpToDate/Inconsistent”,也就是“实时/不一致”状态,现在数据正在主备两个主机的磁盘间进行同步,且同步进度为28.4%,同步速度每秒5.8M左右。只有出现了Primary/Secondary表示主从机器已经识别到对方了,drbd启动正常。
  等待片刻,再次查看同步状态,输出如下:
  [root@ server1 ~]#cat /proc/drbd
  1: cs:Connected ro:Primary/Secondaryds:UpToDate/UpToDate C r----
  ns:2007644 nr:0 dw:0 dr:2007644 al:0 bm:123lo: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 toUpToDate data
  Command '/sbin/drbdsetup 0 primary'terminated with exit code 17
  只要第一次用上面命令成功后,以后就可以用“/sbin/drbdadm primary r0”命令了。
  格式化文件系统
  由于mount操作只能在主节点进行,所以只有设置了主节点后才能格式化磁盘分区,然后挂载:
  [root@ server1 ~]#mkfs.ext3 /dev/drbd1
  [root@ server1 ~]#mount /dev/drbd1 /mnt/mfs
  主备节点切换
  主备节点切换有两种方式,分别是停止drbd服务切换和正常切换,依次介绍:
  停止drbd服务切换
  1.关闭主节点服务切换
  此时挂载的drbd分区就自动在主节点卸载了,然后在备用节点执行切换命令:
  [root@drbd2 ~]#drbdadm primary all
  此时会报错:
  State change failed: (-7) Refusing to bePrimary while peer is not outdated
  Command 'drbdsetup 2 primary' terminatedwith exit code 11
  因此,必须在备用节点执行如下命令:
  [root@server2 ~]#drbdsetup /dev/drbd1primary –o
  或者
  [root@server2~]#drbdadm ----overwrite-data-of-peer primary all
  此时就可以正常切换了。
  当在备用节点执行切换到主节点命令后,原来的主用节点自动变为备用节点。无需在主用节点再次执行切换到备用节点的命令。
  2.正常切换
  在主节点卸载磁盘分区,然后执行
  [root@drbd1 ~]#drbdadm secondary all
  如果不执行这个命令,直接在备用节点执行切换到主节点的命令,会报错:
  2: State change failed: (-1) Multipleprimaries not allowed by config
  Command 'drbdsetup 2 primary' terminatedwith exit code 11
  接着,在备用节点执行
  [root@server2 ~]#drbdadm primary all
  最后在备用节点挂载磁盘分区即可:
  [root@ server2 ~]#mount /dev/drbd1  /mnt/mfs
  测试
  1)  切换测试
  master主节点
  [root@ server2 ~]mount /dev/drbd1  /mnt/mfs
  [root@ server2 ~]cd /mnt/mfs/
  [root@ server2 ~]vi test
  [root@ server2 ~]echo “testing…”>test
  接下来你需要将DRBD的主从机互换一下.
  可以执行下面的操作:
  在主机上,先要卸载掉DRBD设备.
  [root@ server2 ~]umount /mnt/mfs
  [root@ server2 ~]drbdadm secondary r0
  现在,两台主机都是"备机"需要把备节点升为主节点
  [root@ server2 ~]drbdadm primary r0
  [root@ server2 ~]mount /dev/drbd1 /mnt/mfs
  [root@ server2 ~]ls /mnt/mfs 查看是否有test文件
  2)  灾难测试
  master主节点
  [root@ server2 ~]mount /dev/drbd1 /mnt/mfs
  [root@ server2 ~]cd /mnt/mfs/
  [root@ server2 ~]vi test1
  [root@ server2 ~]echo “test1ing…”>test1
  slave备节点
  [root@ server2 ~]service drbd stop
  [root@ server2 ~]mount /dev/sda1 /mnt/mfs
4.HeartBeat
准备工作
  1.网络布局
  IP设置:
  HA01: 10.1.27.34   (eth0 对外IP)   心跳:192.168.91.1eth1: 对内IP(HA专用)
  HA02: 10.1.27.35    (eth0 对外IP)  心跳:192.168.91.1 eth1: 对内IP(HA专用)
  浮动IP在这里不需要设置这个IP是在安装heartbeat时设置
  2.网络测试
  [root@server1 ~]# ping HA02
  [root@server1 ~]# ping server2
  如果网络网络不通请检查网络。
  3.检查主机的几个配置文件
  server1的hosts内容如下:
  [root@server1 ~]# cat /etc/hosts
  127.0.0.1              localhost.localdomain localhost
  10.1.27.34               server1               HA01
  192.168.91.1  HA01
  192.168.91.2  HA02
  10.1.27.35 server2
  server2的hosts内容如下:
  [root@server2 ~]#  cat /etc/hosts
  127.0.0.1               localhost.localdomain localhost
  10.1.27.35              server2                 HA02
  192.168.91.1 HA01
  192.168.91.2 HA02
  10.1.27.34 server1
  [root@server1 ~]# cat /etc/host.conf
  order hosts,bind
安装
  安装heartbeat(主从都需安装)
  yum install libnet
  yum install heartbeat-devel
  yum installheartbeat-ldirectord
  yum install heartbeat
  安装过程中如果出现依赖的包,利用yum安装即可。
  配置文件
  cp /usr/share/doc/heartbeat-2.1.3/ha.cf/etc/ha.d/
  cp /usr/share/doc/heartbeat-2.1.3/authkeys/etc/ha.d/
  cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
  a.配置ha.cf
  编辑hertbeat主配置文件ha.cf,2个主机上的内容一样。
  [root@server1 ~]# cat /etc/ha.d/ha.cf
  logfile /var/log/ha_log/ha-log.log ## ha的日志文件记录位置。如没有该目录,则需要手动添加
  bcast eth1 ##使用eth1做心跳监测
  keepalive 2 ##设定心跳(监测)时间时间为2秒
  warntime 10
  deadtime 30
  initdead 120
  hopfudge 1
  udpport 694 ##使用udp端口694 进行心跳监测
  auto_failback on ##是否恢复到它的primary节点
  node server1 ##节点1,必须要与 uname-n 指令得到的结果一致。
  node server2 ##节点2
  b.配置心跳的加密方式:authkeys(主从相同)
  [root@server1 ~]# vi /etc/ha.d/authkeys
  auth 1
  1 crc
  #2 sha1 HI!
  #3 md5 Hello!
  可以选择的几种验证方式,
  最后记得将authkeys  权限给为600
  [root@server1 ~]chmod600 /etc/ha.d/authkeys
  c.编辑haresources,2个主机上的内容一样。
  [root@server1 ~]# vi /etc/ha.d/haresources
  server1 Initdrbd  mfsmaster 10.1.27.38
  第一个字段是主机名,是uname -a得到的
  第二个字段作用是执行当前的脚本命令此脚本可以定义在/etc/init.d/或/etc/ha.d/resource.d,此处我定义了一个名叫Initdrbd 的脚本命令,具体的见下面演示。
  第三个字段作用定义启动mfsmaster进程,必须在/etc/init.d/或/etc/ha.d/resource.d能找到的可执行的脚本文件。
  第四个字段作用是启动虚拟的IP
  d.Initdrbd脚本制作
  [root@server1 ~]# cd /etc/ha.d/resource.d/
  [root@server1 ~]# vi Initdrbd
  #!/bin/sh
  unset LC_ALL; export LC_ALL
  unset LANGUAGE; export LANGUAGE
  prefix=/usr
  exec_prefix=/usr
  . /etc/ha.d/shellfuncs
  case"$1" in
  'start')
  drbdadmprimary r0
  mount/dev/drbd1 /mnt/usb
  ;;
  'stop')
  umount/mnt/usb
  drbdadm  secondary r0
  ;;
  'restart')
  ;;
  *)
  echo "Usage: $0 { start | stop | restart }"
  ;;
  esac
  exit 0
监控与测试
  常用的命令
  启动/etc/init.d/heartbeat start 或者service heartbeatstart
  停止/etc/init.d/heartbeat stop 或者 service heartbeatstop
  重启/etc/init.d/heartbeat restart或者 service heartbeatrestart
  监视服务tail -f /var/log/ha_log/ha-log.log 来查看启动的服务过程,具体的路径需要看配置文件的cat /etc/ha.d/ha.cf的日志路径的设定。
  简单的测试
  两台机器都修改配置文件
  [root@server1]# vi /etc/ha.d/haresources
  server1 10.1.27.38  httpd
  利用虚拟IP和启动的Appache服务来,测试heartbeat的切换。
  为两台机器建立标识文件如下
  [root@server1]# cd /var/www/html
  [root@server1 html]# cat index.html
  
  
  
   New Document
  
  
  
  
  
  
  server1 is running
  
  
  [root@server2]# cd /var/www/html
  [root@server1 html]# cat index.html
  
  
  
   New Document
  
  
  
  
  
  
  Server2 is running
  
  
  a). 两台机器分别启动
  b). 然后在两台机器意外的其他机器上输入http://10.1.27.38
  c). 正常会显示server1 isrunning,
  d). 把server1宕机或者关闭heartbeat,则会出现server2接管工作的状态,刷新浏览器出现server2 is running
  e). 恢复server1,过数秒后刷新浏览器出现server1is running,
  f). 测试成功
  Note:如果输入http:// 10.1.27.38 出现错误,请检查配置文件里面的服务是否写对了,查看日志文件看服务是否起来了,如果确定全部运行正常,还是没有WEB页面显示结果,请检查防火墙。
5.MooseFS
  我们假定使用的主机ip 地址分配如下:
  · 主控服务器Master server: 10.1.27.34
  · 主控服务器Master server: 10.1.27.35
  · 主控备份服务器Metalogger server: 10.1.27.31
  · 存储块服务器Chunk servers: 10.1.27.31 and 10.1.27.32
  · 客户端主机 (clients): 10.1.27.33
  安装元服务器(主从都一样)
  切忌:用户的uid和gid必须两台主备机一样,否则切换之后,起不来!!!!!!
  (1)、创建用户:
  [root@server1 /]# groupadd -g 65534 mfs
  [root@server1 /]# useradd -u 65534 -g mfs
  (2)、设置依赖库
  exportKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
  [root@server1 /]# tar -zxvf mfs-1.6.15.tar.gz
  [root@server1 ]#./configure --prefix=/mnt/mfs --with-default-user=mfs--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
  [root@server1 /]# make && makeinstall
  Note:安装时候一定要记得带prefix=/mnt/mfs,把安装目录全部置于DRBD的挂载目录,这样方便以后不能去指定路径去挂载。
  (3)、安装必要文件
  [root@server1 /]# cd /mnt/mfs/etc
  [root@server1 etc]#cpmfsmaster.cfg.dist mfsmaster.cfg
  [root@server1 etc]#cpmfsmetalogger.cfg.dist mfsmetalogger.cfg
  [root@server1 etc]#cpmfsexports.cfg.dist mfsexports.cfg
  [root@server1 etc]#cd /mnt/mfs/var/mfs/
  [root@server1 mfs]#cpmetadata.mfs.empty metadata.mfs
  (4)、启动mfs
  [root@server1 mfs]#/mnt/mfs/sbin/mfsmasterstart
  (5)、定制hearbeat的启动文件mfsmaster
  [root@server1 mfs]#vi /etc/init.d/mfsmaster
  # chkconfig: 345 91 10
  # description: mfs start.
  # 包含函数库
  . /etc/rc.d/init.d/functions
  # 获取网络配置
  . /etc/sysconfig/network
  # 检测 NETWORKING 是否为 "yes"
  [ "${NETWORKING}" ="no" ] && exit 0
  # 启动服务函数
  start() {
  /mnt/usb/sbin/mfsmaster start
  }
  # 关闭服务函数
  stop() {
  /mnt/usb/sbin/mfsmaster stop
  }
  # 重启服务
  restart() {
  /mnt/usb/sbin/mfsmaster restart
  }
  # 根据参数选择调用
  case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  restart)
  restart
  ;;
  *)
  echo $"Usage: $0 start|stop|restart"
  exit 1
  esac
  exit 0
  [root@server1 mfs]#chmod 755/etc/init.d/mfsmaster
备份服务器Backup server (metalogger) 安装
  用来安装metalogger 的主机,在性能上应该比master 强大(至少有更多的内存)。一旦主控服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger将能接替发生故障的master,备份服务器Metalogger安装跟主控服务器master 安装非常类似。其安装命令如下:
  1、 创建组mfs
  #groupadd mfs
  2、创建用户mfs
  #useradd -g mfs mfs
  3、切换目录
  #cd /usr/src
  4、解包归档文件
  #tar -zxvf mfs-1.6.15.tar.gz
  5、切换目录
  #cd mfs-1.6.15
  6、配置
  #./configure --prefix=/usr --sysconfdir=/etc \
  --localstatedir=/var/lib --with-default-user=mfs \
  --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
  7、编译及安装
  #make
  #make install
  8、产生配置文件
  #cd /etc
  #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
  类似地,修改/etc/hosts 文件,增加下面的行:
  10.1.27.38 mfsmaster
  现在,我们来试着运行备份服务mfsmetaloger:
  #/usr/sbin/mfsmetalogger start
  在一个生产环境里,我们应当设置自动启动脚本,以便操作系统重新启动时,MooseFS
  mfsmetalogger服务也能自动运行。
存储块服务器Chunk servers 安装
  在每个chunk server 主机上执行下面的命令:
  #groupadd mfs
  #useradd -g mfs mfs
  #cd /usr/src
  #tar -zxvfmfs-1.6.15.tar.gz
  #cd mfs-1.6.15
  #./configure--prefix=/usr --sysconfdir=/etc \
  --localstatedir=/var/lib--with-default-user=mfs \
  --with-default-group=mfs--disable-mfsmaster
  #make
  #make install
  准备chunk server 服务所需的配置文件:
  #cd /etc/
  #cpmfschunkserver.cfg.dist mfschunkserver.cfg
  #cp mfshdd.cfg.distmfshdd.cfg
  为了测试这个安装,我们保留mfschunkserver.cfg文件不做任何改动;如果读者想了解
  配置文件mfschunkserver.cfg 更详细的信息,请查看手册页 (man
  mfschunkserver.cfg)。
  在配置文件mfshdd.cfg 中,我们给出了用于客户端挂接MooseFS 分布式文件系统根分区所
  使用的共享空间位置。建议在chunk server上划分单独的空间给 MooseFS 使用,这样做的好处
  是便于管理剩余空间。此处我们假定要使用两个共享点/mnt/mfschunks1和
  /mnt/mfschunks2,为此,我们在mfshdd.cfg 加入下面的文本行:
  /mnt/mfschunks1
  /mnt/mfschunks2
  在启动chunk server 前,需确保用户mfs 有权限读写将要被挂接的分区(因为chunk server 运
  行时要在此创建一个.lock 的文件):
  #chown -R mfs:mfs/mnt/mfschunks1
  #chown -R mfs:mfs/mnt/mfschunks2
  类似地,修改/etc/hosts 文件,增加下面的行:
  10.1.27.38 mfsmaster
  利用双热备虚拟IP来接管mfsmaster服务
  开始启动chunk server:
  #/usr/sbin/mfschunkserverstart
客户端Users’ computers 安装
  为了挂接基于MooseFS 分布式文件,客户端主机必须安装FUSE 软件包( fuse 版本号至少2.6,推荐使用版本号大于2.7.2 的fuse)。如果系统没有安装fuse,你必须手动对其进行安装。
  #cd /usr/src
  #tar -zxvffuse-2.8.3.tar.gz
  #cd fuse-2.8.3
  #./configure
  #make
  #make install
  安装客户端软件 mfsmount 的步骤:
  #cd /usr/src
  #tar -zxvfmfs-1.6.15.tar.gz
  #cd mfs-1.6.15
  #./configure--prefix=/usr --sysconfdir=/etc \
  --localstatedir=/var/lib--with-default-user=mfs \
  --with-default-group=mfs--disable-mfsmaster \
  --disable-mfschunkserver
  #make
  #make install
  修改文件/etc/hosts ,增加如下的文本行:
  10.1.27.38 mfsmaster
  假定客户端的挂接点是/mnt/mfs,我们将以下面的指令来使用MooseFS
  1、 创建挂接点
  #mkdir -p /mnt/mfs
  2、开始挂接操作
  #/usr/bin/mfsmount/mnt/mfs -H mfsmaster
  执行命令df –h | grep mfs 检查分区情况,可能的输出如下:
  /storage/mfschunks/mfschunks1
  2.0G 69M 1.9G 4%/mnt/mfschunks1
  /storage/mfschunks/mfschunks2
  2.0G 69M 1.9G 4%/mnt/mfschunks2
  mfs#mfsmaster:94213.2G 0 3.2G 0% /mnt/mfs
监控界面:
  对mfscgiserv的使用Mfscgiserv是用python编写的一个web服务器,它的监听端口是9425,
  可以利用:/mnt/mfs/sbin/mfscgiserv来启动,用户利用浏览器就可全面监控所有客户挂接,chunkserver及masterserver,客户端的各种操作等等,绝对是个好工具。
  在任何一台装有浏览器的机器上都可以查看:http://10.1.27.38:9425
测试
  在MooseFS 挂接点下创建目录folder1,在该目录,我们将以一个副本的方式存放文件 (设置goal=1):
  #mkdir-p /mnt/mfs/folder1
  再在挂接点创建第2 个目录 folder2, 在该目录,我们将以两个个副本的方式存放文件(设置goal=2):
  #mkdir-p /mnt/mfs/folder2
  使用命令mfssetgoal –r 设定目录里文件的副本数:
  1、副本数为1
  #mfssetgoal-r 1 /mnt/mfs/folder1
  /mnt/mfs/folder1:
  inodeswith goal changed: 0
  inodeswith goal not changed: 1
  inodeswith permission denied: 0
  2、副本数为2
  #mfssetgoal-r 2 /mnt/mfs/folder2
  /mnt/mfs/folder2:
  inodeswith goal changed: 0
  inodeswith goal not changed: 1
  inodeswith permission denied: 0
  拷贝同一个文件到两个目录:
  cp/usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder1
  cp/usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder2
  命令mfschunkfile 用来检查给定的文件以多少副本数来存储。对应目录folder1 来说,
  有一个副本存储在一个chunk 里:
  #mfscheckfile/mnt/mfs/folder1/mfs-1.6.15.tar.gz
  /mnt/mfs/folder1/mfs-1.6.15.tar.gz:
  1copies: 1 chunks
  而在目录folder2 中,文件 mfs-1.6.15.tar.gz 是以两个副本保存的:
  #mfscheckfile/mnt/mfs/folder2/mfs-1.6.15.tar.gz
  /mnt/mfs/folder2/mfs-1.6.15.tar.gz:
  2copies: 1 chunks
  附加信息。当所有的组件被安装到同一个物理主机的时候,即便设定了goal=2 来到达保存两个副本的目的,但你可能看到的只是一个副本而已—这是合理的,尽管有两个磁盘,但它只是一个chunk server 啊!
6.集成与测试
集成
  1.heartbeat与drbd的集成
  DRBD的主从的切换依赖与heartbeat的服务,所以集成的关键点在于定义Initdrbd的脚本文件的定义和heartbeat的服务定义文件/etc/ha.d/resource.d。如server1 Initdrbd 就是集成DRBD和heartbeat。
  2.heartbeat与MFS的集成
  与DRBD一样,mfsmaster的脚本文件定义与heartbeat的服务定义文件/etc/ha.d/resource.d中即可。
  3.drbd 与mfs 的集成
  在主服务器中,必须把MFS的安装文件全部安装到drbd的挂载目录中去,安装到块设备上去,所以在主从切换的时候,备份机器拿到安装环境和主的一样,那么通过同样的方式来启动MFS进程,达到切换切换启动MFS的目的。
测试
  1.两台server上启动DRBD,利用cat /proc/drbd 查看启动情况和网络状态
  主机器上显示Primary/Secondary 备份机器上显示Secondary/Primary,启动成功
  2.启动heartbeat,通过日志查看heartbeat包括关联的服务加载的情况,tail –f /var/log/ha_log/xxx.log
  3.在主机器上Ps 的方式查看heartbeat 和MFS进程,确保服务启动,如果没有启动,可手动在启动一次。此时备份机器的mfs没有启动。
  4.停止主服务的heartbeat,查看主服务的日志,发现所有的关联服务都会被关闭,包括drbd,mfs,vip等。
  5.查看备份机器的日志,发现已经开始启动关联的服务,此时备份机器上cat /proc/drbd
  出现Primary/Secondary 主机器上显示Secondary/Primary,说明DRBD切换成功,然后查看mfs是否启动,如果启动成功,恭喜您,高可用的MFS文件分布式系统已经搭建好了。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659981-1-1.html 上篇帖子: 群集之 DRDB+Heartbeat 下篇帖子: heartbeat高可用软件服务应用指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表