您的位置:首页 > 运维架构 > 反向代理

Linux之使用MogileFS分布式文件系统并使用nginx实现反向代理

2017-05-10 19:58 489 查看
MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。

MogileFS的特性:

工作在应用层,无单点,自动文件复制(复制的最小单位是class,而不是文件),传输中立且使用nfs或者http协议进行传输。

MogileFS的结构组成:



tracker:是mogilefs的核心,是一个调度器,通过数据库来保存元信息,包括daemon,class,host等信息,主要职责:监控后端mogstore节点,并指示store节点完成数据的添加,删除,查询,及节点之间的复制.

mogstore:实际数据的存储位置,通常伪一个http服务器.

database:用来保存节点的全局信息.

1.安装MogileFS

a.下载MogileFS

MogileFS-Server:https://github.com/mogilefs/MogileFS-Server

MogileFS-Utils:https://github.com/mogilefs/MogileFS-Utils

perl-MogileFS-Client:https://github.com/mogilefs/perl-MogileFS-Client

b.安装:

将文件解压并进入文件内

>make Makefile.PL
>make && make install
>yum install perl-IO-AIO


2.配置文件讲解

*为trakcer配置数据库,并在数据库中创建表,事先在数据库中创建好trakcer访问数据库的用户和密码并给权限。
mysql> grant all on mogilefs.* to "moguser"@"172.16.113.*" IDENTIFIED by "mogpasswd";
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH   PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
[root@Master mogilefs]mogdbsetup --dbhost=172.16.113.157 --dbport=3306  --dbname=mogilefs  --dbrootuser=root  --dbrootpass=kairui00544ok --dbuser=moguser --dbpass=mogpasswd --yes --type=mysql
参数解答:
dbhost:指定mysql服务器的地址
dbport:指定端口默认为mysql
dbrootuser:指定root
dbuser:tracker使用mysql的普通用户,事先要创建好此用户并授权
dbpass:普通用户的密码
type:指定数据库的类型,默认问mysql

[root@Master mogilefs]# ll /etc/mogilefs/
总用量 8
-rw-r--r--. 1 root root 1463 5月   9 21:35 mogilefsd.conf
-rw-r--r--. 1 root root   92 8月  19 2013 mogstored.conf
*mogilefsd.conf为tracker进程的配置文件
daemonize = 1    **后台运行**
pidfile = /var/run/mogilefsd/mogilefsd.pid **mogfiled进程运行时使用的pid文件**
db_dsn = DBI:mysql:mogilefs:host=172.16.113.157  **使用的数据**
db_user = moguser     **访问数据库的普通用户**
db_pass = mogpasswd
listen = *:7001     **mogilefsd进程监听的端口**
conf_port = 7001      **配置端口**
query_jobs = 10       **工作线程的个数,指查询数据库的线程个数**
delete_jobs = 1       **用于删除的线程个数**
replicate_jobs = 5    **复制的线程个数**

*mogstore.conf为mogstore节点进程的配置文件
maxconns = 10000      **最大并发连接数**
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /mog/mogdata    **数据的存放位置**


3.启动并测试

1.创建/var/run/mogilefsd目录并修改属组属主
[root@Master mogilefs]# mkdir -p  /var/run/mogilefsd
[root@Master mogilefs]# chown -R mogilefs.mogilefs /var/run/mogilefsd/
2.创建/mog/mogdata目录并修改属组属主
[root@Master mogilefs]# mkdir -p /mog/mogdata
[root@Master mogilefs]# chown -R mogilefs.mogilefs /mog/mogdata/
3.启动mogilefsd进程和mogstored进程
[root@Master mogilefs]# service mogilefsd start
Starting mogilefsd                                         [确定]
[root@Master mogilefs]# service mogstored start
Starting mogstored                                         [确定]
**此处的启动脚本是使用rpm包安装,并且自带的,一般使用make安装的没有服务脚本**


4.使用管理工具配置mogstord节点主机

