Mogilefs配置以及nginx代理mogilefs

MogileFS:是一个开源的分布式存储,适用于存储海量的小文件。由LiveJournal旗下的Danga Interactive。这个公司还有memcache , MogileFS, Perlbal(http代理)等产品。其特点如下:

1,工用于应用层(用户空间):无须特殊的核心组件,因为基于http或都nfs,一般客户端都支持。

2,无单点故障所在,假设MySQL已经高可用并且tracker为多个节点。因为MySQL是否高可用,取决于MySQL。

3,自动文件复制,用户在上传一份数据都,tracker会根据设定好的策略自动复制一份或多份其它节点。假如其中一个节点故障,tracker会自动把数据复制一份,做到数据一直有冗余。如果使用中增加一个节点,需要手动做策略把那些节点的数据与新加入的节点做平均。

4,比“RAID”好多了,因为其实现了主机间的冗余。官方就这么解释的!

5,传输中立,无特殊协议。传输中用的是http协议或nfs协议。

6,命名空间比较简单。使用域(domain)来表示名称空间的。每个文件对应于一个KEY,文件存储的机制是一个值。是以 key-value 对儿在任的。KEY是一个全局名称空间,可以使用domain模拟实现目录级别,也可以把所有文件放在一个平面。

7,不依赖于任何共享存储设备。使用系统上的一般存储就可以。

MogileFS的组件:

跟踪节点,Tracker : Mogilefsd进程,主控制进程,。其实现的功能包括:文件的复制,文件的删除,查询文件是否存储,监控一个文件存储的位置是否正常等等。这个进程工作于元数据节点。

存储节点(storage nodes),由mogstored进程监听于套接字上。文件实际存储的位置。其实质上是一个http服务器。基于WebDAV模式工作。能够实现创建,删除,重命名等操作。其实现方式是把一个大容量的磁盘挂载上,然后上传下载数据。

MySQL节点:用于为tracker存储元数据信息:为mogilefs的名称空间及文件名。

MogileFS自带了很多管理文件的工具。



安装配置过程。

安装完成后,需要在mysql为mogliefs授权一个用户,让其对mogilefs库有全部权限。此数据库主要用来存储node数据。如果tracker与mysql在一台服务器上,需要对本机的主机名进行授权。

MariaDB [mogilefs]> grant all on *.* to ‘root‘@‘172.16.2.%‘ identified by ‘mogpass‘;

MariaDB [mogilefs]> grant all on *.* to ‘mogilefs‘@‘172.16.2.%‘ identified by ‘mogpass‘;

MariaDB [mogilefs]> grant all on *.* to ‘root‘@‘firewall‘ identified by ‘mogpass‘;

MariaDB [mogilefs]> grant all on *.* to ‘root‘@‘172.16.2.%‘ identified by ‘mogpass‘;

MariaDB [mogilefs]> flush privileges;

注:如果tracker与mysql在一个节点上,需要为本机的主机名授权,因为mysql在验证时会验证主机名。

msql授权完成后,在tracker上初始化数据库

# mogdbsetup --dbhost=172.16.2.13 --dbport=3306 --dbname=mogilefs --dbrootuser=root --dbrootpass=mogpass --dbuser=moguser --dbpass=mogpass

修改配置文件 ,大概如下:

# grep ‘^[^#]‘ /etc/mogilefs/mogilefsd.conf

daemonize = 1                                     #是否运行为守护进程,1表示为真

pidfile = /var/run/mogilefsd/mogilefsd.pid

db_dsn = DBI:mysql:mogilefs:host=172.16.2.13        #指定连接数据库,mogilefs为数据库名。

db_user = moguser                                    连接mysql时使用的用户

db_pass = mogpass                                    连接mysql时使用的密码

listen = 172.16.2.16:7001                            tracker端监听的ip和tcp端口,默认就是7001

conf_port = 7001

query_jobs = 10                最多的查询线程数

delete_jobs = 1                 用于删除文件的线程数最多有几个。1 比较妥当

replicate_jobs = 5

reaper_jobs = 1

min_free_space = 200      最小的利于空间,以m为单位

# service mogilefsd start

# chkconfig mogilefsd on      确保tracker的服务能开机自动启动

# ss -tnl   查看是否有7001端口处于监听

mogilefd配置端口处理监听后,到mogstor上安装配置。第个存储节点都需要执行下面的操作

# yum -y install  perl-Net-Netmask-1.9015-8.el6.noarch.rpm perl-Net-Netmask-1.9015-8.el6.noarch.rpm  MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm MogileFS-Utils-2.19-1.el6.noarch.rpm   perl-MogileFS-Client-1.14-1.el6.noarch.rpm

