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

[经验分享] moosefs 解决 mfsmaster单点故障keepalived 辅助

[复制链接]
发表于 2018-12-31 14:27:00 | 显示全部楼层 |阅读模式
  一 服务器IP及应用角色
  二 原理及思路
  三 moosefs  安装 配置 管理
  四  metadata.mfs.bak的定时备份
  五  keepalived 安装 配置 管理
  六 故障切换测试
  七 参考资料联系方式
  八 本教程相关资料下载
  一 服务器IP及应用角色
  192.168.20.237   keepalived MASTER  mfsmaster  mfschuckserver  mfsclient
  192.168.20.38     keepalived Slave   mfsmetalogger  mfschuckserver  mfsclient   mfsmaster(备份)
  192.168.20.233   虚拟IP
  二 原理及思路
  1 mfsmaster的故障恢复在1.6.5版本后可以由mfsmetalogger产生的日志文件 changelog_ml.*.mfs和metadata.mfs.back由命令mfsmetarestore恢复
  2 定时从mfsmaster 获取 metadata.mfs.back 文件用于master恢复
  3 192.168.11.237 keepalived MASTER run检测到 mfsmaster 故障的时候 停止  keepalived
  4 192.168.20.38 keepalived 状态从backup转到 master 并触发 notify_master事件执行恢复并启动mfsmaster脚本
  5 整个切换在2~5秒内完成 根据检测时间间隔。
  6  nagios 监控mfs状态可见参考资料
  三 moosefs  安装 配置 管理
  mfsmaster mfsmetalogger  mfschuckserver mfsclient 四个角色的安装 如下 只是使用的配置文件不同

  •   useradd -s /sbin/nologin mfs
  •   mkdir -p /opt/software
  •   cd /opt/software
  •   wget http://sourceforge.net/projects/fuse/files/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz
  •   wget http://sourceforge.net/projects/moosefs/files/moosefs/1.6.20/mfs-1.6.20-2.tar.gz

  •   tar zxvf fuse-2.8.5.tar.gz
  •   cd fuse-2.8.5
  •   ./configure --prefix=/usr
  •   make && make install

  •   cd /opt/software
  •   tar zxvf mfs-1.6.20-2.tar.gz
  •   cd mfs-1.6.20-2
  •   ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
  •   make && make install
  •   cd ..
  复制代码
  MFS相关的配置文件有  mfsmaster.cfg mfsexports.cfg
  #192.168.20.237和192.168.20.38 mfsmaster 配置文件如下
  vi  /usr/local/mfs/etc/mfsmaster.cfg

  •   # WORKING_USER = mfs
  复制代码
  #192.168.20.237  192.168.20.38  mfschunkserver   使用相同的mfschunkserver.cfg mfshdd.cfg配置文件如下
  vi /usr/local/mfs/etc/mfschunkserver.cfg

  •   # WORKING_USER = mfs
  •   # WORKING_GROUP = mfs
  •   # SYSLOG_IDENT = mfschunkserver
  •   # LOCK_MEMORY = 0
  •   # NICE_LEVEL = -19
  •   # DATA_PATH = /usr/local/mfs/var/mfs
  •   # MASTER_RECONNECTION_DELAY = 5
  •   # BIND_HOST = *
  •   MASTER_HOST = 192.168.20.233
  •   # MASTER_PORT = 9420
  •   # MASTER_TIMEOUT = 60
  •   # CSSERV_LISTEN_HOST = *
  •   # CSSERV_LISTEN_PORT = 9422
  •   # HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg
  •   # HDD_TEST_FREQ = 10
  •   # deprecated, to be removed in MooseFS 1.7
  •   # LOCK_FILE = /var/run/mfs/mfschunkserver.lock
  •   # BACK_LOGS = 50
  •   # CSSERV_TIMEOUT = 5
  复制代码
  我这边mfschunk存储数据的目录是 /data/9ai9.net
  vim  /usr/local/mfs/etc/mfshdd.cfg

  •   /data/9ai9.net
  复制代码
  mfs各角色的管理命令如下 更详细的说明参见参考资料
  /usr/local/mfs/sbin/mfsmaster start|stop|restart|reload
  /usr/local/mfs/sbin/mfsmetalogger start|stop|restart|reload
  /usr/local/mfs/sbin/mfschunkserver start|stop|restart|reload
  客户端将mfschunk共享挂载到/home/lixy命令
  modprobe fuse
  /usr/local/mfs/bin/mfsmount /home/lixy -H 192.168.20.233
  四  metadata.mfs.bak的定时备份
  将主MFSMASTER的metadata.mfs.bak定时备份到 备用的MFSmaster服务器上
  这里scp方法每5分钟从主服务器取metadata.mfs.bak备份一次 用于启动
  在crontab -e里添加以下内容

  •   */5 * * * *  scp  192.168.20.237:/usr/local/mfs/var/mfs/metadata.mfs.back  /usr/local/mfs/var/mfs
  复制代码
  五  keepalived 安装 配置 管理

  •   wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
  •   tar zxvf keepalived-1.2.2.tar.gz
  •   cd keepalived-1.2.2
  •   ./configure --prefix=/
  •   make
  •   make install
  复制代码
  #配置说明
  1 KEEPALIVED MASTER 每2秒检测一次 mfsmaster状态
  2 KEEPAVLIED BACKUP 不检测MFS状态 只等待KEEPALIVED事情触发恢复
  192.168.20.237 keepavled MASTER主配置文件

  •   ! Configuration File for keepalived
  •   global_defs {
  •   router_id 9ai9.net
  •   }
  •   vrrp_script check_run {
  •   script "/root/keepalived_check_mfsmaster.sh"
  •   interval 2
  •   }
  •   vrrp_sync_group VG1 {
  •   group {
  •   VI_1
  •   }
  •   }
  •   vrrp_instance VI_1 {
  •   state MASTER
  •   interface eth0
  •   virtual_router_id 88
  •   priority 100
  •   advert_int 1
  •   nopreempt
  •   authentication {
  •   auth_type PASS
  •   auth_pass 9ai9.net
  •   }
  •   track_script {
  •   check_run
  •   }
  •   virtual_ipaddress {
  •   192.168.20.233
  •   }
  •   }
  复制代码
  vim /root/keepalived_check_mfsmaster.sh
  注:这里 MFSMASTER_HOST的IP地址要是192.168.20.237 非VIP

  •   #!/bin/bash
  •   #write by qhappy QQ 87179505
  •   #20110310

  •   MFSMASTER_HOST=192.168.20.237
  •   MFSMASTER_PORT=9420
  •   if [ `uname -i` = x86_64 ];then
  •   CHECK_MASTER=/root/qhappy_check_tcp_64
  •   else
  •   CHECK_MASTER=/root/qhappy_check_tcp_32
  •   fi
  •   CHECK_TIME=2
  •   #mfsmaster  is working MFS_OK is 1 , mfsmaster down MFS_OK is 0
  •   MFS_OK=1
  •   function check_mfsmaster (){
  •   $CHECK_MASTER -H $MFSMASTER_HOST -p $MFSMASTER_PORT >/dev/null 2>&1
  •   if [ $? = 0 ] ;then
  •   MFS_OK=1
  •   else
  •   MFS_OK=0
  •   fi
  •   return $MFS_OK
  •   }
  •   while [ $CHECK_TIME -ne 0 ]
  •   do
  •   let "CHECK_TIME -= 1"
  •   check_mfsmaster
  •   if [ $MFS_OK = 1 ] ; then
  •   CHECK_TIME=0
  •   exit 0
  •   fi
  •   if [ $MFS_OK -eq 0 ] &&  [ $CHECK_TIME -eq 0 ]
  •   then
  •   /etc/init.d/keepalived stop
  •   exit 1
  •   fi
  •   done
  复制代码
  chmod 755  /root/keepalived_check_mfsmaster.sh
  192.168.20.38  keepalived BACKUP的 配置
  vim  /etc/keepalived/keepalived.conf

  •   ! Configuration File for keepalived
  •   global_defs {
  •   router_id 9ai9.net
  •   }

  •   vrrp_sync_group VG1 {
  •   group {
  •   VI_1
  •   }
  •   notify_master "/root/keepalived_notify.sh master"
  •   notify_backup "/root/keepalived_notify.sh backup"
  •   }
  •   vrrp_instance VI_1 {
  •   state BACKUP
  •   interface eth0
  •   virtual_router_id 88
  •   priority 80
  •   advert_int 1
  •   authentication {
  •   auth_type PASS
  •   auth_pass 9ai9.net
  •   }

  •   virtual_ipaddress {
  •   192.168.20.233
  •   }
  •   }
  复制代码
  vim /root/keepalived_notify.sh

  •   #!/bin/bash
  •   #write by qhappy QQ 87179505
  •   #20110310

  •   MFS_HOME=/usr/local/mfs
  •   MFSMARSTER=${MFS_HOME}/sbin/mfsmaster
  •   MFSMETARESTORE=${MFS_HOME}/sbin/mfsmetarestore
  •   MFS_DATA_PATH=${MFS_HOME}/var/mfs

  •   function backup2master(){
  •   $MFSMETARESTORE -m ${MFS_DATA_PATH}/metadata.mfs.bak -o ${MFS_DATA_PATH}/metadata.mfs $MFS_DATA_PATH/changelog_ml*.mfs
  •   #$MFSMETARESTORE -a
  •   $MFSMARSTER start
  •   }

  •   function master2backup(){
  •   $MFSMARSTER stop
  •   }

  •   function ERROR(){
  •   echo "USAGE: keepalived_notify.sh master|backup "
  •   }

  •   case $1 in
  •   master)
  •   backup2master
  •   ;;
  •   backup)
  •   master2backup
  •   ;;
  •   *)
  •   ERROR
  •   ;;
  •   esac
  复制代码
  chomd 755  /root/keepalived_notify.sh
  各服务角色 启动顺序
  1 mfsmaster
  2 keepalived
  3 mfsmetalogger
  4 mfschunckserver
  5 客户端挂载
  关闭顺序和上面的相反
  五 故障切换测试
  192.168.20.237 执行
  /usr/local/mfs/sbin/mfsmaster stop
  192.168.20.237日志截图
DSC0000.jpg

  192.168.20.38 日志截图
DSC0001.jpg

  续上图
DSC0002.jpg

  六 参考资料
  moosefs官网 http://www.moosefs.org/
  ChinaUnix   http://bbs.chinaunix.net/thread-1644309-1-1.html
  笔者 QQ 87179505
  七 资料下载
  下载的内容为keepalived 检测mfsmaster 状态的文件 脚本中定义的使用路径是 /root 也请放在这个路径下


运维网声明 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-658026-1-1.html 上篇帖子: lvs+keepalived实现高可用群集配置详解 下篇帖子: Linux深入篇之九:构建企业级Nginx+Keepalived集群架构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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