一、分佈式存儲
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;
}
}