分布式:
分布式存储或分布式文件系统的概念:
多台计算机每一台提供一定的存储空间存储数据,通过元数据服务器将数据均匀的存储在各个节点上
元数据:描述数据的数据,主要是描述数据属性,用来支持如指示存储位置、资源查找、文件记录等功能
分布式文件系统:可以直接挂载在系统上进行访问
分布式存储:只能通过API进行访问
有元数据节点服务器:元数据节点存储元数据,数据节点存储数据
无元数据节点服务器:每个数据节点保存完整的元数据和部分数据
常见软件:
GFS:google file system
HDFS:Hadoop file system
TFS:taobao(淘宝) file system
ceph:linux内核中实现的分布式文件系统
MooseFS:轻量级分布式文件系统
MogileFS:轻量级分布式文件系统,比moosefs的性能高
MogileFS
MogileFS有3个组件:
Tracker:是文件系统集群的核心节点,基于数据库保存元数据,主要用于监控、指示storage节点完成数据的添加、删除、查询,及节点之间数据的复制等,Tracker节点通常有多个,以实现负载均衡和高可用
storage:实际存储数据的位置,能完成文件创建、删除、重命名等操作
database:存储Tracker节点的元数据及全局信息
实现原理: 在MogileFS中,每一个数据块都会有多个副本,存放于多个storage上(一般是3份),在Tracker上会分别每一个数 据块的存储位置。若某个storage节点不在线了,客户端向Tracker节点请求获取数据时,Tracker节点会返回副本的存储位置给客户端。这样就保证了整个集群高可用性。当有数据存储至某一storage节点后,各storage节点会根据Tracker的指示通过节点间通信将副本发送至其他节点上。若某一storage下线了,该节点上的副本会由其他节点重新提供,保证副本的个数不少于指定的值
安装配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
环境准备:
[epel]
nama = epel package
baseurl = http: / / mirrors.aliyun.com / epel / 6 / x86_64 /
gpgcheck = 1
enabled = 1
gpgkey = http: / / mirrors.aliyun.com / epel / RPM - GPG - KEY - EPEL - 6
yum - y install Perlbal
yum - y install perl - DBI
yum - y install perl - DBD - MySQL
yum - y install perl - Danga - Socket
yum - y install perl - IO - AIO
yum - y install perl - Net - Netmask
yum - y install cpan
yum - y install mysql mysql - server
cpan
cpan[ 1 ]> install MogileFS::Client
cpan[ 1 ]> install MogileFS::Utils
|
1
2
3
4
5
6
|
安装mogilefs:
wget http: / / search.cpan.org / CPAN / authors / id / D / DO / DORMANDO / MogileFS - Server - 2.44 .tar.gz
tar zxvf MogileFS - Server - 2.44 .tar.gz - C / usr / src /
cd / usr / src / MogileFS - Server - 2.44
perl Makefile.PL
make && make install
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
配置mysql数据库:
chkconfig - - add mysqld
chkconfig mysqld on
service mysqld start
mysqladmin - uroot password 123.com
mysql - uroot - p
create database mogilefs;
grant all on mogilefs. * to 'mogilefs' @ '192.168.%.%' identified by '456.com' ;
flush privileges;
mogdbsetup - - dbhost = 192.168 . 0.10 - - dbrootpass = '123.com' - - dbuser = mogilefs - - dbpass = '456.com'
- - dbhost =
- - dbport =
- - dbname =
- - dbrootuser =
- - dbrootpass =
- - dbuser =
- - dbpass =
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
配置mogilefs:
useradd - r mogilefs
mkdir / etc / mogilefs
mkdir / var / run / mogilefsd
vim / etc / mogilefs / mogilefsd.conf
pidfile = / var / run / mogilefsd / mogilefsd.pid
db_dsn = DBI:mysql:mogilefs:host = 192.168 . 0.10 ;port = 3306 ;mysql_connect_timeout = 5
daemonize = 1
db_user = mogilefs
db_pass = 456.com
listen = 0.0 . 0.0 : 7001
conf_port = 7001
query_jobs = 10
delete_jobs = 1
replicate_jobs = 5
reaper_jobs = 1
chown - R mogilefs:mogilefs / etc / mogilefs
chown - R mogilefs:mogilefs / var / run / mogilefsd
su - mogilefs - c "mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon"
ss - tnl | grep 7001
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
storage配置:安装和Tracker一样的包,如果不作为Tracker则不需要配置安装数据库
useradd - r mogilefs
mkdir - pv / mogilefs / data / dev1
mkdir / etc / mogilefs
vim / etc / mogilefs / mogstored.conf
maxconns = 1000
httplisten = 0.0 . 0.0 : 7500
mgmtlisten = 0.0 . 0.0 : 7501
docroot = / mogilefs / data
chown - R mogilefs:mogilefs / etc / mogilefs
chown - R mogilefs:mogilefs / mogilefs /
su - mogilefs - c "mogstored -c /etc/mogilefs/mogstored.conf --daemon"
ss - ntl | grep 7500
ss - ntl | grep 7501
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
mogilefs管理:
mogadm check
mogadm device list
mogadm host list
mogadm host add 192.168 . 0.10 - - ip = 192.168 . 0.10 - - status = alive
mogadm host add 192.168 . 0.50 - - ip = 192.168 . 0.50 - - status = alive
mogadm device add 192.168 . 0.10 1
mogadm device add 192.168 . 0.50 2
mogadm domain list
mogadm domain add www
mogadm - - trackers = 192.168 . 0.10 : 7001 class add www user - - mindevcount = 2
mogupload - - trackers = 192.168 . 0.10 : 7001 - - domain = www - - key = 'pwd' - - file = '/etc/passwd'
mogfileinfo - - trackers = 192.168 . 0.10 : 7001 - - domain = www - - key = 'pwd'
moglistkeys - - trackers = 192.168 . 0.10 - - domain = www
|
配置实例:
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
|
实验环境:centos6. 5
192.168 . 0.10 Nginx 192.168 . 0.20 mysql
192.168 . 0.30 mogilefs 192.168 . 0.40 mogilefs 192.168 . 0.50 mogilefs
1 、配置mogilefs:
mogadm - - trackers = 192.168 . 0.30 host add 192.168 . 0.30 - - ip = 192.168 . 0.30 - - status = alive
mogadm - - trackers = 192.168 . 0.30 host add 192.168 . 0.40 - - ip = 192.168 . 0.40 - - status = alive
mogadm - - trackers = 192.168 . 0.30 host add 192.168 . 0.50 - - ip = 192.168 . 0.50 - - status = alive
mogadm domain add www
mogupload - - trackers = 192.168 . 0.10 : 7001 - - domain = www - - key = 'pwd' - - file = '/etc/passwd'
2 、编译安装nginx:
groupadd - r nginx
useradd - r - g nginx nginx
yum - y install pcre - devel
tar zxvf nginx - 1.8 . 1.tar .gz - C / usr / src /
tar zxvf nginx_mogilefs_module - 1.0 . 4.tar .gz - C / usr / src /
. / configure - - prefix = / usr / local / nginx - - user = nginx - - group = nginx - - add - module = / usr / src / nginx_mogilefs_module - 1.0 . 4 /
- - add - module:指定第三方模块位置
make && make install
3 、配置nginx:
http {
include mime.types;
default_type application / octet - stream;
upstream mogfs{
server 192.168 . 0.30 : 7001 ;
server 192.168 . 0.40 : 7001 ;
server 192.168 . 0.50 : 7001 ;
}
sendfile on;
keepalive_timeout 65 ;
server {
listen 80 ;
server_name localhost;
location / img / {
mogilefs_tracker mogfs;
mogilefs_domain www;
mogilefs_noverify on;
mogilefs_methods GET;
mogilefs_pass {
proxy_pass $mogilefs_path;
proxy_hide_header Content - Type ;
proxy_buffering off;
}
}
}
}
4 、验证
1 、访问http: / / 192.168 . 0.10 / img / pwd
2 、关闭 192.168 . 0.30 继续访问,查看访问是否正常
|
本文转自 红尘世间 51CTO博客,原文链接:http://blog.51cto.com/hongchen99/1923213