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

[经验分享] 轻量级分布式系统

[复制链接]

尚未签到

发表于 2019-2-1 09:08:15 | 显示全部楼层 |阅读模式
  MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:
1 管理服务器(master)
2 元数据日志服务器(Metalogger)
3 数据存储服务器 (chunkservers)
4 客户机挂载使用
  
  各种角色作用:
  1 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
  2 元数据日志服务器: 负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作
  3 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.
  4 客户端: 通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,.看起来共享的文件系统和本地unix文件系统使用一样的效果.吧。
  1 Moosefs简介
1.1 角色构成
整个mfs共计四种角色:master、metalogger、chunk和client
1、master:只有一台。
2、metalogger:可以有多台。它负责定期从master下载metadata,并实时同步changelog。metadata和changelog的关系类似于sfrd里面基准和增量的关系。当master挂了的时候,metalogger利用下载下来的metadata和实时同步的changelog来恢复master挂掉时候的metadata。并且接管master的功能。
3、chunk:提供存储的服务器,可以有多台。这些服务器负责提供存储,它可以自由的启动和停止。在chunk启动后,会主动与master联系,master知道有多少chunk在网络中,并且会定期检查chunk的状态。
4、client:使用mfs的服务器,可以有多台。它需要运行mfsmount命令,将网络上的存储挂载到本地,看起来类似nfs。client就像读写本地磁盘那样读写mfsmount挂载的网络存储。

2 环境部署
2.1 安装
对于client端,需要安装fuse程序后,才可以编译mfsmount程序;并且需要加载fuse.ko内核模块后才能正确运行mfsmount命令。
2.1.1 fuse的安装
fuse-2.8.4.tar.gz,在http://sourceforge.net/projects/fuse/中下载,放到/home/XXXX/opdir/software目录中。
$ tar xvzf fuse-2.8.4.tar.gz
$ su -

# cd fuse-2.8.4
# ./configure
# make
# make install
在make install的过程中,需要使用root创建文件,因此这里使用root执行命令。
编辑/etc/profile这个文件,将以下行填写在最后
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
完成后,重新登陆或者source /etc/profile目录后,则可以编译安装mfs的client程序。
2.1.2 moosefs的安装
mfs-1.6.15.tar.gz,在http://sourceforge.net/projects/moosefs/中下载,放到/home/XXXX/opdir/software目录中。
$ tar xvzf mfs-1.6.15.tar.gz
$ cd mfs-1.6.15
$ source /etc/profile
$ ./configure --prefix=/home/XXXX/local/mfs --with-default-user=XXXX --with-default-group=XXXX --enable-mfsmount
$ make
$ make install
说明:对于client端的程序,必须加--enable-mfsmount选项以编译mfsmount程序,且这台服务器需要安装fuse程序。master、chunk和metalogger服务器可以不加这个选项,并且不需要安装fuse程序。
2.1.3 加载fuse.ko内核模块
使用root将fuse.ko模块装入内核:
#cd /boot/fuse
#insmod fuse.ko
可以将该命令放入rc.local,使服务器重启时自动执行。
echo “insmod /boot/fuse/fuse.ko >> /etc/rc.local”
2.2 配置
在mfs编译安装后,会自动生成初始化配置示例文件。这些文件在${prefix}/etc目录中,并以.cfg.dist结尾。在使用前需要将文件拷贝成.cfg,即去掉.dist。
master、metalogger和chunk都有一系列的端口配置项,这些端口配置项需要互相匹配,这里简单起见,采用默认配置。对于默认配置,都是这些文件中初始的注释掉的内容,每一行前面的注释符号“#”无需删除。
2.2.1 metalogger的配置
metalogger有一个配置文件,mfsmetalogger.cfg:
$ cd /home/XXXX/local/mfs/etc
$ cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
需要修改的配置项如下:
BACK_LOGS = 24
META_DOWNLOAD_FREQ = 1
MASTER_HOST = IP地址或机器名
说明:
BACK_LOGS = 24 #changelog的数量,一小时一个,这个配置项的值与master中这个配置项的值保持一致
META_DOWNLOAD_FREQ = 1 #metalogger从master中下载metadata的周期,单位:小时。默认配置是24,表示每天从master中下载一次,此配置最小值是1
MASTER_HOST = IP地址或机器名 #此处配置master的域名或者IP地址

