首页 > 代码库 > FastDFS_V5.0分布式存储(介绍、安装与使用)

FastDFS_V5.0分布式存储(介绍、安装与使用)

介绍  架构分析(http://blog.csdn.net/MONKEY_D_MENG/article/details/6038133)

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。
跟踪器主要做调度工作,在访问上起负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。

存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

技术分享

 

 

技术分享

上传交互
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。
下载交互
1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。

 技术分享

技术分享

分以下步骤进行:

服务器IP:192.9.38.192/193

服务器系统信息:

技术分享

一、创建数据存储目录:

mkdir /usr/local/odrive/fastdfs 

mkdir /usr/local/odrive/fastdfs/tracker  #tracker目录保存运行日志

mkdir /usr/local/odrive/fastdfs/storage  #Storage目录保存运行日志及其data数据

二、安装依赖包:

yum install -y zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip

也可以手动下载以下需要的依赖包:

技术分享

 

fastdfs-nginx-module_v1.16.tar.gz

FastDFS_v5.08.tar.gz

nginx-1.9.7.tar.gz

libfastcommon-master.zip(https://github.com/happyfish100/libfastcommon/archive/master.zip)

三、安装libfastcommon

cd libfastcommon-master/

./make.sh

./make.sh install

四、安装Fastdfs

wget http://sourceforge.net/projects/fastdfs/files/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.05/FastDFS_v5.05.tar.gz/download

解压 进入cd FastDFS

tar -zxvf FastDFS_v5.05.tar.gz

sudo ./make.sh

sudo ./make.sh install

复制(解压源代码目录)/usr/local/odrive/installsoft/FastDFS/conf/目录下的所有文年到/etc/fdfs/目录下

进入目录/usr/local/odrive/installsoft/fastdfs-nginx-module/src

sudo cp mod_fastdfs.conf /etc/fdfs/

五、配置tracker 和 storage 配置文件, 对应修改

cd /etc/fdfs/

vi storage.conf

group_name=group1

base_path=/export/fastdfs/storage

store_path0=/export/fastdfs/storage

tracker_server=192.9.38.192:22122

tracker_server=192.9.38.193:22122

http.server_port=80

i tracker.conf

base_path=/export/fastdfs/tracker

 

vi mod_fastdfs.conf

group_name=group1

base_path=/export/fastdfs/storage

store_path0=/export/fastdfs/storage

tracker_server=192.9.38.192:22122

tracker_server=192.9.38.193:22122

url_have_group_name = true

vi client.conf

tracker_server=192.9.38.192:22122

tracker_server=192.9.38.193:22122

六、安装nginx和fastdfs-nginx-module模块

wget http://nginx.org/download/nginx-1.8.0.tar.gz

http://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download

tar zxf fastdfs-nginx-module_v1.16.tar.gz && tar zxf nginx-1.8.0.tar.gz 

#修改模块中对应的路径,要不然模块不能正确安装加载

cd fastdfs-nginx-module/src

vi conf   #更改如下, 去掉local,并指定lib64(64系统)

CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

CORE_LIBS="$CORE_LIBS -L/usr/lib64 -lfastcommon -lfdfsclient"

修改后的示例

ngx_addon_name=ngx_http_fastdfs_module

HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"

NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"

CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

CORE_LIBS="$CORE_LIBS -L/usr/lib64 -lfastcommon -lfdfsclient"

CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE=‘256*1024‘ -DFDFS_MOD_CONF_FILENAME=‘\"/etc/fdfs/mod_fastdfs.conf\"‘"

技术分享

 

 ulimit -SHn 102400

useradd -s /sbin/nologin www

cd nginx-1.8.0

/configure --user=www --group=www --add-module=../fastdfs-nginx-module/src/ --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

make

make install

技术分享

 

七、配置nginx

 server_name 192.9.38.192;

       root /webdata/fastdfs.com;

       index index.html index.htm;

 

   location / {

 

       if (!-e $request_filename) {

          rewrite ^(.*)$ /index.html last;

          }

 

   location /group1/M00 {

            root /export/fastdfs/storage/data/;

            ngx_fastdfs_module;

          }

 

   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js)$ {

       

#       fastcgi_cache cache_one;  #nginx.conf 开启cache才行,要不然启动报错

       fastcgi_cache_valid 200 10m;

       fastcgi_cache_valid 304 3m;

       fastcgi_cache_valid 301 302 1h;

       fastcgi_cache_valid any 1m;

       fastcgi_cache_min_uses 1;

       fastcgi_cache_use_stale error timeout invalid_header http_500;

       fastcgi_cache_key $host$request_uri;

       access_log off;

       }

 

       }

 

    access_log off;

 

}

 

cd  /usr/local/odrive/nginx/conf

 

修改nginx.conf

 

添加如下内容

server {

        listen       80;

        server_name  192.9.38.192;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            root   html;

            index  index.html index.htm;

        }

        location /group1/M00 {

            root /usr/local/odrive/fastdfs/storage/data/;

            ngx_fastdfs_module;

         }

 

        #error_page  404              /404.html;

 

        # redirect server error pages to the static page /50x.html

        #

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

 

 八、193 的配置一样, nginx对应的ip为193, 启动nginx和fastdfs

技术分享

/etc/init.d/nginx -t

ngx_http_fastdfs_set pid=8985

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@test-1 vhost]# /etc/init.d/nginx -s reload

ngx_http_fastdfs_set pid=8986

技术分享

九、测试

技术分享

在浏览器输入生成的URL:

技术分享

 

 

 后续补充:相关知识,及安装配置出现的问题。

FastDFS_V5.0分布式存储(介绍、安装与使用)