# yum -y install perl-IO-AIO    这个模块必须要安装。

把准备用于存储的磁盘格式化挂载,把用户和组都设置为mogilefs。然后修改配置文件/etc/mogilefs/mogstored.conf

maxconns = 10000                  最大并发连接数

httplisten = 172.16.2.100:7500        监听地址

mgmtlisten = 172.16.2.100:7501     管理地址

docroot = /mogiled/data                文件存储的位置,生产环境中应当为挂载的整个磁盘。

# mkdir -pv  /mogiled/data  && chwon -R  mogilefs.mogilefs /mogiled/data

# service mogstored star  如果启动不了,可能是mogilefs用户没有创建。添加用户就可以了。

# chkconfig mogstroed on        让存储服务开机自动启动。

# ss -tnl     查看配置文件中定义的端口是否启动。

数据存储端配置好后到tracker 上把存储端加入到本分布式系统中。有多少个就加多少个。输入mogadm 就会显示这命令的使用方法。这个命令可以

# mogadm --trackers=172.16.2.16:7001 host add s2 --ip=172.16.2.100 --status=alive

# mogadm --trackers=172.16.2.16:7001 host list

添加好节点后为各个节点添加设备

# mogadm --trackers=172.16.2.16:7001 device add s3 dev3

# mogadm --trackers=172.16.2.16:7001 device list             如果像下面显示,没有显示容量等信息,说明mogstored端存储目录下没有与设备ID同名的目录,且这个目录的属主和属组应当为mogliefs

# mogadm --trackers=172.16.2.16:7001 device summary  查看各个设备的摘要信息。

注:如果显示不出设备的摘要信息,需要在各个存储节点下 docroot = /mogiled/data 所指定的路径下创建一个名字与设备名同名的目录,并且属主和属组是 mogilefs。

# mogadm --trackers=172.16.2.16:7001 device list

添加domain   domain是用来创建名称空间的,每个文件都需要用key来标记,每个文件在名称必须惟一。

# mogadm --trackers=172.16.2.16:7001 domain add "images"

# mogadm --trackers=172.16.2.16:7001 domain list

class 是mogilefs中最小的复制单位。创建class如果有需要可以指定复本存储几份。

上传文件测试,在任意一台节点上执行都可以。

# mogupload --trackers=172.16.2.16:7001 --domain=/images/ --key=‘/images/bg.png‘ --file=‘/usr/share/backgrounds/default.png‘

# mogfileinfo --trackers=172.16.2.16:7001 --domain=/images/ --key=‘/images/bg.png‘

复制红框里的任意一条到浏览器中访问,可以访问到此文件了。

由于存储节点的mogiled使用的是 WebDAV机制,它允许使用http的 put , delete方法管理文件。这里全用curl模仿一下。

其它的命令

mogfetch 下载文件

mogupload  上传文件

mogrename 生命名

moglistkey 例出所有的key

# moglistkeys --trackers=172.16.2.16:7001 --domain=test

# moglistkeys --trackers=172.16.2.16:7001 --domain=test  --key_prefix=‘/images‘ 查看以images开头的。

# mogstats --db_dsn="DBI:mysql:mogilefs:host=172.16.2.13" --db_user="moguser" --db_pass="mogpass" --verbose    查看数据库中主机信息,domain,class,文件个数等。

让nginx代理mogilefs

编译安装

# yum -y groupinstall "Development tools" "Server Platform Development"

# yum -y install gcc

# yum -y install pcre-devel

# yum -y install bzip2-devel

# wget http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.4.tar.gz

# wget http://nginx.org/download/nginx-1.7.3.tar.gz

# tar -xvf nginx_mogilefs_module-1.0.4.tar.gz

# tar -xvf nginx-1.7.3.tar.gz

# cd nginx-1.7.3

# ./configure --prefix=/usr/local/ --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/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/uwscgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre --with-debug --add-module=../nginx_mogilefs_module-1.0.4

--add-module=../nginx_mogilefs_module-1.0.4 用来添加模块的选项

注:用nginx_mogilefs_module-1.0.4版本,1.0.2有问题。

# make && make install

# useradd -r nginx

# vim /etc/init.d/nginx  提供一个服务管理脚本

官方提供的适用于red hat 系统的脚本:http://wiki.nginx.org/RedHatNginxInitScript

# chmod +x /etc/init.d/nginx

# service nginx start

# vim nginx.conf

官方 配置说明 http://www.grid.net.ru/nginx/mogilefs.en.html

本次实验的配置

----------------------------------------------------------------------------------------

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