2.2.2 master的配置
master有两个配置文件,mfsmaster.cfg、mfsexports.cfg:
$ cd /home/XXXX/local/mfs/etc
$ cp mfsmaster.cfg.dist mfsmaster.cfg
$ cp mfsexports.cfg.dist mfsexports.cfg
1、mfsmaster.cfg需要修改的配置项如下:
BACK_LOGS = 24
说明:
BACK_LOGS = 24 # changelog的数量,一小时一个,这个配置项的值与metalogger中这个配置项的值保持一致
简单起见,其它配置项采用默认配置。
2、mfsexports.cfg需要修改的配置项如下:
简单起见,其它配置项采用默认配置。

2.2.3 chunk的配置
chunk有两个配置文件,mfschunkserver.cfg、mfshdd.cfg:
1、chunk的配置
$ cd /home/XXXX/local/mfs/etc
$ cp mfschunkserver.cfg.dist mfschunkserver.cfg
$ cp mfshdd.cfg.dist mfshdd.cfg
1、mfschunkserver.cfg需要修改的配置项如下:
MASTER_HOST = IP地址或机器名
说明:
MASTER_HOST = IP地址或机器名 #此处配置master的域名或者IP地址
2、mfshdd.cfg需要修改的配置项如下:
这个配置文件说明chunk服务器贡献出来的存储的路径,比如贡献出/home/XXXX/data这个目录,则在mfshdd.cfg文件中增加如下行:
/home/XXXX/data

2.3 启动与停止
启动顺序最好按照如下的顺序进行:
1、启动mfs:metalogger->master->chunk
2、client端使用mfs:mfsmount
3、说明:
(1)工作账户:metalogger、master、chunk可以使用configure是--default-user=XXXX这个参数中指明的默认工作账户启动。mfsmount因为是挂在文件系统,因此需要root用户运行。
(2)master启动后会定期检查是否有metalogger连过来,会定期检查chunk的状态;chunk启动后会主动去连master。
2.3.1 metalogger的启动与停止
1、运行命令:
(1)启动
$ cd /home/XXXX/local/mfs/sbin
$ ./mfsmetalogger start
或者
$ /home/XXXX/local/mfs/sbin/mfsmetalogger start
(2)停止
$ cd /home/XXXX/local/mfs/sbin
$ ./mfsmetalogger –s
或者
$ /home/XXXX/local/mfs/sbin/mfsmetalogger -s
2、日志:
#tail –f /var/log/messages | grep metalogger
3、说明:
mfsmetalogger程序运行时不加参数,则默认执行的动作是“停止->启动”。
2.3.2 master的启动与停止
mfs首次编译安装结束后,在启动mfsmaster之前,需要建立一个初始的metadata文件,使用自带文件即可:
$ cd /home/XXXX/local/mfs/var/mfs
$ cp metadata.mfs.empty metadata.mfs
1、运行命令:
(1)启动
$ cd /home/XXXX/local/mfs/sbin
$ ./mfsmaster start
或者
$ /home/XXXX/local/mfs/sbin/mfsmaster start
(2)停止
$ cd /home/XXXX/local/mfs/sbin
$ ./mfsmaster –s
或者
$ /home/XXXX/local/mfs/sbin/mfsmaster -s
2、日志:
#tail –f /var/log/messages | grep master
3、说明:
mfsmaster程序运行时不加参数,则默认执行的动作是“停止->启动”。
2.3.3 chunk的启动与停止
1、运行命令:
(1)启动
$ cd /home/XXXX/local/mfs/sbin
$ ./mfschunkserver start
或者
$ /home/XXXX/local/mfs/sbin/mfschunkserver start
(2)停止
$ cd /home/XXXX/local/mfs/sbin
$ ./mfschunkserver –s
或者
$ /home/XXXX/local/mfs/sbin/mfschunkserver -s
2、日志:
#tail –f /var/log/messages | grep chunkserver
3、说明:
mfschunkserver程序运行时不加参数,则默认执行的动作是“停止->启动”。
2.3.4 mfscgiserv的启动
mfscgiserv是python写的简易的webserver,mfs的web端监控系统的应用程序可以通过它供使用者使用。它需要在master服务器中运行,因为监控程序是监控本地启动的mfsmaster程序。
1、命令:
/home/XXXX/local/python/bin/python /home/XXXX/local/mfs/sbin/mfscgiserv
2、访问:
在浏览器地址栏中输入:http://master_ip:9425
或者
http://master_hostname:9425
这里面mfscgiserv的默认端口是9425
3、说明:
(1)监控程序放在${prefix}/share /mfscgi目录中,是cgi程序。
(2)监控程序也可通过部署apache来进行访问,以使用更多的webserver的特性。如将mfscgi目录放入/home/XXXX/local/apache/cgi-bin/目录中,访问方法如下:http://master_ip:apache_port/cgi-bin/mfscgi
或者
http://master_hostname:apache_port/cgi-bin/mfscgi
2.3.5 client挂载网络文件系统
由于是挂载文件系统,因此需要使用root执行命令:
1、挂载:
client端使用mfsmount命令挂载mfs,这个过程与nfs的挂载类似。这里client挂载时使用master的IP地址或者机器名。
$ cd /home/XXXX/local/mfs/bin
su -
# ./mfsmount /home/XXXX/var/mfs –H master_IP
2、卸载:
su –
#umount /home/XXXX/var/mfs
3、说明:
/home/XXXX/var/mfs是本地挂载点。client挂载mfs中的哪个目录,具有哪些权限(只读、只写、可读可写)与master中mfsexports.cfg配置文件的内容和client端使用mfsmount命令时的参数有关。

