-
数据存储的趋势和大数据带来的挑战
-
分布式存储与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 } } |