数据存储的趋势和大数据带来的挑战
分布式存储与CAP定理
分布式存储文件系统
Mogilefs基本原理
Mogilefs实现
Nginx反向代理Tracker节点
| Google Filesystem | GFS+MapReduce擅长处理单个大文件 |
| Hadoop Distributed Filesystem | GFS的山寨版+MapReduce,擅长处理单个大文件 |
| ClusterFS | 擅长处理单个大文件 |
| Taobao Filesystem | 擅长处理海量小文件 |
| MogileFS | 擅长处理海量小文件 |
| Ceph | 是一个 Linux PB级别的分布式文件系统 |
| MooseFS | 通用简便,适用于研发能力不强的公司 |
| Lustre | 一种平行分布式文件系统 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | ##### Database节点安装mariadb授权GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'mypass';CREATE DATABASE mogilefs;GRANT ALL ON mogilefs.* TO 'moguser'@'%' IDENTIFIED BY 'mogpass';FLUSH PRIVILEGES;##### Tracker节点(可以是所有节点)安装 mogilefs修改配置文件如下vim /etc/mogilefs/mogilefsd.conf daemonize = 1pidfile = /var/run/mogilefsd/mogilefsd.piddb_dsn = DBI:mysql:mogilefs:host=192.168.1.241db_user = moguserdb_pass = mogpasslisten = 0.0.0.0:7001conf_port = 7001query_jobs = 100delete_jobs = 1replicate_jobs = 5reaper_jobs = 1service mogilefsd start #启动服务ss -tanlp (LISTEN 0 128 192.168.1.241:7001 )##### storage节点(可以是所有节点)安装 mogilefsmkdir /mogdata/dev1 -pv #创建设备目录chown -R mogilefs.mogilefs /mogdata/dev2/ #权限vim /etc/mogilefs/mogstored.confmaxconns = 10000httplisten = 0.0.0.0:7500mgmtlisten = 0.0.0.0:7501docroot = /mogdata #目录级别service mogstored startss -tanlp (*:7500)##### tracker节点添加storage节点和常用命令mogadm check #检测节点mogadm host list #每个存储节点称为一个hostmogadm host add 192.168.1.213 --ip=192.168.1.213 --ip=192.168.1.213 --status=alive #添加第一个存储节点mogadm host add 192.168.1.242 --ip=192.168.1.242 --ip=192.168.1.242 --status=alive #添加第一个存储节点mogadm host add 192.168.1.241 --ip=192.168.1.241 --ip=192.168.1.241 --status=alive #添加第一个存储节点mogadm device add 192.168.1.213 1 #添加第一个设备,设备号唯一不能重名mogadm device add 192.168.1.242 2 #添加第二个设备mogadm device add 192.168.1.241 3 #添加第三个设备mogadm check #可以查看状态mogadm domain add files #创建文件存储域mogadm domain add images #创建图片存储域mogadm domain list #查看所有域mogupload --trackers=192.168.1.241 --domain=files --key='/fstab' --file='/etc/fstab' #上传fstab文件,key为'/fstab'mogfileinfo --trackers=192.168.1.241 --domain=files --key='/fstab' #根据key查看文件存放信息 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | ##### 配置Nginx安装tngyum install pcre-devel -yyum groupinstall "Development Tools" "Server Platform Development"yum install libxslt-devel gd-devel lua-devel geoip-develtengine-1.5.1.tar.gznginx-mogilefs-module-master.zip #mogilefs模块需要打补丁mkdir -pv /var/tmp/nginx/client #模块需要unzip nginx-mogilefs-module-master.zipuseradd -r nginx./configure / --prefix=/usr/local/nginx / --sbin-path=/usr/local/nginx/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 / --enable-mods-shared=all / --add-module=/nginx-mogilefs-module-mastermake && make installvim /etc/profile.d/nginx.shexport PATH=/usr/local/nginx/sbin:$PATH. !$提供脚本.....配置nginxvim /etc/nginx/nginx.cfgupstream trackers { server 192.168.1.242:7001 weight=1; server 192.168.1.213:7001 weight=1; server 192.168.1.241:7001 backup; check interval=3000 rise=2 fall=5 timeout=1000; check_http_send "GET / HTTP/1.0/r/n/r/n"; check_http_expect_alive http_2xx http_3xx; }location /jpg/ { mogilefs_tracker trackers; mogilefs_domain images; mogilefs_methods GET; mogilefs_pass { proxy_pass $mogilefs_path; proxy_hide_header Content-Type; proxy_buffering off; } }##### 配置keepalived安装keepalivedvim /etc/keepalived/keepalived.conf # backup priority 99global_defs { notification_email { root@localhost } notification_email_from admin@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LTT}vrrp_script chk_nginx { script "killall -0 nginx" interval 1 weight -2 fall 2 rise 1}vrrp_instance IN_1 { state MASTER interface eth0 virtual_router_id 22 priority 100 advert_int 1 authentication { auth_type PASS auth_pass aaaa } virtual_ipaddress { 192.168.1.222 } track_script { chk_nginx}} |
