当前位置: 首页 > 工具软件 > MooseFS > 使用案例 >

moosefs php,轻量级分布式系统-moosefs介绍

阎枫涟
2023-12-01

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恢复master1、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都要保持良好的状态。

 类似资料: