我有如下三个节点:
Node110.10.92.51 192.168.10.43
Node210.10.92.52 192.168.10.45
Node310.10.92.53 192.168.10.46
其中10.10.92.*的ip为云平台管理使用的ip,192.168.10.*为局域网ip
Moosefs主要有4种角色,master,chunk,metalog,client,四种角色的功能,出门右转自行百度。
我将Node1节点部署为master,metalog,chunk1
Node2节点部署为chunk2和client1
一、安装方法
这里为了简单起见所有节点都按照client模式,该模式下会将四种角色所需要的东西全部安装。
目录我选择的安装目录/usr/local/,可以根据个人习惯指定其他
1.下载
wgethttp://pro.hit.gemius.pl/hitredir/id=.WCbG2t.7Ln5k1s3Q9xPg8cPfX.wVMc5kyXfrKcJTDH.c7/url=moosefs.org/tl_files/mfscode/mfs-1.6.27-1.tar.gz
2.解压及添加用户
tar-zxvf mfs-1.6.27-1.tar.gz
cdmfs-1.6.20
useraddmfs -M -s /sbin/nologin
3.安装依赖fuse
依赖fuse
Centos系统直接yum就行
yum –y install fuse-devel
4.配置文件及安装
./configure--prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs--enable-mfsmount&&make&&make install
解释一下:prefix指定安装的目录;接下来指定的是运行mfs的用户和组;--enable-mfsmount是强制编译mfs的客户端工具mfsmount;用这样的编译参数编出来的mfs系统,master,chunkserver,client三个工具都包含了。笔者个人比较偏好这种方式。当然如果你的服务器分工很明确,master只编译master的包,chunkserver只编译chunkserver的包也可以:
--disabe-mfsmater这样就禁用了master;
--disable-mfschunkserver就禁用了chunkserver;
--disable-mfsmount这样就强制禁用了mfsmount,默认情况下是检测到已经安装fuse才自动安装mfsmount
二、配置
1.master
文件夹etc/mfs中包含所有配置文件,将dist后缀去掉就是配置文件,建议使用cp命令复制可以方便配置坏后还原,对于master而言配置文件需要的是如下三个mfsmaster.cfg、mfsexports.cfg、mfstopology.cfg
mfsmaster.cfg
主配置文件mfsmaster.cfg 原始内容:
#WORKING_USER = mfs #运行master server 用户
# WORKING_GROUP = mfs #运行master server 组
# SYSLOG_IDENT = mfsmaster #master server 在syslog中的标识,说明是由master产生的
# LOCK_MEMORY = 0 #是否执行mlockall()避免mfsmaster 进程溢出(默认为0)
# NICE_LEVEL = -19 #运行的优先级(如果可以默认-19;注意:进程必须是用root启动)
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg #被挂接的目录及其权限控制文件的存放位置
# DATA_PATH = /usr/local/mfs/var/mfs #数据存放路径,此目录分三类文件,changelog ,sessions和stats,这里我自行在改为了/data/mfs,该路径用mkdir设置,而且把该文件夹权限为777
# BACK_LOGS = 50 #metadata的改变log文件数目(默认是50)
# REPLICATIONS_DELAY_INIT = 300 #延迟复制的时间(默认是300s)
# REPLICATIONS_DELAY_DISCONNECT = 3600 #chunkserver 断开的复制延迟(默认是3600)
# MATOCS_LISTEN_HOST = * #metalogger
监听的ip地址(默认是*,代表任何ip),这个host需要改为192字段ip防止云平台下通信出错
# MATOCS_LISTEN_PORT = 9419 #metalogger 监听的端口地址(默认是9419)
# MATOCS_LISTEN_HOST = * #用于chunkserver连接的ip地址(默认是*,代表任何ip),这个host需要改为192字段ip防止云平台下通信出错
# MATOCS_LISTEN_PORT = 9420 #用于chunkserver 连接的端口地址(默认是9420)
# MATOCU_LISTEN_HOST = * #用于客户端挂接的ip地址(默认*,代表任何ip),这个host需要改为192字段ip防止云平台下通信出错
# MATOCU_LISTEN_PORT = 9421 #用于客户端挂接连接的端口地址(默认9421)
# CHUNKS_LOOP_TIME = 300 #chunksde 回环频率(默认是:300秒)
# CHUNKS_WRITE_REP_LIMIT = 1 #在一个循环里复制到一个chunkserver的最大chunk数目
# CHUNKS_READ_REP_LIMIT = 5 #在一个循环里从一个chunkserver复制的最大chunk数目
CHUNKS_READ_REP_LIMIT = 0 弹出低于1.6.0的客户端挂接(0或1,默认是0
置文件mfsexports.cfg 指定那些客户端主机可以远程挂接MFS文件系统,以及授权挂接客户端什么样的访问权限
mfsexports.cfg 的文件每一个条目分为三部分;
第一部分:mfs客户端的ip地址或地址范围
地址可以指定的几种表现形式
* #所以的ip地址
n.n.n.n #单个ip地址
n.n.n.n/b #ip网络地址/位数掩码
n.n.n.n/m.m.m.m #ip网络地址/子网掩码
f.f.f.f-t.t.t.t #ip段
第二部分:被挂载的目录
目录部分需要注意两点
/标识 Moosefs 根
.表示mfsmeta文件系统
第三部分:设置mfs客户端可以拥有的访问权限
权限部分:
ro #只读模式共享
rw #读写的方式共享
alldirs #允许挂载任何指定的子目录
maproot #映射为root,还是指定的用户
password #指定客户端密码
mfsexports.cfg 实际配置我未做修改,目前没有任何限制,后期可以根据需要增加许多限制
!!!注意#为注释,使配置生效需要去掉#并保存
配置好上述两个文件此时还差最后一步就是如下
cp /usr/local/mfs/var/mfs/metadata.mfs.empty /data/mfs/metadata.mfs
没有这一步一定会报错
现在可以启动master了,所有的服务端启动命令都在./sbin中,找到
./mfsmaster 启动,
./mfsmaster stop 关闭
2.备份服务器 Backup(metalog)配置
配置文件只有一个mfsmetalogger.cfg
步骤同上
cp/usr/local/mfs/etc/mfsmetalogger.cfg.dist /usr/local/mfs/etc/mfsmetalogger.cg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH =/usr/local/mfs/var/mfs
# BACK_LOGS = 50
# META_DOWNLOAD_FREQ = 24 #元数据备份文件下载请求,默认24小时,每隔一天从元数据服务器,下载一个metadata,mfs.bak
.当元数据服务器关闭或者故障,metedata.mfs.bak文件将消失,那么要恢复整个mfs,则需从metalogger服务器取得该文件,请特别注意
这个文件,它与日志文件一起,才能够恢复整个被破坏的分布式文件系统
# MASTER_RECONNECTION_DELAY = 5
MASTER_HOST = mfsmaster.etiantian.org #这里是需要连接的mfs master的主机IP或者域名,按照需求我改为192.168.10.43即node1节点
# MASTER_PORT = 9419 #这里是需要连接的mfs master 的port
# MASTER_TIMEOUT = 60
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
配置好后即可以启动
/usr/local/mfs/sbin/mfsmetalogger启动
/usr/local/mfs/sbin/mfsmetaloggerstop 停止
3.配置chunk即数据服务器
配置mfschunkserver.cfg 主配置文件两个mfschunkserver.cfg、mfshdd.cfg
cp /usr/local/mfs/etc/mfschunkserver.cfg.dist/usr/local/mfs/etc/mfschunkserver.cfg
cp /usr/local/mfs/etc/mfshdd.cfg.dist /usr/local/mfs/etc/mfshdd.cfg
mfschunkserver.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
#SYSLOG_IDENT = mfsmaster.etiantian.org #指定主机
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfs/var/mfs
#数据存放路径,此目录分三类文件,changelog ,sessions 和stats,这里我自行在改为了/data/mfs,该路径用mkdir设置,而且把该文件夹权限为777
# MASTER_RECONNECTION_DELAY = 5
# BIND_HOST = * #为防止连接错误,这里配置为192.168.10.45
# MASTER_HOST = mfsmaster #配置为192.168.10.43即node1
# MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = * #为防止连接错误,这里配置为192.168.10.45
# 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
echo 192.168.66.100 mfsmaster.etiantian.org >>/etc/hosts
配置mfshdd.cfg 主配置文件
[root@mysql1 etc]# cat mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/data #该目录是我自己创建的用于真正存储文件,需要将权限改为777
配置好后启动chunk
/usr/local/mfs/sbin/mfschunkserver 启动
/usr/local/mfs/sbin/mfschunkserver stop 停止
4.Client
首先建立目录
mkdir /mnt/mfs
启动fuse
modprobe fuse
所有client的命令全在/usr/local/mfs/bin文件中
/usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.10.43
此时不在master所在节点node1的client一定连接不上,原因两点,一、本地服务器的iptables是否关掉,二、云平台防火墙端口9421是否打开这里为了webUI及方便以后配置端口,平台将9400-9490端口全部打开了。
三、监控命令
lsof–i
tail-f /var/log/messages
mfs自带基于apache的小型webUI在端口9425打开的情况下可以在浏览器查看
在master中启动webUI
/usr/local/mfs /sbin/mfscgiserv -H 192.168.10.43
这里由于没有安装apache需要自己改一下python代码
vim /usr/local/mfs/share/mfscgi/mfs.cgi
这是我改的
不对的地方,还请各位大神指正!!!