一、分布式存储
CAP理论
2PC
BASE
ACID
强一致性、弱一致性
二、mogilefs
Trackers
mogilefsd即 trackers程序,trackers做了很多工作,Replication ,Deletion,Query,Reaper,Monitor等等。mogadm,mogtool的所有操作都要跟trackers打交 道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡
Stored
mogstored 程序的启动将使本机成为一个存储节点。启动时默认去读/etc/mogilefs/mogstored.conf 。mogstored启动后,便可以通过mogadm增加这台机器到cluster中
Database
数据库保存了Mogilefs的所有元数据,单点所在,最好HA
每次文件的上传和读取,都经过前端Trackers服务器,trackers服务器收到client端的请求,查询database,返回一个上传或者是读取的可用的后端StorageNode的地址,然后由client端直接操作后端StorageNode服务器。upload操作返回就是成功或者失败的结果,read操作就是返回对应的查询数据。
domain及class
三、mogilefs的安装、配置
tracers监听在7001 stored监听在7500,7501
1)创建数据库、创建用户、授权访问
mysql> CREATE DATABASE mogilefs;
mysql> CREATE USER mfs ;
mysql> GRANT ALL ON mogilefs.* to 'mfs'@'192.168.0.%' IDENTIFEID BY 'smile';
mysql> FLUSH PRIVILEGES;
2)安装mogilefs
使用马哥的rpm包直接安装所有的rpm包,单独安装时可能出错
3)配置mogilefs
修改配置文件
/etc/moglife/mogfilefsd
db_dsn = DBI:mysql:mogilefs:host=192.168.0.204
db_user = mfs
db_pass = smile
listen = 0.0.0.0:7001
/etc/mogilefs/mogstored
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /data/mfs
mkdir -pv /data/mfs/dev1 #dev1特定格式,在添加设备时使用
chown -R mogilefs.mogilefs /data/mfs
安装数据库
mogdbsetup --dbhost=192.168.0.204 --dbuser=mfs --dbpass=smile --dbname=mogilefs
启动mogfilefsd和mogstored,查看监听,如果mogstored没有监听,查看是否安装 perl-IO-AIO
service mogilefsd start
service mogstored start
增加主机
mogadm --trackers 192.168.0.202:7001 host add node3 --ip=192.168.0.203 --status=alive
增加设备
mogadm device add node3 2
增加domain
mogadm domain add files
增加class
mogadm class add files test --mindevcount=1
上传测试
mogupload --trackers=192.168.0.202 --domain=files --key='fstab.html' --file='/etc/fstab'
信息查询
mogfileinfo --trackers=192.168.0.202 --domain=files --key='fstab.html'
四、nigix的反代
编译安装nginx,增加模块nginx_mogilefs_module
groupadd -r nginx
useradd -r -g nginx nginx
yum install gcc gcc-c++ autoconf automake make zlib zlib-devel openssl openssl-devel pcre pcre-devel
./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=/root/nginx_mogilefs_module-1.0.4
make&&make install
配置nginx
`` location / {
mogilefs_tracker 192.168.0.202:7001;
mogilefs_domain files;
mogilefs_methods get;
mogilefs_pass {
proxy_pass $mogilefs_path;
proxy_hide_header Content-Type;
proxy_buffering off;
}
}
转载于:https://blog.51cto.com/psemily/2052405