3 Moosefs的日常维护
3.1 master的主备切换
master的主备切换分为两个步骤:一是由metalogger恢复master;二是chunk和client端进行响应的处理。
3.1.1 metalogger恢复master
1、metalogger定期从master下载metadata文件,并实时记录changelog,但是这个“实时”究竟有多么的实时,还得再看看。这个下载metadata和记录changelog的工作有点类似sfrd客户端每天下载基准和导入增量。
2、master挂掉之后,使用metarestore命令将metalogger中的基准和增量变成master需要的metadata,然后启动mfsmaster。master和metalogger可以部署在同一台机器,也可以部署在不同机器。
3、metalogger恢复master时使用的命令:
$ cd /home/XXXX/local/mfs/sbin
$ ./metarestore –a
$ ./mfsmaster
4、说明:
(1)metalogger服务器中需要备份master的两个配置文件,由于配置文件不是经常变化,因此通过定时脚本进行文件同步即可。
(2)当metalogger没有下载metadata之前,不能使用期接管master。此时metarestore程序会运行失败。
(3)metarestore程序是根据metalogger中定期下载的metadata和changelog来恢复master挂掉时刻master所记录的整个mfs的信息。

3.1.2 chunk和client相应的修改
1、对于client,需要umount掉mfs分区后,重启mfsmount新的master的IP地址。如果master挂掉之后,经过(1)重启服务器(2)使用同一台机器中metalogger恢复master数据(3)启动master;则client端不需要重新手动进行mfsmount,因为mfsmount会自动重试。
2、对于chunk,可以逐个chunk修改配置文件中master的IP地址,然后进行重启。如果master挂掉之后,经过(1)重启服务器(2)使用同一台机器中metalogger恢复master数据(3)启动master;则chunk不需要重启,master会在自动检测chunk的时候检测到它。
3.2 metalogger的注意事项
1、部署metalogger的服务器的open files数目必须大于或者等于5000,
2、metalogger在启动时不会下载metadata,而是等到第一个下载周期的下载时间点时再去下载,metalogger下载metadata的时间点是每小时的10分30秒,时间间隔是1小时的整数倍。
3、metalogger不是在启动的时候就取下载metadata,而是必须等到下载时间点(2中所述)才会去下载。也就是说,metalogger为确保正确性,要在启动后最少一个小时以内master和metalogger都要保持良好的状态。

【本文首发于:百度运维空间http://hi.baidu.com/ops_bd/blog/item/1f783f04e97df1643812bb90.html
关注百度技术沙龙








运维网声明 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-670286-1-1.html 上篇帖子: Moosefs分布式存储 下篇帖子: 分布式系统三、MooseFS基础和安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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