标签:aliyun 提示 客户端 扩容 toc pat out fastdfs package
目录
FastDFS. 1
1 介绍.... 1
2 安装.... 4
2.1 安装libfastcommon. 4
2.1.1 下载安装包并解压.... 4
2.2 安装FastDFS. 5
2.3 安装nginx. 8
2.3.1 更新nginx安装库.... 8
2.3.2 安装nginx. 8
2.4 存储服务器(storage server)安装并配置nginx. 10
2.4.1 安装fastdfs-nginx-module. 10
FastDFS是一款开源的、分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发。该开源项目的主页是 http://code.google.com/p/fastdfs 。可以通过fastdfs.sourceforge.NET 下载。FastDFS孵化平台(ChinaUnix)版块http://bbs.chinaunix.net/forum-240-1.html。
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能,就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。
跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。
FastDFS架构图
1) Tracker cluster中各个tracker server相互独立,不进行相互通信。
2) Storage cluster中各个storage组(Volume1,Volume2...)相互独立,不进行相互通信,也就是说各个组之间保存的数据是不相同的。但是各个组中的storage server之间是属于互相备份的关系,也就是说storage server之间保存相同的数据。
3) 每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息。
上传时序图
1) Client通过Tracker server将文件上传到Storage server。
2) Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3) Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。
4) 上传完成,Storage server返回Client一个文件ID,文件上传结束。
下载时序图
1) Client通过Tracker server下载指定Storage组中某个Storage server上的某个文件(文件名包括Storage组名称)。
2) Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3) Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件下载。
安装FastDFS还需要安装libfastcommon作为前提条件,首先准备安装包FastDFS和libfastcommon。
libfastcommon下载地址: https://github.com/happyfish100/libfastcommon/releases
FastDFS的下载地址:https://github.com/happyfish100/fastdfs/releases
首先安装libfastcommon,得到libfastcommon-1.0.35.tar.gz后解压、编译、安装。
运行环境相关软件:
2 CentOS 7.0
2 Libfastcommon-1.0.35
2 FastDFS-5.10
2 Nginx
2 Fastdfs-nginx-module
服务器规划
服务器名 |
备注 |
Fastdfs-tracker |
跟踪服务器/调度服务器 |
Fastdfs-storge |
存储服务器 |
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.35.tar.gz |
tar -zxvf V1.0.35.tar.gz |
cd libfastcommon-1.0.35 ./make.sh ./make.sh install |
提示:执行./make.sh命令时报如下错误,需要安装gcc
gcc安装命令:yum -y install gcc gcc-c++ make automake autoconf libtool perl
tar xvf V5.10.tar.gz |
cd fastdfs-5.10 ./make.sh ./make.sh install |
2 服务脚本 [root@fastdfs-tracker ~]# ll /etc/init.d/ |grep fdfs -rwxr-xr-x. 1 root root 918 4月 22 22:08 fdfs_storaged -rwxr-xr-x. 1 root root 920 4月 22 22:08 fdfs_trackerd 2 样例配置文件 [root@fastdfs-tracker ~]# ll /etc/fdfs/ 总用量 20 -rw-r--r--. 1 root root 1461 4月 22 22:08 client.conf.sample -rw-r--r--. 1 root root 7927 4月 22 22:08 storage.conf.sample -rw-r--r--. 1 root root 7200 4月 22 22:08 tracker.conf.sample 2 命令行工具 [root@fastdfs-tracker ~]# ll /usr/bin|grep fdfs -rwxr-xr-x. 1 root root 252272 4月 22 22:08 fdfs_appender_test -rwxr-xr-x. 1 root root 252225 4月 22 22:08 fdfs_appender_test1 -rwxr-xr-x. 1 root root 242449 4月 22 22:08 fdfs_append_file -rwxr-xr-x. 1 root root 242013 4月 22 22:08 fdfs_crc32 -rwxr-xr-x. 1 root root 242508 4月 22 22:08 fdfs_delete_file -rwxr-xr-x. 1 root root 243627 4月 22 22:08 fdfs_download_file -rwxr-xr-x. 1 root root 243369 4月 22 22:08 fdfs_file_info -rwxr-xr-x. 1 root root 255657 4月 22 22:08 fdfs_monitor -rwxr-xr-x. 1 root root 863913 4月 22 22:08 fdfs_storaged -rwxr-xr-x. 1 root root 258712 4月 22 22:08 fdfs_test -rwxr-xr-x. 1 root root 257881 4月 22 22:08 fdfs_test1 -rwxr-xr-x. 1 root root 365232 4月 22 22:08 fdfs_trackerd -rwxr-xr-x. 1 root root 243547 4月 22 22:08 fdfs_upload_appender -rwxr-xr-x. 1 root root 244453 4月 22 22:08 fdfs_upload_file |
[root@fastdfs-tracker ~]# cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf [root@fastdfs-storage ~]# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf |
disabled=false(默认为false,表示是否无效) port=22122(默认为22122) base_path=/data/fastdfs/tracker |
base_path=/data/fastdfs/tracker #tracker_server中IP指定的是tracker server的IP tracker_server=192.168.128.134:22122
|
[root@fastdfs-tracker ~]# mkdir -p /data/fastdfs/tracker |
[root@fastdfs-tracker ~]# cd /data/fastdfs/tracker/ [root@fastdfs-tracker tracker]# ls [root@fastdfs-tracker tracker]# /etc/init.d/fdfs_trackerd start Starting FastDFS tracker server: [root@fastdfs-tracker tracker]# ss -lntup|grep 22122 Tcp LISTEN 0 128 *:22122 *:* users:(("fdfs_trackerd",3785,5)) [root@fastdfs-tracker tracker]# ls data logs
|
[root@fastdfs-tracker tracker]# /etc/init.d/fdfs_trackerd stop waiting for pid [3785] exit ... pid [3785] exit.
|
[root@fastdfs-storage ~]# cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf |
disabled=false(默认为false,表示是否无效) port=23000(默认为23000) base_path=/data/fastdfs/storage tracker_server=192.168.128.135:22122 store_path0=/data/fastdfs/storage http.server_port=8888(默认为8888,nginx中配置的监听端口那之一致) |
[root@fastdfs-storage ~]# mkdir -p /data/fastdfs/storage |
[root@fastdfs-storage ~]# cd /data/fastdfs/storage/ [root@fastdfs-storage storage]# ls [root@fastdfs-storage storage]# /etc/init.d/fdfs_storaged start Starting FastDFS storage server: [root@fastdfs-storage storage]# ss -lntup|grep 23000 tcp LISTEN 0 128 *:23000 *:* users:(("fdfs_storaged",3786,5)) [root@fastdfs-storage storage]# ls data logs
|
执行如下上传命令:
[root@fastdfs-tracker~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/oldcat/imgs/test.jpg group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg 返回文件ID即说明文件已经上传成功
|
# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # yum makecache # yum update |
yum info nginx yum install nginx |
注:FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.128.135,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.128.136,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.128.136上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
[root@fastdfs-storagetools]# wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz [root@fastdfs-storage tools]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz [root@fastdfs-storage tools]# cd fastdfs-nginx-module/src/ [root@fastdfs-storage tools]# vi config 编辑config文件,执行如下命令进行批量替换并保存退出 :%s+/usr/local/+/usr/+g
修改完成后
|
[root@fastdfs-storage~]#cp /home/centos/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ [root@fastdfs-storage ~]# vim /etc/fdfs/mod_fastdfs.conf 修改内容如下: connect_timeout=10 base_path=/tmp(默认为/tmp) tracker_server=192.168.128.135:22122 storage_server_port=23000(默认配置为23000) url_have_group_name = true store_path0=/data/fastdfs/storage group_name=group1(默认配置为group1)
[group1] group_name=group1 storage_server_port=23000 store_path_count=1 store_path0=/data/fastdfs/storage |
查看nginx版本 [root@bogon centos]# nginx -V
[root@bogon centos]# wget http://nginx.org/download/nginx-1.12.1.tar.gz [root@bogon centos]# tar -zvxf nginx-1.12.1.tar.gz 更新一下依赖相关包 [root@bogon nginx-1.12.1]# yum -y install pcre* [root@bogon nginx-1.12.1]# service nginx stop #编译./configure 后面加上 第1步nginx -V查看到的所有配置参数,后面加上你要加的模块配置 [root@bogon nginx-1.12.1]#./configure --prefix=/etc/nginx ……(第1步nginx-V内容)……--add-module=/home/centos/fastdfs-nginx-module
[root@bogon nginx-1.12.1]#make [root@bogon nginx-1.12.1]#make install |
注:报如下错:
需要执行yum -y install openssl-devel
[root@bogon conf]# cd /home/centos/fastdfs-5.10/conf [root@bogon conf]# cp http.conf /etc/fdfs/ [root@bogon conf]# cp mime.types /etc/fdfs/
|
[root@bogon conf.d]# cd /etc/nginx/conf.d/ [root@bogon conf.d]# vi fdfs.conf 修改配置如下: server { listen 8888; server_name localhost; location ~ /group[0-9]/ { root /data/fastdfs/storage/data; ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } |
标签:aliyun 提示 客户端 扩容 toc pat out fastdfs package
原文地址:http://www.cnblogs.com/mycoffice/p/7219581.html