logo头像
ICQL

455_fastdfs

搭建fastdfs分布式文件系统

  • 0.环境准备

    • 安装包(4个,libfastcommon-1.0.39.tar.gz,fastdfs-5.11.tar.gz,nginx-1.8.0.tar.gz,fastdfs-nginx-module_v1.16.tar.gz)
    • 虚拟机:VMvare,7台,操作系统:centos7 64(最小安装),需要分别设置独立ip(详见linux-开发环境-设置虚拟机独立IP )
      • 后续步骤建议先安装一台,搭建好一台的环境后,使用VMware克隆功能复制操作系统
      • 安装好虚拟机后,建议使用 xshell6 ssh连接软件,方便操作
    • 开发环境
      1
      2
      3
      4
      5
      6
      7
      yum -y install java-1.8.0-openjdk*
      yum -y install perl*
      yum -y install gcc-c++
      yum -y install pcre pcre-devel
      yum -y install zlib zlib-devel
      yum -y install openssl openssl-devel
      yum -y install libevent
    • 上传上面安装包(4个)到linux系统,可以使用notepad++的nppftp插件方便操作
  • 1.简单架构

    • nginx下载服务器(188.188.0.110)负载均衡
    • tracker服务器(188.188.0.120,188.188.0.121)
    • storage服务器(group1:188.188.0.130,188.188.0.131,group2:188.188.0.132,188.188.0.133)
  • 2.tracker/storage服务器 通用步骤

    • 安装libfastcommon-1.0.39.tar.gz工具包,libfastcommon-1.0.39.tar.gz
      • 解压缩 tar -zxf libfastcommon-1.0.39.tar.gz
      • 进入解压的文件夹
      • 编译 ./make.sh
      • 安装 ./make.sh install,完成后 会有一个 /usr/lib64/libfastcommon.so
    • 安装fastdfs-5.11.tar.gz
      • 解压缩 tar -zxf fastdfs-5.11.tar.gz
      • 进入解压的文件夹
      • 编译 ./make.sh
      • 安装 ./make.sh install
      • 安装后在/usr/bin/目录下有以fdfs开头的文件都是编译出来的。配置文件都放到/etc/fdfs文件夹
      • 把fastdfs-5.11.tar.gz解压的/fastdfs-5.11/conf目录下的所有的配置文件都复制到/etc/fdfs下:cp -r conf/. /etc/fdfs
  • 3.tracker服务器(188.188.0.120,188.188.0.121)

    • 配置tracker服务。修改/etc/fdfs/tracker.conf文件
    • 修改 base_path=/fastdfs/tracker,日志存放路径
    • 开端口8080和22122:
      1
      2
      3
      firewall-cmd --zone=public --add-port=8080/tcp --permanent
      firewall-cmd --zone=public --add-port=22122/tcp --permanent
      firewall-cmd --reload
    • 启动/停止tracker
      • /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
      • /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
      • /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
    • 设置自启动:vi /etc/rc.d/rc.local 添加/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
  • 4.storage服务器(group1:188.188.0.130,188.188.0.131,group2:188.188.0.132,188.188.0.133)

    • 配置storage服务。修改/etc/fdfs/storage.conf文件

      1
      2
      3
      4
      5
      6
      7
      group_name=group1(188.188.0.101,188.188.0.102),group2(188.188.0.103,188.188.0.104)
      base_path=/fastdfs/storage,日志存放路径
      store_path_count=2,存放路径数量(主要用于多硬盘)
      store_path0=/fastdfs/storage0,文件存放路径0
      store_path1=/fastdfs/storage1,文件存放路径1
      tracker_server=188.188.0.120:22122,tracker服务器ip及端口,多个tracker,写多行配置
      tracker_server=188.188.0.121:22122
    • 开端口8888和23000:

      1
      2
      3
      firewall-cmd --zone=public --add-port=8888/tcp --permanent
      firewall-cmd --zone=public --add-port=23000/tcp --permanent
      firewall-cmd --reload
    • 启动/停止storage

      • /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
      • /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
      • /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
    • 搭建Nginx服务

      • fastdfs-nginx-module_v1.16.tar.gz解压缩,修改压缩路径下/fastdfs-nginx-module/src/config文件,把其中的local去掉
      • nginx-1.8.0.tar.gz解压缩,
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        ./configure \
        --prefix=/usr/local/nginx \
        --pid-path=/var/run/nginx/nginx.pid \
        --lock-path=/var/lock/nginx.lock \
        --error-log-path=/var/log/nginx/error.log \
        --http-log-path=/var/log/nginx/access.log \
        --with-http_gzip_static_module \
        --http-client-body-temp-path=/var/temp/nginx/client \
        --http-proxy-temp-path=/var/temp/nginx/proxy \
        --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
        --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
        --http-scgi-temp-path=/var/temp/nginx/scgi \
        --add-module=/root/packages/fastdfs-nginx-module/src
      • 注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录,最后一行为配置fastdfs整合nginx模块,修改为fastdfs-nginx-module插件解压缩后的src路径
      • make
      • make install
      • 把解压缩的/fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fdfs目录下。编辑:需要和storage.conf配置相同
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        group_name=group1(group2只有这里不一样)
        base_path=/fastdfs/mod_fastdfs
        tracker_server=188.188.0.120:22122
        tracker_server=188.188.0.121:22122
        url_have_group_name=true

        store_path_count=2
        store_path0=/fastdfs/storage0
        store_path1=/fastdfs/storage1

        group_count = 2
        [group1]
        group_name=group1
        storage_server_port=23000
        store_path_count=2
        store_path0=/fastdfs/storage0
        store_path1=/fastdfs/storage1
        [group2]
        group_name=group2
        storage_server_port=23000
        store_path_count=1
        store_path0=/fastdfs/storage0
      • 修改nginx的配置(/usr/local/nginx/conf/nginx.conf)
        1
        2
        3
        4
        5
        6
        7
        8
        9
        server {
        listen 8888;
        server_name localhost;

        #注意区分拦截路径
        location /group1/M00/ {
        ngx_fastdfs_module;
        }
        }
      • 启动/停止nginx:
        • /usr/local/nginx/sbin/nginx
        • /usr/local/nginx/sbin/nginx -s stop
        • /usr/local/nginx/sbin/nginx -s reload
      • nginx重启后目录丢失:mkdir /var/run/nginx 然后再启动
  • 5.测试服务

    • 在188.188.0.120服务器测试
    • 修改 /etc/fdfs/client.conf
    • base_path=/fastdfs/client,日志存放路径
    • tracker_server=188.188.0.120:22122
    • tracker_server=188.188.0.121:22122
    • 上传文件测试:/usr/bin/fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg
  • 6.nginx下载服务器(188.188.0.110)负载均衡

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    upstream  group1 
    {
    server 188.188.0.130:8888;
    server 188.188.0.131:8888;
    }

    upstream group2
    {
    server 188.188.0.132:8888;
    server 188.188.0.133:8888;
    }

    server {
    listen 80;
    server_name localhost;

    location /group1/ {
    proxy_pass http://group1;
    }

    location /group2/ {
    proxy_pass http://group2;
    }
    }
微信打赏

赞赏是不耍流氓的鼓励