upstream trackers {                定义后端的服务器组

server 172.16.2.10:7001;

server 172.16.2.14:7001;

server 172.16.2.16:7001;

}

server {

listen 80;

server_name localhost;

client_max_body_size 500m;      允许客户端上传文件最大为500M

location / {

root html;

index index.html index.htm;

}

location /file {                                        定义一个URL,对此URL使用mogilefs模块

mogilefs_tracker trackers;            调用后端服务器

mogilefs_domain file;

mogilefs_methods  GET DELETE;        允许使用的方法,由于这个版本的nginx不支持上传,所以没写put

mogilefs_pass {

proxy_pass $mogilefs_path;

proxy_hide_header Content-Type;

proxy_buffering off;

}

}

location /images {

mogilefs_tracker trackers;

mogilefs_domain images;

mogilefs_methods GET DELETE;

mogilefs_pass {

proxy_pass $mogilefs_path;

proxy_hide_header Content-Type;

proxy_buffering off;

}

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

-------------------------------------------------------------------------

测试阶段

上传一个文件

# mogupload --trackers=172.16.2.10:7001 --domain=images --key=‘/test.jpg‘ --file=‘/usr/share/backgrounds/centos_1920x1200_logoonly.jpg‘

在浏览器中使用http://172.16.2.18/images/test.jpg访问。

使用crul模拟测试删除文件。

# curl -X DELETE http://172.16.2.18/images/test.jpg

时间: 2024-10-12 18:43:10

Mogilefs配置以及nginx代理mogilefs的相关文章

nginx代理mogilefs集群实现

nginx代理mogilefs集群实现 一.实验拓扑 二.实验环境 三.实验步骤 1.节点部署 192.168.0.3 node1 [Nginx,Tracker,Storage,Mariadb] 192.168.0.4 node2 [Tracker,Storage] 192.168.0.5 node3 [Tracker,Storage] 2.初始化工作 配置好三台服务器IP,hosts文件等网络环境,时间同步以及以下的rpm包安装 注:以下操作在三个节点都执行 #下载rpm包(附件有提供) Mo

Nginx代理MogileFS并实现负载均衡和高可用

Nginx代理MogileFS并实现负载均衡和高可用 MogileFS nginx 负载均衡 大纲 实验环境 实验步骤 配置MogileFS 配置Nginx 总结 前言 上篇文章我们了解分布式系统和MogileFS的基本使用, 但是那样的架构是有问题的, 本篇文章我们来了解一下如何使用nginx-mogilefs-module-master模块来构建一个不一样的 MogileFS Cluster 实验拓扑 实验环境 主机 IP 功用 node6 172.16.1.7 Nginx,Tracker,

Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理

Nginx防盗链 1.[[email protected] test.com]# vi /usr/local/nginx/conf/vhost/test.com.conf #+表示1或者多个,+前面的字符 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names  *.test.com ; #定

LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)

一.nginx防盗链 nginx防盗链: [[email protected] ~]# vim /usr/local/nginx/conf/vhost/test.com.conf   添加以下内容 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names  *.test.com ;      

Nginx的防盗链、Nginx的访问控制、Nginx解析php的配置、Nginx代理

Nginx的防盗链 Nginx的访问控制 禁止上传图片目录里php解析 Nginx解析php的配置 Nginx代理 原文地址:http://blog.51cto.com/13515599/2087315

49.Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理

一.Nginx防盗链 配置如下,可以和上面的配置结合起来 vim /usr/local/nginx/conf/vhost/test.com.conf location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ //location后面的*是忽略大小写 { expires 7d; valid_referers none blocked server_names *.test.com ; //白名单 if (

四十九、Nginx防盗链、Nginx访问控制、Nginx解析PHP相关配置、Nginx代理

一.Nginx防盗链 必须和"不记录日志和过期时间"结合在一起,因为它们同时用到了location. # vim /usr/local/nginx/conf/vhost/test.com.conf location ~* ^.+\.(gif|jpg|png|bmp|swf|jpeg|flv|rar|zip|doc|pdf|gz|bz2|xls)$ { expires 7d;    过期时间 valid_referers none blocked server_names *.test.

Nginx防盗链、访问控制、解析php相关配置、Nginx代理

Nginx防盗链 编辑虚拟主机配置文件vim /usr/local/nginx/conf/vhost/test.com.conf 在配置文件中添加如下的内容 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.test.com ; if ($invalid_referer) { ret

Linux centos VMware Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理

一.Nginx防盗链 配置如下,可以和上面的配置结合起来 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.test.com ; if ($invalid_referer) { return 403; } access_log off; } 二.Nginx访问控制 需求:访问/adm