zoukankan      html  css  js  c++  java
  • FastDFS集群部署

    以下我们在Centos7操作系统上以Fastdfs5.12为例来进行一下安装

    环境准备

    角色分配

    注意:此处角色分配并不是必须按照以下模式进行分配,还需结合自身实际服务器资源情况来进行分配,同一机器上也可以部署多个角色

    IP地址 角色 目录分配
    172.45.1.122 trackerclient,libfastcommon /data/fastdfs/tracker
    172.45.1.123 trackerclient,libfastcommon /data/fastdfs/tracker
    172.45.1.124 storagenginx,libfastcommon,fastdfs-nginx-module /data/fastdfs/{storage,nginx}
    172.45.1.125 storagenginx,libfastcommon,fastdfs-nginx-module /data/fastdfs/{storage,nginx}

    开始安装

    1. 安装包上传
    • tracker节点:172.45.1.122,172.45.1.123

    上传fastdfs5.12,libfastcommon-zip1.0.39/opt/app/packages 目录下

    • storage节点:172.45.1.124,172.45.1.125

    上传fastdfs5.12,libfastcommon-zip1.0.39,fastdfs-nginx-module.1.16,nginx1.10.0,ngx_cache_purge2.3/opt/app/packages 目录下

    1. 安装nginx和fastdfs依赖环境
    # 安装nginx环境依赖
    yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel pcre-devel zlib-devel
    
    # 安装fastdfs环境依赖
    yum -y install make cmake gcc gcc-c++ uzip zip
    
    1. 安装libfatscommon

    节点:172.45.1.122,172.45.1.123,172.45.1.124,172.45.1.125

    • 进入到/opt/app/packages目录下执行以下命令
    # 执行解压命令
    tar -zxvf libfastcommon-1.0.39.tar.gz -C /opt/app
    # 进入到解压后/opt/app/libfastcommon-1.0.39,执行编译脚本
    ./make.sh
    # 执行编译命令
    ./make.sh install
    
    1. 安装fastdfs

    节点:172.45.1.122,172.45.1.123,172.45.1.124,172.45.1.125

    • 进入到/opt/app/packages目录下执行以下命令
    # 执行解压命令
    tar -zxvf fastdfs-5.11.tar.gz -C /opt/app
    # 进入到解压后/opt/app/fastdfs-5.11,执行编译脚本
    ./make.sh
    # 执行编译命令
    ./make.sh install
    
    1. 配置tracker并启动服务

    节点:172.45.1.122,172.45.1.123

    • 执行以下命令
    # 复制tracker配置文件模板
    cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
    # 创建tracker基础目录
    mkdir /data/fastdfs/tracker
    
    • 修改/etc/fdfs/tracker.conf配置文件
    base_path=/data/fastdfs/tracker
    store_group=group1
    

    其他参数保留默认配置即可,关于其他参数含义可以参考http://bbs.chinaunix.net/thread-1941456-1-1.html 链接

    • 启动tracker服务
    /etc/init.d/fdfs_trackerd start
    
    1. 配置storage并启动服务

    节点:172.45.1.124,172.45.1.125

    • 执行以下命令
    # 复制storage配置文件模板
    cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
    # 创建storage基础目录
    mkdir /data/fastdfs/storage
    
    • 修改/etc/fdfs/storage.conf配置文件
    base_path=/data/fastdfs/storage
    store_path0=/data/fastdfs/storage
    tracker_server=172.45.1.122:22122
    tracker_server=172.45.1.123:22122
    

    其他参数保留默认配置即可,关于其他参数含义可以参考http://bbs.chinaunix.net/thread-1941456-1-1.html 链接

    • 启动storage服务
    /etc/init.d/fdfs_storaged start
    
    1. 配置client客户端(主要用来通过命令行查看集群信息)

    节点:172.45.1.122,172.45.1.123

    • 执行以下命令
    # 复制client配置文件模板
    cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
    
    • 修改/etc/fdfs/client.conf配置文件
    base_path=/data/fastdfs/tracker
    tracker_server=172.45.1.122:22122
    tracker_server=172.45.1.123:22122
    

    通过fdfs_monitor /etc/fdfs/client.conf 命令可以查看到一下结果:

    [root@localhost packages]# fdfs_monitor /etc/fdfs/client.conf
    [2020-08-12 10:44:37] DEBUG - base_path=/data/fastdfs/tracker, connect_timeout=30, network_timeout=60, tracker_server_count=2, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
    
    server_count=2, server_index=1
    
    tracker server is 172.45.1.123:22122
    
    group count: 1
    
    Group 1:
    group name = group1
    disk total space = 51175 MB
    disk free space = 47005 MB
    trunk free space = 0 MB
    storage server count = 2
    active server count = 2
    storage server port = 23000
    storage HTTP port = 8888
    store path count = 1
    subdir count per path = 256
    current write server index = 0
    current trunk file id = 0
    
            Storage 1:
                    id = 172.45.1.124
                    ip_addr = 172.45.1.124  ACTIVE
                    http domain =
                    version = 5.11
                    join time = 2020-08-12 08:34:35
                    up time = 2020-08-12 08:34:35
                    total storage = 51175 MB
                    free storage = 47005 MB
                    upload priority = 10
                    store_path_count = 1
                    subdir_count_per_path = 256
                    storage_port = 23000
                    storage_http_port = 8888
                    current_write_path = 0
                    source storage id =
                    if_trunk_server = 0
                    connection.alloc_count = 256
                    connection.current_count = 1
                    connection.max_count = 1
                    total_upload_count = 0
                    success_upload_count = 0
                    total_append_count = 0
                    success_append_count = 0
                    total_modify_count = 0
                    success_modify_count = 0
                    total_truncate_count = 0
                    success_truncate_count = 0
                    total_set_meta_count = 0
                    success_set_meta_count = 0
                    total_delete_count = 0
                    success_delete_count = 0
                    total_download_count = 0
                    success_download_count = 0
                    total_get_meta_count = 0
                    success_get_meta_count = 0
                    total_create_link_count = 0
                    success_create_link_count = 0
                    total_delete_link_count = 0
                    success_delete_link_count = 0
                    total_upload_bytes = 0
                    success_upload_bytes = 0
                    total_append_bytes = 0
                    success_append_bytes = 0
                    total_modify_bytes = 0
                    success_modify_bytes = 0
                    stotal_download_bytes = 0
                    success_download_bytes = 0
                    total_sync_in_bytes = 0
                    success_sync_in_bytes = 0
                    total_sync_out_bytes = 0
                    success_sync_out_bytes = 0
                    total_file_open_count = 0
                    success_file_open_count = 0
                    total_file_read_count = 0
                    success_file_read_count = 0
                    total_file_write_count = 0
                    success_file_write_count = 0
                    last_heart_beat_time = 2020-08-12 10:44:35
                    last_source_update = 1970-01-01 08:00:00
                    last_sync_update = 1970-01-01 08:00:00
                    last_synced_timestamp = 1970-01-01 08:00:00
            Storage 2:
                    id = 172.45.1.125
                    ip_addr = 172.45.1.125  ACTIVE
                    http domain =
                    version = 5.11
                    join time = 2020-08-12 08:34:39
                    up time = 2020-08-12 08:34:39
                    total storage = 51175 MB
                    free storage = 47005 MB
                    upload priority = 10
                    store_path_count = 1
                    subdir_count_per_path = 256
                    storage_port = 23000
                    storage_http_port = 8888
                    current_write_path = 0
                    source storage id = 172.45.1.124
                    if_trunk_server = 0
                    connection.alloc_count = 256
                    connection.current_count = 1
                    connection.max_count = 1
                    total_upload_count = 0
                    success_upload_count = 0
                    total_append_count = 0
                    success_append_count = 0
                    total_modify_count = 0
                    success_modify_count = 0
                    total_truncate_count = 0
                    success_truncate_count = 0
                    total_set_meta_count = 0
                    success_set_meta_count = 0
                    total_delete_count = 0
                    success_delete_count = 0
                    total_download_count = 0
                    success_download_count = 0
                    total_get_meta_count = 0
                    success_get_meta_count = 0
                    total_create_link_count = 0
                    success_create_link_count = 0
                    total_delete_link_count = 0
                    success_delete_link_count = 0
                    total_upload_bytes = 0
                    success_upload_bytes = 0
                    total_append_bytes = 0
                    success_append_bytes = 0
                    total_modify_bytes = 0
                    success_modify_bytes = 0
                    stotal_download_bytes = 0
                    success_download_bytes = 0
                    total_sync_in_bytes = 0
                    success_sync_in_bytes = 0
                    total_sync_out_bytes = 0
                    success_sync_out_bytes = 0
                    total_file_open_count = 0
                    success_file_open_count = 0
                    total_file_read_count = 0
                    success_file_read_count = 0
                    total_file_write_count = 0
                    success_file_write_count = 0
                    last_heart_beat_time = 2020-08-12 10:44:11
                    last_source_update = 1970-01-01 08:00:00
                    last_sync_update = 1970-01-01 08:00:00
                    last_synced_timestamp = 1970-01-01 08:00:00
    
    1. 配置nginx相关模块

    节点:172.45.1.124,172.45.1.125

    配置之前先说一下fastdfs-nginx-module作用:

    FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了172.45.1.124,文件ID已经返回客户端,这时,后台会将这个文件复制到172.45.1.125,如果复制没有完成,客户端就用这个ID在172.45.1.125取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。

    • 配置fastdfs-nginx-module

      • 执行以下命令
      # 解压fastdfs-nginx-module安装包
      tar -zxvf /opt/app/packages/fastdfs-nginx-module_v1.16.tar.gz -C /opt/app
      # 进入到/opt/app/fastdfs-nginx-module/src目录进行配置将
            CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
            # 修改为
            CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
      
      • 拷贝配置模板并编辑/etc/fdfs/mod_fastdfs.conf
      # 拷贝配置模板
      cp /opt/app/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
      
      # 编辑配置文件
      base_path=/data/fastdfs/storage
      tracker_server=172.45.1.122:22122
      tracker_server=172.45.1.123:22122
      url_have_group_name=true
      group_name=group1
      store_path_count=1
      store_path0=/data/fastdfs/storage
      
    • 配置ngx_cache_purge-2.3

      • 执行以下命令
      # 解压fastdfs-nginx-module安装包
      tar -zxvf /opt/app/packages/ngx_cache_purge-2.3.tar.gz -C /opt/app
      
    • nginx安装与配置

      • nginx安装
        • 执行以下命令
        # 解压nginx
        tar -zxvf /opt/app/packages/nginx-1.10.0.tar.gz -C /opt/app
        # 进入到nginx解压目录配置
        ./configure --prefix=/opt/app/nginx --add-module=/opt/app/fastdfs-nginx-module/src --add-module=/opt/app/ngx_cache_purge-2.3
        # 进入到/opt/app/nginx/sbin目录下编译和安装
        make && make install
        
      • nginx配置
      user nobody;
      worker_processes 1;
      events {
       	worker_connections 1024;
      }
      http {
         include mime.types;
         default_type application/octet-stream;
         sendfile on;
         keepalive_timeout 65;
         server {
              		listen 8888; # 对外端口
              		server_name 172.45.1.124; # 当前nginx所在服务器IP地址,125则需要换行125即可
             location ~/group1/M00 {
                    ngx_fastdfs_module;
               		}
         error_page 500 502 503 504 /50x.html;
         location = /50x.html {
                  root html;
              	}
          }
      }
      

      !> 注意:
      (1) 8888 端口值是要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应, 因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。
      (2) Storage 对应有多个 group 的情况下,访问路径带 group 名,如/group1/M00/00/00/xxx, 对应的 Nginx 配置为:

      location ~/group([0-9])/M00 {
           ngx_fastdfs_module;
         }
      

      (3) 如果通过8888下载时如发现老报 404,将 nginx.conf 第一行 user nobody 修改为 user root 后重新启动。

    1. 复制FastDFS部分配置文件到/etc/fdfs目录下

    节点:172.45.1.124,172.45.1.125

    • 进入到/opt/app/fastdfs-5.11/conf目录下执行命令
    cp http.conf mime.types /etc/fdfs/
    
    1. 创建数据链接

    节点:172.45.1.124,172.45.1.125

    ln -s /data/fastdfs/storage/data/ /data/fastdfs/storage/data/M00
    
    1. 启动nginx,进入到/opt/app/nginx/sbin目录下执行命令
    ./nginx
    # 重启nginx服务
    # ./nginx -s reload
    
    1. 到此,fastdfs的整个搭建过程就算是完了,接下来可以验证一下

    验证fastdfs

    命令行上传一张图片

    命令行上传

    通过nginx去访问图片

    访问172.45.1.124 storage 服务器

    124

    访问172.45.1.125 storage 服务器

    1254

    ![WARNING|style:callout]
    在安装过程中如果遇到问题可以先查看 常见问题解决

    狭路相逢勇者胜!
  • 相关阅读:
    BZOJ 2034 【2009国家集训队】 最大收益
    vijos P1780 【NOIP2012】 开车旅行
    BZOJ 2115 【WC2011】 Xor
    BZOJ 3631 【JLOI2014】 松鼠的新家
    BZOJ 4717 改装
    BZOJ 2957 楼房重建
    BZOJ 4034 【HAOI2015】 T2
    BZOJ 1834 【ZJOI2010】 network 网络扩容
    BZOJ 2440 【中山市选2011】 完全平方数
    BZOJ 2733 【HNOI2012】 永无乡
  • 原文地址:https://www.cnblogs.com/amcoder/p/13917939.html
Copyright © 2011-2022 走看看