数据存储的趋势和大数据带来的挑战
分布式存储与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 = 1 pidfile = /var/run/mogilefsd/mogilefsd .pid db_dsn = DBI:mysql:mogilefs:host=192.168.1.241 db_user = moguser db_pass = mogpass listen = 0.0.0.0:7001 conf_port = 7001 query_jobs = 100 delete_jobs = 1 replicate_jobs = 5 reaper_jobs = 1 service mogilefsd start #启动服务 ss -tanlp (LISTEN 0 128 192.168.1.241:7001 ) ##### storage节点(可以是所有节点) 安装 mogilefs mkdir /mogdata/dev1 -pv #创建设备目录 chown -R mogilefs.mogilefs /mogdata/dev2/ #权限 vim /etc/mogilefs/mogstored .conf maxconns = 10000 httplisten = 0.0.0.0:7500 mgmtlisten = 0.0.0.0:7501 docroot = /mogdata #目录级别 service mogstored start ss -tanlp (*:7500) ##### tracker节点添加storage节点和常用命令 mogadm check #检测节点 mogadm host list #每个存储节点称为一个host mogadm 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 安装tng yum install pcre-devel -y yum groupinstall "Development Tools" "Server Platform Development" yum install libxslt-devel gd-devel lua-devel geoip-devel tengine-1.5.1. tar .gz nginx-mogilefs-module-master.zip #mogilefs模块需要打补丁 mkdir -pv /var/tmp/nginx/client #模块需要 unzip nginx-mogilefs-module-master.zip useradd -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-master make && make install vim /etc/profile .d /nginx .sh export PATH= /usr/local/nginx/sbin :$PATH . !$ 提供脚本..... 配置nginx vim /etc/nginx/nginx .cfg upstream 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 安装keepalived vim /etc/keepalived/keepalived .conf # backup priority 99 global_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 } } |