MogileFS介绍:
MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的DangaInteracitve公司研发。可支持文件自动备非的功能,提供高可用性和高可扩展性。
MogileFS组件:
trackers:
MoglieFS的调度器,是mogileFS的核心,访问入口。
功能:1、replication:节点之间文件复制
2、deletion:空间数据删除
3、queryworker:响应客户端请求
4、reaper:在存储失败后将文件复制请求重新放到队列中
5、monitor:检测主机和设备dev的健康和状态
database:
功能:1、保存mogilefs的元数据,一般使用mysql,建议使用冗余方案以保证其可用性
2、mogilefs有专门组件mogdbsetup,可用于实现初始化数据库
storage:
功能:1、mogstored(进程名),一个准备好的mogstored节点,可通过mogadm加入到现有的集群中;
2、存储节点需要定义"设备"(dev),每个dev都有其唯一的ID号;
客户端:client
功能:客户端用于mogilefs建立通信的接口
MogileFS的特点:
1、工作于应用层
2、无单点
3、自动文件复制
4、传输中立,无线特殊协议(http和nfs)
5、名称空间
6、无须RAID,具有比RAID更好的可靠性
7、不共享任何数据
实验环境:
node1: 172.16.2.12
node2: 172.16.2.13
node3:172.16.2.14
node4:172.16.2.15
所需软件:
一、安装mogilefs-server
1、安装trakcers
[root@node1 mogilefs]# yum -y install MogileFS-* perl-MogileFS-Client-1.14-1.el6.noarch.rpm perl-Net-Netmask-1.9015-8.el6.noarch.rpm perl-Perlbal-1.78-1.el6.noarch.rpm Perlbal-1.78-1.el6.noarch.rpm
2、数据库用户授权
MariaDB [(none)]> GRANT ALL ON *.* TO 'root'@'172.16.2.1%' IDENTIFIED BY '123456' WITH GRANT OPTION; MariaDB [(none)]> FLUSH PRIVILEGES;
3、初始化数据库
[root@node1 ~]# mogdbsetup --dbhost=172.16.2.12 --dbport=3306 --dbname=mogilefs --dbrootuser=root --dbrootpass=123456 --dbuser=mogile --dbpass=mogpass --type=MySQL --yes
相关选择解释: --dbhost: mysql服务器地址 --dbport:mysql服务器的监听端口 --dbname: 创建用于mogilefs的数据的名称 --dbrootuser:root用户 --dbrootpass:root用户的密码 --dbuser:新创建的mogilefs数据库的管理用户 --dbpass:新创建的mogilefs的数据的管理用户密码 --type:指明数据库类型为mysql --yes:自动回答yes
4、修改mogilefs的配置文件
[root@node1 mogilefs]# vim /etc/mogilefs/mogilefsd.conf # Enable daemon mode to work in background and use syslog daemonize = 1 \\以独立守护进行运行 # Where to store the pid of the daemon (must be the same in the init script) pidfile = /var/run/mogilefsd/mogilefsd.pid \\pid文件存放路径 # Database connection information db_dsn = DBI:mysql:mogilefs:host=172.16.2.12 \\数据库地址 db_user = mogile \\mogilefs所授权的用户 db_pass = mogpass \\mogilfs所授权的用户密码 # IP:PORT to listen on for mogilefs client requests listen = 0.0.0.0:7001 \\修改为监听在所有地址 # Optional, if you don't define the port above. conf_port = 7001 \\定义监听端口,默认为7001 # Number of query workers to start by default. query_jobs = 10 \\默认启动10个查询线程 # Number of delete workers to start by default. delete_jobs = 1 \\默认求启动1个删除线程 # Number of replicate workers to start by default. replicate_jobs = 5 \\默认启动5个复制线程 # Number of reaper workers to start by default. # (you don't usually need to increase this) reaper_jobs = 1 \\响应客户端请求,在磁盘失败后将文件复制请求重新放到队列中 # Number of fsck workers to start by default. # (these can cause a lot of load when fsck'ing) #fsck_jobs = 1 \\检查磁盘设备是否损坏,默认没有启用 # Minimum amount of space to reserve in megabytes # default: 100 \\默认保留100M空间 # Consider setting this to be larger than the largest file you # would normally be uploading. #min_free_space = 200 \\最小空闲空间200M # Number of seconds to wait for a storage node to respond. # default: 2 \\等待存储节点响应的时间,默认为2s # Keep this low, so busy storage nodes are quickly ignored. #node_timeout = 2 \\等待节点超时时长 # Number of seconds to wait to connect to a storage node. # default: 2 \\连接存储节点的超时时长 # Keep this low so overloaded nodes get skipped. #conn_timeout = 2 # Allow replication to use the secondary node get port, # if you have apache or similar configured for GET's #repl_use_get_port = 1
5、启动mogilefs
[root@node1 ~]# /etc/init.d/mogilefsd start
6、查看监听端口:默认为7001
[root@node1 ~]# netstat -tpln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 977/sshd tcp 0 0 0.0.0.0:7001 0.0.0.0:* LISTEN 4773/mogilefsd
二、安装配置mogilefs-client
1、安装mogilefs-client
[root@node2 mogilefs]# yum -y install MogileFS-* Perlbal-1.78-1.el6.noarch.rpm perl-MogileFS-Client-1.14-1.el6.noarch.rpm perl-Net-Netmask-1.9015-8.el6.noarch.rpm perl-Perlbal-1.78-1.el6.noarch.rpm perl-IO-AIO
2、各存储节点准备好存储块设备,然后分区格式化
[root@node2 ~]# fdisk -l | grep "/dev/sdb1" /dev/sdb1 1 1306 10490413+ 83 Linux [root@node3 ~]# fdisk -l | grep "/dev/sdb1" /dev/sdb1 1 1306 10490413+ 83 Linux
3、创建挂载点
[root@node2 mogilefs]# mkdir /mogilefs;chown -R mogilefs.mogilefs /mogilefs
4、设置自动挂载设备
[root@node2 mogilefs]# cat /etc/fstab | grep "^/dev/sdb1" /dev/sdb1 /mogilefs ext4 defaults 0 0 [root@node2 mogilefs]# mount -a
5、修改mogstored的配置文件
[root@node2 mogilefs]# cat /etc/mogilefs/mogstored.conf maxconns = 10000 \\定义最大连接数 httplisten = 0.0.0.0:7500 \\定义httpd监听端口 mgmtlisten = 0.0.0.0:7501 \\定义mgm的监听端口 docroot = /mogilefs \\修改为存储设备的挂载点
6、启动mogstorage服务
[root@node2 mogilefs]# netstat -tpln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:7500 0.0.0.0:* LISTEN 1512/mogstored tcp 0 0 0.0.0.0:7501 0.0.0.0:* LISTEN 1512/mogstored
7、配置node3节点
mode3与node2节点的配置一样,这里就不在描述了
三、在trackers节点添加存储节点
1、在存储节点创建共享块设备
[root@node2 ~]# mkdir /mogilefs/dev1;chown -R mogilefs.mogilefs /mogilefs/ [root@node3 ~]# mkdir /mogilefs/dev2;chown -R mogilefs.mogilefs /mogilefs/
2、将存储节点添加到trackers
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 host add node2.linux.com --ip=172.16.2.13 --status=alive [root@node1 ~]# mogadm --trackers=172.16.2.12:7001 host add node3.linux.com --ip=172.16.2.14 --status=alive
3、查看添加的主机状态
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 host list node2.linux.com [1]: alive IP: 172.16.2.13:7500 node3.linux.com [2]: alive IP: 172.16.2.14:7500
4、添加块设备到trackers
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 device add node2.linux.com 1 [root@node1 ~]# mogadm --trackers=172.16.2.12:7001 device add node3.linux.com 2 注意:1或者2要与存储节点创建的dev#(dev1,dev2)一致
5、查看添加的块设备信息
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 device list node2.linux.com [1]: alive used(G) free(G) total(G) weight(%) dev1: alive 0.021 9.200 9.222 100 node3.linux.com [2]: alive used(G) free(G) total(G) weight(%) dev2: alive 2.162 32.931 35.093 100
6、创建domain
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 domain add mylinux \\新添加mylinxu域 [root@node1 ~]# mogadm --trackers=172.16.2.12:7001 domain list \\查看域信息 domain class mindevcount replpolicy hashtype -------------------- -------------------- ------------- ------------ ------- mylinux default 2 MultipleHosts() NONE
7、添加class
[root@node1 ~]# mogadm --trackers=172.16.2.12:7001 class add mylinux linux \\在mylinux中添加linux 类 [root@node1 ~]# mogadm --trackers=172.16.2.12:7001 class list \\查看类信息 domain class mindevcount replpolicy hashtype -------------------- -------------------- ------------- ------------ ------- mylinux default 2 MultipleHosts() NONE mylinux linux 2 MultipleHosts() NONE
8、上传图片到存储节点
[root@node1 ~]# mogupload --trackers=172.16.2.12:7001 --domain=mylinux --key='/1.jpg' --file='./1.jpg'
9、查看图片上传之后的信息
[root@node1 ~]# mogfileinfo --trackers=172.16.2.12:7001 --domain=mylinux --key='/1.jpg' - file: /1.jpg class: default devcount: 2 domain: mylinux fid: 2 key: /1.jpg length: 13224 - http://172.16.2.13:7500/dev1/0/000/000/0000000002.fid - http://172.16.2.13:7500/dev1/0/000/000/0000000002.fid \\在浏览器中访问上面路径可以浏览到上传的图
访问测试:
四、编译配置Nginx
1、编译安装Nginx
[root@node4 mogile]# tar xf nginx-1.8.0.tar.gz -C /usr/src [root@node4 mogile]# tar xf nginx_mogilefs_module-1.0.4.tar.gz -C /usr/src [root@node4 src]# cd nginx-1.8.0/ [root@node4 nginx-1.8.0]# useradd nginx [root@node4 nginx-1.8.0]#./configure \ --prefix=/usr \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi \ --with-pcre \ --with-debug \ --add-module=..//nginx_mogilefs_module-1.0.4/ [root@node4 nginx-1.8.0]# make;make install
2、nginx启动脚本:
3、编辑nginx配置文件,使其支持mogilefs
[root@node4 ~]# vim /etc/nginx/nginx.conf location /image { mogilefs_tracker 172.16.2.12:7001; mogilefs_domain mylinux; mogilefs_pass { proxy_pass $mogilefs_path; proxy_hide_header Content-Type; proxy_buffering off; } }
4、测试nginx配置语法,并启动nginx
[root@node4 ~]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@node4 ~]# /etc/init.d/nginx start
5、打开浏览器访问测试:
知识扩展:
MogileFS-Utils相关命令介绍: mogupload:用于上传文件的命令 mogfileinfo:用于查看上传文件的信息 mogadm管理命令: check:检查主机信息 stats:查看主机信息 host:添加、修改trackers中的主机 device:添加、修改存储节点 domain:添加、修改域信息 class:填写、修改类等信息 slave:从节点的信息 fsck:检查修复提供的存储节点 rebalance:调整节点之间存储不平衡等信息 setting:mogilefs的设置信息
nginx的mogilefs的第三方模块使用地址:
http://www.grid.net.ru/nginx/mogilefs.en.html
原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/6812