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

[经验分享] Drbd+heartbeat+Moosefs分布式存储双机冗余搭建

[复制链接]

尚未签到

发表于 2019-1-7 13:02:40 | 显示全部楼层 |阅读模式
  Drbd+heartbeat+Moosefs分布式存储双机冗余搭建
  一、软件:
  drbd-8.2.1.tar.gz
  heartbeat-2.1.3.tar.tar
  libnet-1.1.2.1-2.rf.x86_64.rpm
  fuse-2.8.3.tar.gz
  mfs-1.6.11.tar.gz
  服务器:
  10.64.5.104 主drbd  mfsmaster
  10.64.5.105 备drbd  mfsmaster
  10.64.5.106 分布式存储服务器
  10.64.5.123 分布式存储服务器
  10.64.5.124 Client端服务器
  二、DRBD安装:
  1、编译:
  tar -zxvf drbd-8.2.1.tar.gz
  make KDIR=/usr/src/linux
  make install
  检查是否生成了相应的文件:/etc/drbd.conf ; /etc/init.d/drbd ; 以及./drbd/drbd.ko
  加载安装drbd模块
  # modprobe drbd
  通过lsmod检查是否已经成功
  #lsmod |grep drbd
  如果有,则表示成功了
  2、创建drbd相应的设备
  下面就来开始创建相应的drbd相关的设备及相应的配置
  配置如下:
  2.1、vi /etc/drbd.conf
  global { usage-count yes; }
  common { syncer { rate 50M; } }
  resource r0 {
  protocolC;
  net {
  after-sb-0pri disconnect;
  rr-conflict disconnect;
  }
  ontest-104 {
  device    /dev/drbd1;
  disk      /dev/sdb1;
  address   10.64.5.104:7898;
  meta-disk  internal;
  }
  ontest-105 {
  device    /dev/drbd1;
  disk      /dev/sdb1;
  address   10.64.5.105:7898;
  meta-disk  internal;
  }
  }
  2.2、vi /etc/hosts
  10.64.5.104    test-104
  10.64.5.105    test-105
  more /proc/drbd
  drbdsetup /dev/drbd1 primary -o
  # 是否参加DRBD使用者统计.默认是yes
  global { usage-count yes; }
  # 设置主备节点同步时的网络速率最大值,单位是字节.
  common { syncer { rate 1M; } }
  # 一个DRBD设备(即:/dev/drbdX),叫做一个"资源".里面包含一个DRBD设备的主备节点的
  # 相关信息.
  #
  resource r0 {
  # 使用协议C.表示收到远程主机的写入确认后,则认为写入完成.
  protocol C;
  net {
  # 设置主备机之间通信使用的信息算法.
  cram-hmac-alg sha1;
  shared-secret"FooFunFactory";
  }
  # 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.
  on g105-1 {
  # /dev/drbd1使用的磁盘分区是/dev/hdb1
  device    /dev/drbd1;
  disk      /dev/hdb1;
  # 设置DRBD的监听端口,用于与另一台主机通信
  address   10.0.1.2:7898;
  meta-disk  internal;
  }
  on g105-2 {
  device    /dev/drbd1;
  disk      /dev/hdb1;
  address   10.0.2.2:7898;
  meta-disk  internal;
  }
  }
  3、命令:
  3.1、创建供DRBD记录信息的数据块.分别在两台主机上执行:
  drbdadm create-md r0
  3.2、启动:
  /etc/init.d/drbd start
  3.3、查看状态:
  cat /proc/drbd
  由于DRBD无法判断哪一方为主机,以哪一方的磁盘数据作为标准数据.所以,我们需要初始化,在test-104上执行:
  drbdsetup /dev/drbd1 primary -o
  3.4、主备机切换:
  test-104:
  drbdadm secondary r0
  test-105:
  drbdadm primary r0
  3.5、格式化drbd分区并挂载:
  mke2fs /dev/drbd1
  (1)、现在可以把主test-104上的DRBD设备挂载到/opt/test目录上进行使用;
  (2)、备机的DRBD设备无法被挂载,因为它是用来接收主机数据的,由DRBD负责操作。
  more /proc/drbd
  version: 8.2.1(api:86/proto:86-87)
  GIT-hash:318925802fc2638479ad090b73d7af45503dd184 build by root@test-105, 2010-01-1117:35:20
  1:cs:Connected st:Secondary/Primary ds:UpToDate/UpToDate C r---
  ns:0nr:1645688 dw:1645688 dr:0 al:0 bm:88 lo:0 pe:0 ua:0 ap:0
  resync: used:0/31 hits:29120 misses:88 starving:0 dirty:0 changed:88
  act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
  Field       说明值:
  cs         连接状态出现的值:
  o Unconfigured:设备在等待配置。
  o Unconnected:连接模块时的过渡状态。
  o WFConnection:设备等待另一测的配置。
  o WFReportParams:过渡状态,等待新TCP 连接的第一个数据包时。.
  o SyncingAll:正将主节点的所有模块复制到次级节点上。.
  o SyncingQuick:通过复制已被更新的模块(因为现在次级节点已经离开了集群)来更新次级节点。
  o Connected:一切正常。
  o Timeout:过渡状态。
  st         状态(设备的作用)可能的值为:
  o 本地/远程一级状态
  o 二级状态
  o 未知(这不是一种作用)
  ns    网络发送模块号码
  nr    网络接收模块号码
  dw    磁盘写入模块号码
  dr    磁盘读取模块号码
  of    运行中(过时的)模块号码
  pe    待解决的模块号码
  ua    未答复的模块号码(最好为0)
  [root@manager /]# mount /dev/drbd1 /opt/data
  [root@manager /]# df -h
  Filesystem           1K-blocks      Used Available Use% Mounted on
  /dev/drbd1            9.9G 1001M  8.4G 11% /opt/data
  现在把之前备份的/opt/data中的所有内容再恢复回去。
  如果不使用heartbeat的情况下,DRBD只能手工切换主从关系
  现在修改heartbeat的配置文件,使DRBD可以通过heartbeat自动切换
  三、heartbeat安装部署:
  两台机器上的公共操作:
  (1)、创建用户和用户组:
  groupadd -g 800 haclient
  useradd -g haclient -u 800 hacluster
  (2)、
  rpm -ivh libnet-1.1.2.1-2.rf.x86_64.rpm
  (3)、
  tar -zxvf heartbeat-2.1.3.tar.gz
  cd heartbeat-2.1.3
  ./configure 或者 ./ConfigureMe configure
  make && make install
  cp doc/ha.cf /etc/ha.d/
  cp doc/haresources /etc/ha.d/
  cp doc/authkeys /etc/ha.d/
  (4)、编辑hertbeat主配置文件ha.cf,2个主机上的内容一样。
  以下是需要打开的配置,ha.cf里面有详细说明。
  vi /etc/ha.d/ha.cf
  debugfile /var/log/ha-debug
  logfacility    local0
  keepalive 2
  deadtime 5
  warntime 10
  initdead 10
  ucast eth0 10.64.5.105    #在两台机器上的内容是不一样的,都是指向对方的ip地址
  auto_failback off
  node test-104
  node test-105
  ping 10.64.7.254
  respawn hacluster/usr/lib64/heartbeat/ipfail  或者/usr/local/lib64/heartbeat/ipfail
  apiauth ipfail gid=haclient uid=hacluster
  ## ha的日志文件记录位置。如没有该目录,则需要手动添加
  logfile /var/log/ha-log #File to write othermessages to
  logfacility local0 #这个是设置heartbeat的日志,这里是用的系统日志
  ##设定心跳(监测)时间时间为2秒
  keepalive 2 #多长时间检测一次
  warntime 5 #连续多长时间联系不上后开始警告提示
  deadtime 20 #连续多长时间联系不上后认为对方挂掉了(单位是妙)
  initdead 120 #这里主要是给重启后预留的一段忽略时间段(比如:重启后启动网络等,如果在网络还没有通,keepalive检测肯定通不过,但这时候并不能切换)
  #采用bond0的udp广播用来发送心跳信息
  #bcast bond0
  #采用网卡bond0的udp单播来通知心跳,ip应为对方IP,建议采用单播。当一个网段有多台这样cluster话,则一定要采用单播,否则每组cluster都会看到对方的节点,从而报错。
  ucast bond0 172.18.57.154
  ##使用udp端口694 进行心跳监测
  udpport 694
  auto_failback off #恢复正常后是否需要再自动切换回来,一般都设为off。
  ##节点1,必须要与uname -n 指令得到的结果一致。
  node alsme_probe3
  ##节点2
  node alssme_probe4
  ##通过ping 网关来监测心跳是否正常
  ping 172.18.158.254
  hopfudge 1
  deadping 5
  #指定和heartbeat一起启动、关闭的进程#respawn hacluster /usr/local/lib64/heartbeat/ipfail
  #apiauth ipfail gid=haclient uid=hacluster
  #是否采用v2 style模式,在三节点以上时一定要打开
  #crm on
  (5)、编辑hertbeat认证文件authkeys,2个主机上的内容一样。
  vi /etc/ha.d/authkeys
  auth 1
  1 crc
  #3 md5 Hello!
  可以选择的是Md5的验证方式,
  最后记得将authkeys  权限给为600
  chmod 600 /etc/ha.d/authkeys
  (6)、编辑haresources,2个主机上的内容一样。
  vi /etc/ha.d/haresources
  test-104 drbddisk::r0Filesystem::/dev/drbd1::/testdata 10.64.5.130 mfsmaster
  第一个字段是主机名,是uname -a得到的
  第二个字段作用是当前主机设置为primary
  第三个字段作用定义挂载文件系统,将/dev/drbd1 mount到/testdata目录上
  第四个字段作用是启动VIP
  第五个字段启动mfsmaster进程
  (7)、分配权限:
  chgrp haclient /sbin/drbdsetup
  chmod o-x /sbin/drbdsetup
  chmod u+s /sbin/drbdsetup
  chgrp haclient /sbin/drbdmeta
  chmod o-x /sbin/drbdmeta
  chmod u+s /sbin/drbdmeta
  (8)、启动heartbeat
  /etc/init.d/heartbeat start
  四、Moosefs安装部署:
  1、安装 Fuse  首先要安装Fuse, Linux从2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统
  fuse-2.8.3.tar.gz
  ./configure
  make && make install
  编辑 /etc/ld.so.config 加入
  include /usr/local/lib
  命令行中:
  #depmod -a
  2、安装元服务器
  切忌:用户的uid和gid必须两台主备机一样,否则切换之后,起不来!!!!!!
  (1)、创建用户:
  groupadd -g 65534 mfs
  useradd -u 65534 -g mfs -s /bin/false -d/home/mfs mfs
  (2)、
  exportKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
  tar -zxvf mfs-1.6.11.tar.gz
  ./configure --prefix=/opt/data/mfs--with-default-user=mfs --with-default-group=mfs
  make && make install
  (3)、安装必要文件
  cd /opt/data/mfs/etc
  touch mfsmaster.cfg
  touch mfsexports.cfg
  mkdir -p /opt/data/mfs/var/mfs/data
  cp /opt/data/mfs/var/mfs/metadata.mfs.empty/opt/data/mfs/var/mfs/data/metadata.mfs----文件必须这么生成!!
  chown -R mfs. /opt/data
  (4)、配置/opt/data/mfs/etc/mfsmaster.cfg
  WORKING_USER = mfs
  WORKING_GROUP = mfs
  EXPORTS_FILENAME =/opt/data/mfs/etc/mfsexports.cfg
  LOCK_FILE = /opt/data/mfs/var/mfsmaster.pid
  DATA_PATH = /opt/data/mfs/var/mfs/data
  SYSLOG_IDENT = mfsmaster
  BACK_LOGS = 50
  REPLICATIONS_DELAY_INIT = 300
  REPLICATIONS_DELAY_DISCONNECT = 3600
  MATOCS_LISTEN_HOST = *
  MATOCS_LISTEN_PORT = 9420
  MATOCU_LISTEN_HOST = *
  MATOCU_LISTEN_PORT = 9421
  CHUNKS_LOOP_TIME = 300
  CHUNKS_DEL_LIMIT = 100
  CHUNKS_REP_LIMIT = 15
  (5)、配置输出控制文件/opt/data/mfs/etc/mfsexports.cfg
  *                      .           rw
  10.64.5.124            /           rw,alldirs,maproot=0
  (6)、启动mfs
  /opt/data/mfs/sbin/mfsmaster start
  (7)、定制hearbeat的启动文件mfsmaster
  vi /etc/init.d/mfsmaster
  /opt/data/mfs/sbin/mfsmaster start
  chmod 755 /etc/init.d/mfsmaster
  3、安装chunkserver块服务器:(建议chunkserver使用2-3个副本)
  (1)、创建用户:
  groupadd -g 65534 mfs
  useradd -u 65534 -g mfs -s /bin/false -d/home/mfs mfs
  (2)、
  exportKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
  tar -zxvf mfs-1.6.11.tar.gz
  ./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster--disable-mfsmount
  make && make install
  (3)、安装必要文件
  cd /usr/local/mfs/etc
  touch mfschunkserver.cfg
  touch mfshdd.cfg
  chown -R mfs. /usr/local/mfs
  数据目录:
  mkdir /data
  mount /dev/sdb1 /data
  chown -R mfs. /data
  (4)、配置主配置文件mfschunkserver.cfg及共享磁盘配置文件mfshdd.cfg
  vi mfschunkserver.cfg
  WORKING_USER = mfs
  WORKING_GROUP = mfs
  DATA_PATH = /usr/local/mfs/var/mfs
  LOCK_FILE =/usr/local/mfs/var/mfs/mfschunkserver.pid
  SYSLOG_IDENT = mfschunkserver
  BACK_LOGS = 50
  MASTER_RECONNECTION_DELAY = 30
  MASTER_HOST = 10.64.5.130    (两台metaserver的HAip地址)
  MASTER_PORT = 9420
  MASTER_TIMEOUT = 60
  CSSERV_LISTEN_HOST = *
  CSSERV_LISTEN_PORT = 9422
  CSSERV_TIMEOUT = 60
  CSTOCS_TIMEOUT = 60
  HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg
  vi mfshdd.cfg
  /data
  #/data2
  4、安装Client服务器:
  (1)、安装 Fuse  首先要安装Fuse, Linux从2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统
  fuse-2.8.3.tar.gz
  ./configure
  make && make install
  编辑 /etc/ld.so.config 加入
  include /usr/local/lib
  命令行中:
  #depmod -a
  2、安装Client服务器:
  (1)、创建用户:
  groupadd -g 65534 mfs
  useradd -u 65534 -g mfs -s /bin/false -d/home/mfs mfs
  (2)、
  (1)、vi /etc/profiles         source/etc/profiles
  exportKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
  (2)、yum install fuse*  -------经测试,这条必须执行,否则client端根本无法安装mfsmount命令
  tar -zxvf mfs-1.6.11.tar.gz
  ./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster--enable-mfsmount
  make && make install
  (3)、modprobefuse
  (4)、创建挂载目录
  mkdir -p /opt/test/data
  (5)、Client端启动挂载:
  /usr/local/mfs/bin/mfsmount -H 10.64.5.130/opt/test/data
  五、监控界面:
  对mfscgiserv的使用
  Mfscgiserv是用python编写的一个web服务器,它的监听端口是9425,
  可以利用:
  /opt/data/mfs/sbin/mfscgiserv来启动,用户利用浏览器就可全面监控所有客户挂接,chunkserver及masterserver,客户端的各种操作等等,绝对是个好工具。
  在任何一台装有浏览器的机器上都可以查看:
  http://10.64.5.130:9425


运维网声明 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-660369-1-1.html 上篇帖子: 判断是否支持Heartbeat的NSE脚本 下篇帖子: Centos5.6 x86下部署安装DRBD+Heartbeat+MySQL-DevilRex119
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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