• 设备
    • 今日
    • 0

    FastDFS_v5.08安装配置

    Nginx+fastDFS-nginx-module+FastDFS配置分布式文件系统
    原创 2015年09月14日 14:49:07 2694
    简介
    FastDFS是一个开源的轻量级的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
    FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
    tracker server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳,Tracker根据 storage 心跳信息,建立 group--->[storage server list]的映射表;tracker 管理的元数据很少,会直接存放在内存;tracker 上的元信息都是由 storage 汇报的信息生成的,本身不需要持久化任何数据,tracker 之间是对等关系,因此扩展 tracker 服务非常容易,直接增加tracker 服务器即可,所有 tracker 都接受 stroage 心跳信息,生成元数据信息来提供读写服务(与其他 Master-Slave 架构的优势是没有单点,tracker 也不会成为瓶颈,最终数据是和一个可用的Storage Server 进行传输的)注:tracker管理的group数据和server数据可以在tracker的data路径中找到storage_groups_new.dat、storage_servers_new.dat。
    storage server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以包含多台 storage server,数据互为备份,存储容量空间以 group 内容量最小的 storage 为准;建议 group 内的 storage server 配置相同;以 group 为单位组织存储能够方便的进行应用隔离、负载均衡和副本数定制;缺点是 group 的容量受单机存储容量的限制, 同时 group 内机器坏掉,数据恢复只能依赖 group 内其他机器重新同步(坏盘替换,重新挂载重启 fdfs_storaged 即可)
    一、安装前准备
    1.系统说明
    操作系统:CentOS release 6.5(Final)
    ip:192.168.1.242
    主机名:localhost.localdomain
    部署角色:tracker storage nginx
    2.准备编译环境 
    yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel
    注:参照文件“fastdfs安装前准备组件安装.docx“
    3.检测防火墙
    检测防火墙是否开启命令:service iptables status
    防火墙关闭命令:service iptables stop
    注:为了方便测试 关闭防火墙 service iptables stop
    搭建完毕之后可以将相应端口及规则加入到防火墙中(端口填写自己配置的实际端口)
    tracker添加到防火墙规则中
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport22122 -j ACCEPT
    storage
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport23000 -j ACCEPT
    nginx
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport80 -j ACCEPT
    端口要修改成自己配置中实际的端口,修改之后进行下面的命令进行保存
    /etc/init.d/iptables save
    二、源码准备
    源码下载,下载后统一拷贝到目录/usr/local/src/
    2.1.1  下载fastDFS 5.01 地址:
    http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.01/FastDFS_v5.01.tar
    2.1.2  下载 nginx 1.7.0:
    http://nginx.org/download/nginx-1.7.0.tar.gz
    2.1.3  fastdfs-nginx-module_v1.16:
    http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
    三、安装编译
    3.1安装FastDFS
    cd   /usr/local/src/
    tar xf FastDFS_v5.01.tar.gz
    cd FastDFS
    ./make.sh && ./make.sh install 
    3.2解压fastDFS-nginx-module
    cd   /usr/local/src/
    tar -zxvf  fastdfs-nginx-module_v1.16.tar.gz
    注意:zxvf
    x : 从 tar 包中把文件提取出来
    z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压
    v : 显示详细信息
    f xxx.tar.gz:  指定被处理的文件是 xxx.tar.gz,f后面必须跟上要处理的文件名,也就是说你不能写成这样 tar -zxfvfastdfs-nginx-module_v1.16.tar.gz
    3.3安装Nginx并附加fastdfs-nginx-module 模块
    cd /usr/local/src/
    tar xf nginx-1.7.0.tar.gz
    cd nginx-1.7.0
    //编译安装 nginx附带 fastdfs-nginx-module模块
    ./configure --user=nginx \
    --group=nginx--prefix=/usr/local/nginx \
    --add-module=../fastdfs-nginx-module/src
    make
    make install
    四、配置
    4.1 tracker的配置
    4.1.1创建tracker数据以及日志存放目录
    mkdir -p /home/fastdfs/tracker
    4.1.2修改FastDFS的tracker.conf配置文件(当安装完FastDFS是,在/etc/fdfs目录下会出现tracker.conf storage.conf两个配置文件)
    vim /etc/fdfs/tracker.conf
    主要修改项:
    base_path= /home/fastdfs/tracker
    max_connections=100
    work_threads=8
    store_lookup=0
    store_path=0
    reserved_storage_space=10%
    run_by_group=root
    run_by_user=root
    rotate_error_log=true
    为了以后迁移数据的方便,个人推荐使用服务器的id生成文件的url名称,而不是默认的使用ip,如果使用id生成文件名url,在tracker.conf文件中修改如下参数
    # if use storage ID instead of IP address
    # default value is false
    # since V4.00
    use_storage_id = true
    # specify storage ids filename, can use relative or absolute path
    # since V4.00
    storage_ids_filename = /home/fastdfs/src/FastDFS/conf/storage_ids.conf
    # id type of the storage server in the filename, values are:
    ## ip: the ip address of the storage server
    ## id: the server id of the storage server
    # this paramter is valid only when use_storage_id set to true
    # default value is ip
    # since V4.03
    id_type_in_filename = id


    4.1.3将tracker交给service管理并且设置开机启动

    cp /usr/local/src/FastDFS/init.d/fdfs_trackerd  /etc/init.d/     //服务脚本必须存放在/etc/ini.d/目录下
    chkconfig   --add  fdfs_trackerd      //增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据
    chkconfig  fdfs_trackerd on             //设置开机启动
    service fdfs_trackerd start              //即使启动服务
    tail -1000f /home/fastdfs/tracker/logs/trackerd.log
    rm -rf /data/fastdfs/tracker/logs/trackerd.log

    4.2修改storage.conf配置文件
    创建数据存放目录
    mkdir -p /home/fastdfs/storage/data
    修改FastDFS的storage.conf配置文件
    cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
    vim /etc/fdfs/storage.conf
    修改主要项目如下:
    work_threads=8
    store_path_count=1
    base_path=/home/fastdfs/storage
    store_path0=/home/fastdfs/storage
    ##tracker_server 的地址
    tracker_server=192.168.1.242:22122
    如果是多个tracker_server的话,就直接写多个,如下图
    ##运行 FastDFS 的用户组
    run_by_group=root
    ##运行 FastDFS 的用户
    run_by_user=root
    file_distribute_path_mode=1
    rotate_error_log=true

    4.3整合fastdfs-nginx-module模块mod_fastdfs.conf配置文件
    把nginx模块的配置文件拷贝到 /etc/fdfs中,进行修改
    cp /home/fastdfs-nginx-module/src/mod_fastdfs.conf   /etc/fdfs/
    主要修改项
    vim /etc/fdfs/mod_fastdfs.conf
    #include http.conf   #没有这一行,将报错: param "http.mime_types_filename" not exist or is empty
    connect_timeout=30
    tracker_server=192.168.1.242:22122
    group_name=group1
    url_have_group_name = true
    store_path_count=1
    store_path0=/home/fastdfs/storage

    再在mod_fastdfs.conf修改文件如下参数,根据这两个参数的注释说明可以知道,可以不设置的,
    只有当mod_fastdfs.conf配置文件中load_fdfs_parameters_from_tracker=false的时候才会到mod_fastdfs.conf配置文件中取这两个参数值
    vim /etc/fdfs/mod_fastdfs.conf
    use_storage_id = true
    storage_ids_filename = /home/fastdfs/src/FastDFS/conf/storage_ids.conf

    4.1         nginx配置
    4.4.1nginx.conf配置文件

    vim /usr/local/nginx/conf/nginx.conf
    修改后内容如下:
    user root  root; ---用户   用户组
    worker_processes  3;
    error_log /usr/local/nginx/logs/error.log;
    error_log /usr/local/nginx/logs/error.log notice;
    error_log /usr/local/nginx/logs/error.log info;
    pid   /usr/local/nginx/logs/nginx.pid;
    events {
    worker_connections  1024;
    }
    http {
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;
    log_format  main  '$remote_addr - $remote_user [$time_local]"$request"
    '$status $body_bytes_sent"$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /usr/local/nginx/logs/access.log main;
    upstream server_group1{
    server192.168.1.242:80;
    }
    server {
    listen 80;
    server_name localhost.localdomain;
    access_log   off;
    #这里是对nginx和fastdfs-nginx-module的整合
    location  /group1/M00{
    root /home/fastdfs/storage/data;
    ngx_fastdfs_module;
    }
    }
    }

    error: mime.types not exist / include file "http.conf" not exists
    cp /home/fastdfs/src/FastDFS/conf/http.conf /etc/fdfs
    cp /home/fastdfs/src/FastDFS/conf/mime.types /etc/fdfs

    注意:如果要做storage集群的话,那么在upstream server_group1{}中将所有服务器放进去,如下图
    4.4.2创建软连接
    ln  -s  /home/fastdfs/storage/data     /home/fastdfs/storage/data/M00
    这个软连接也可以不创建,不创建的话,data的根目录如下:
    以group1/M00/14/F3/oYYBAFaPB7mETEqJAAAAAAgc1Og742.png为例,该图片在这里面直接进入14,然后进入F3就能找到
    如果创建的软连接的话,如下图
    在里面多了一个M00路径,可以通过进入M00,再进入14,再进入F3找到图片,当然直接进入14,进入F3也能找到,这只是一个连接。
    因为我们再nginx的location里在group1下多配了一个M00路径。

    4.4.3把storage交给service管理并且设置开机启动
    cp /usr/local/src/FastDFS/init.d/fdfs_storaged   /etc/init.d/
    chkconfig --add fdfs_storaged
    chkconfig fdfs_storaged on
    service fdfs_storaged start
    tail -1000f /home/fastdfs/storage/logs/storaged.log
    rm -rf /data/fastdfs/storage/logs/storaged.log

    启动storage,会根据配置文件的设置自动创建多级存储目录,如下图:
    五、问题及解决方法
    a)  nginx扩展模块,不能正常显示图片的问题
    在配置文件/etc/fdfs/mod_fastdfs.conf中,缺省的设置是这样的:http.need_find_content_type=false这个参数在nginx中需要设置为true,apache中应该设置为false
    注意:http.need_find_content_type=false这个配置是在/etc/fdfs/mod_fastdfs.conf中进行配置的,如果该配置文件中没有改配置就直接加上,保存之后重启nginx即可。
    b)  400 bad request
    [2011-12-1215:24:21] ERROR - file: /tmp/fastdfs-nginx-module/src/common.c, line: 561,logic file: M00/00/00/wKgBNU7lqyjzJZ4mAA4CRXl5SCQ670.jpg not exists
    2011/12/12 15:24:21 [error] 14147#0: *1 open()"/home/nginx/nginx/html/favicon.ico" failed (2: No such file ordirectory), client: 192.168.1.123, server: localhost, request: "GET/favicon.ico HTTP/1.1", host: "192.168.1.242:80"
    修改/fastdfs/conf/mod_fastdfs.conf里面url_have_group_name = true
    六、测试
    1.  在192.168.1.242上启动tracker,storage,nginx
    启动tracker   service fdfs_trackerd start
    启动storage   service fdfs_storaged start
    启动nginx     /usr/local/nginx/sbin/nginx
    如果启动nginx有问题,可以看下是不是这个博客所指的问题与解决方法
    http://blog.csdn.net/ystyaoshengting/article/details/48681193
    2.  配置一个client 在tracker上进行
    cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
    vim /etc/fdfs/client.conf
    base_path= /home/fastdfs/storage
    tracker_server=192.168.1.242:22122
    如果是多个tracker的话,这里也是需要像storage.conf里说的那样写多个tracker_server

    3.    查看集群详细
    stop.sh /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    rm -rf /data/fastdfs/tracker/logs/trackerd.log

    stop.sh /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    rm -rf /home/fastdfs/storage/logs/storaged.log

    启动
    service fdfs_trackerd start
    tail -1000f /home/fastdfs/tracker/logs/trackerd.log

    service fdfs_storaged start
    tail -1000f /home/fastdfs/storage/logs/storaged.log
    fdfs_monitor  /etc/fdfs/client.conf

    4.测上传
    4.1 
    fdfs_upload_file /etc/fdfs/client.conf /home/test.jpg
    返回:group1/M00/89/A5/ooYBAFox32mAEr-hAACGyI-j98M213.png
    浏览器访问检测上传是否成功
    http://192.168.1.242/group1/M00/89/A5/ooYBAFox32mAEr-hAACGyI-j98M213.png
    fdfs_file_info /etc/fdfs/client.conf group1/M00/89/A5/ooYBAFox32mAEr-hAACGyI-j98M213.png
    4.2 
    fdfs_upload_file /etc/fdfs/client.conf /home/test.txt
    返回:group1/M00/FC/98/ooYBAFox4ASALreZAAAAF6bKuy8398.txt
    浏览器访问检测上传是否成功
    http://192.168.1.242/group1/M00/FC/98/ooYBAFox4ASALreZAAAAF6bKuy8398.txt
    fdfs_file_info /etc/fdfs/client.conf group1/M00/FC/98/ooYBAFox4ASALreZAAAAF6bKuy8398.txt

    fdfs应用


    来自:PC 广东省广州市
    上一篇: Notepad编辑方法
    您可能还喜欢这些:

    亲,沙发正空着,还不快来抢?

    评论审核已开启:即评论经审核才能正常显示! 记住我的个人信息 回复后邮件通知我