管理工具mogadm命令产用参数详解
>mogadm   parameter
parameter:
check:检测tracker主机
host list:显示mogstore主机
host add <hostname> [option]:将mogstore加入tracker
--altip:备用节点
--ip:
--port:
--status:加进来的主机状态,{alive,down},默认为down
device list:显示主机的设备情况,如一共多少,使用了多少
device add <hostname> <devid> [option]:添加设别到主机
--devid=设别号,不要重复
--status:默认伪alive
domain list:显示主机的域
domain add <domain_name>:添加一个域
class list:显示类
class add <domain> <class_name> [option]
--hashtype:指定hash的方式,默认伪MD5
--mindevconut:副本保持最小数
--replpolicy:复制策略
配置mogstroke:
1.添加主机
[root@Master mogilefs]#mogadm host add  mog1 --ip=172.16.113.157 --port=7500 --status=alive
2.为主机添加设备,同时mogstored主机上要实现创建好设备,并且从启动节点
[root@Master mogilefs]# mogadm device add mog1 001
[root@Master mogdata]# mogadm device list
mog1 [1]: alive  used(G)    free(G)   total(G)  weight(%)
dev1: alive      0.557      8.441      8.998      100
3.添加域
[root@Master mogdata]# mogadm domain add file
[root@Master mogdata]# mogadm domain list
domain   class        mindevcount   replpolicy   hashtype
-------------------- -------------------- -------------
file    default          2        MultipleHosts() NONE
4.添加类
[root@Master mogdata]# mogadm class add file class1
[root@Master mogdata]# mogadm class list
domain      class     mindevcount   replpolicy   hashtype
-------------------- -------------------- -------------
file      class1          2        MultipleHosts() NONE
file     default          2        MultipleHosts() NONE

5.上传文件:mogupload
格式:mogupload --trackers=host --domain= --key=‘’ --file=‘上传文件’
[root@Master dev1]# mogupload --trackers=172.16.113.157 --domain=file --key='fstab.html' --file='/etc/fstab'

6.查看节点上的文件:moglistkeys
格式:moglistkeys  --trackers=host  --domain=
[root@Master dev1]# moglistkeys --trackers=172.16.113.157 --domain=file
fstab.html

7.获取文件的保存路径:mogfileinfo
格式:mogfileinfo  --trackers=host  --domain --key
[root@Master dev1]# mogfileinfo --trackers=172.16.113.157 --domain=file --key='fstab.html'
- file: fstab.html
class:              default
devcount:                    1
domain:                 file
fid:                    3
key:           fstab.html
length:                  993
- http://172.16.113.157:7500/dev1/0/000/000/0000000003.fid    **文件实际访问位置**

8.下载文件:mogfetch
格式:mogfetch  --trackers=host  --key --file=‘下载之后放在哪里’
9.删除文件:mogdelet
格式:mogdelet  --trackers=host  --domain --key


5.使用浏览器访问



这样一个mogilefs分布式存储就设置好了,只是mogilefsd进程和mogstored进程在统一主机上。

6.负载均衡设计结构



7.使用nginx实,现反向代理

使用nginx反向代理mogilefs时,要用到第三方模块在能使实现代理,nginx身不支持mogilefs的代理,下载模块快为nginx_mogilefs_module,下载地址:http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.4.tar.gz

1.安装nginx,一定要编译安装,同时编译进第三方模块
[root@clone3 nginx-1.11.12]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --conf-path=/etc/nginx.d --sbin-path=/usr/local/bin --with-http_ssl_module  --with-http_stub_status_module --add-module=/home/lirui/nginx_mogilefs_module-1.0.4
[root@clone3 nginx-1.11.12]# make && make install
2.配置nginx配置文件
vim /etc/nginx.d/nginx.conf
upstream online_tracker{
server 171.16.113.157:7001;
server 171.16.113.160:7001;
}
server{
location ~ /file {
mogilefs_tracker online_tracker;
mogilefs_domain file;
mogilefs_methods GET PUT DELETE;
mogilefs_noverify on;
mogilefs_class calss1;
mogilefs_pass {
proxy_pass $mogilefs_path;
proxy_hide_header Content-Type;
proxy_buffering off;
}
}
}
**详细参数请参考官方文档:http://www.grid.net.ru/nginx/mogilefs.en.html**


8.配置两台mogilefs主机

在配置两台主机是,mogilefsd进程会在数据库中读取mogstord节点的信息,在配置时按照上述阐述仅可以配置,建议在一个mogilefsd节点上配置,另一个节点可以在数据库中读到。

9.测试结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx linux mogilefs