• Fastdfs之集群安装


    环境准备

    1. https://github.com/happyfish100/fastdfs/wiki

    集群安装与配置

    1. 机器准备:这里省略Keepalived,这里是在docker中安装,使用虚拟机安装步骤是一样的

      机器IP用途
      172.33.0.4Tracker1
      172.33.0.5Tracker1
      172.33.0.6Storage11和Nginxgroup1
      172.33.0.7Storage12 和Nginxgroup1
      172.33.0.8Storage21和Nginxgroup2
      172.33.0.9Storage22和Nginxgroup2
      172.33.0.10外部访问Nginx
    2. 部署架构图
      在这里插入图片描述

    安装Tracker

    1. Tracker1和Tracker1都安装如下方式安装

    2. 修改tracker.conf

      #设置tracker的数据文件和日志目录(需手动创建)
      base_path = /data/fastdfs
      #启用配置文件
      disabled=false
      #设置tracker的端口号
      port=22122
      #设置http端口号
      http.server_port = 8080
      
      =======================额外配置===================================
      因为在本地搭建,所以为了存储空间充足,需要修改一下保留空间
      修改为100M,也可以修改为1%,避免fastdfs报错,实际生产环境根据情况修改
      =================================================================
      reserved_storage_space = 100M
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
    3. 启动

      1. 默认配置文件目录/etc/fdfs
      $ /etc/init.d/fdfs_trackerd start
      
      2. 也可以指定配置
      $ fdfs_trackerd /etc/fdfs/tracker.conf start
      
      3. 确认启动是否成功
      $ ps -ef|grep fdfs
      root 16  1  0 05:13 ? 00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
      root 60  36 0 05:28 pts/0    00:00:00 grep fdfs
      
      4. 查看端口22122是否开始监听
      $ netstat -unltp | grep fdfs
      tcp  0  0 0.0.0.0:22122    0.0.0.0:*   LISTEN      16/fdfs_trackerd
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
    4. 查看tracker日志是否启动成功

      $ cat /data/fastdfs/logs/trackerd.log
      INFO - FastDFS v6.06, base_path=/data/fastdfs ......
      
      • 1
      • 2

    外部访问Nginx配置

    1. 外部Nginx配置,主要用于代理Storage

      #设置group1的服务器
      upstream fdfs_group1 {
          server 172.33.0.6:8888 weight=1 max_fails=2 fail_timeout=30s;
          server 172.33.0.7:8888 weight=1 max_fails=2 fail_timeout=30s;
      }
      
      #设置group2的服务器
      upstream fdfs_group2 {
          server 172.33.0.8:8888 weight=1 max_fails=2 fail_timeout=30s;
          server 172.33.0.9:8888 weight=1 max_fails=2 fail_timeout=30s;
      }
      
      # Storage代理配置
      server {
          listen       80; 
          server_name  www.fastdfs.com;
          location ~/group1/M00 {
              proxy_pass http://fdfs_group1;
          }
          location ~/group2/M00 {
              proxy_pass http://fdfs_group2;
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23

    安装Storage

    1. Storage11和Storage11的group_name=group1 ,Storage21和Storage22的group_name=group2

    2. 修改storage.conf

      # 组名(第一组为group1,第二组为group2,依次类推...)
      group_name=group1     
      # 数据和日志文件存储根目录
      base_path=/data/fastdfs
      #第一个存储目录,第二个存储目录起名为:store_path1=xxx,其它存储目录名依次类推...
      store_path0 =/data/fastdfs
      # 存储路径个数,需要和store_path个数匹配
      store_path_count=1   
      # tracker服务器IP和端口
      tracker_server = tracker-storage1:22122
      tracker_server = tracker-storage2:22122
      # 端口号与nginx配置保持一致
      http.server_port = 8888
      
      =======================额外配置===================================
      因为在本地搭建,将生成的子目录变为1,默认256,实际生产环境根据情况修改
      =================================================================
      subdir_count_per_path = 1
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
    3. 启动

      #1. 默认配置文件目录/etc/fdfs
      $ /etc/init.d/fdfs_storaged start
      
      #2. 也可以指定配置
      $ fdfs_storaged /etc/fdfs/storage.conf start
      
      #3. 查看端口23000是否开始监听
      $ netstat -unltp | grep fdfs
      tcp  0  0 0.0.0.0:23000   0.0.0.0:*  LISTEN      18/fdfs_storaged 
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    4. 查看日志

      $ cat /data/fastdfs/logs/storage.log
      [2022-04-17 14:21:58] INFO - file: storage_sync_func.c, line: 114, successfully connect to storage server 172.33.0.7:23000
      
      • 1
      • 2
    5. 验证storage是否登记到tracker服务器

      #1. 在任一存储节点上使用如下命令查看集群的状态信息
      $ fdfs_monitor /etc/fdfs/storage.conf
      
      Group 1:
      group name = group1
      Storage 1:
              id = 172.33.0.6
              ip_addr = 172.33.0.6  ACTIVE
              ......
      Storage 2:
              id = 172.33.0.7
              ip_addr = 172.33.0.7  ACTIVE
              ......
      
      Group 2:
      group name = group2
      Storage 1:
              id = 172.33.0.8
              ip_addr = 172.33.0.8  ACTIVE
              ......
      Storage 2:
              id = 172.33.0.9
              ip_addr = 172.33.0.9  ACTIVE
              ......
      # 2. 出现以上ACTIVE,表示tracker、storage等配置都完成并成功启动
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25

    安装 fastdfs-nginx-module模块

    1. fastdfs-nginx-module模块只需要安装到storage上(Storage下需要安装Nginx)

    2. 安装

      #1. 解压
      $ tar -zxvf fastdfs-nginx-module-1.22.tar.gz  -C /usr/local/ && cp /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs
      
      $ tar -zxvf openssl-1.1.1d.tar.gz -C /usr/local/ \
      	&& tar -zxvf  openresty-1.15.8.2.tar.gz  -C /usr/local/ 
      
      #2. 编译openresty
      $ cd /usr/local/openresty-1.15.8.2/  \
      	&& ./configure   --with-http_v2_module --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.1d --add-module=/usr/local/fastdfs-nginx-module-1.22/src/ &&  make && make install
      
      #3. 创建storage存储目录
      在/data/fastdfs/ 文件存储目录下创建软连接,将其链接到实际存放数据的目录
      $ mkdir -p /data/fastdfs/ &&  ln -s /data/fastdfs/ /data/fastdfs/M00
      
      #4. 查看版本
      $  /usr/local/openresty/nginx/sbin/nginx  -V
      nginx version: openresty/1.15.8.2
      built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) 
      built with OpenSSL 1.1.1d  10 Sep 2019
      TLS SNI support enabled
      configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib --with-http_v2_module --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.1d --add-module=/usr/local/fastdfs-nginx-module-1.22/src --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
    3. 修改fastdfs-nginx-module模块配置,配置文件/etc/fdfs/mod_fastdfs.conf

      =================group1下的Storage11和Storage12配置============
      # 日志根目录
      base_path=/data/fastdfs
      tracker_server = tracker-storage1:22122
      tracker_server = tracker-storage2:22122
      #storage服务器的端口号
      storage_server_port=23000  
      #当前服务器的group名
      group_name=group1      
      #文件url中是否有group名
      url_have_group_name = true  
      #存储路径个数,需要和store_path个数匹配
      store_path_count=1  
      #存储路径
      store_path0=/data/fastdfs
      #设置组的个数
      group_count = 2    
      
      # 两个组的具体信息
      [group1]
      group_name=group1
      storage_server_port=23000
      store_path_count=1
      store_path0=/data/fastdfs
      [group2]
      group_name=group2
      storage_server_port=23000
      store_path_count=1
      store_path0=/data/fastdfs
      
      =================group2下的Storage21和Storage22配置============
      # 日志根目录
      base_path=/data/fastdfs
      tracker_server = tracker-storage1:22122
      tracker_server = tracker-storage2:22122
      #storage服务器的端口号
      storage_server_port=23000  
      #当前服务器的group名
      group_name=group2      
      #文件url中是否有group名
      url_have_group_name = true  
      #存储路径个数,需要和store_path个数匹配
      store_path_count=1  
      #存储路径
      store_path0=/data/fastdfs
      #设置组的个数
      group_count = 2    
      
      # 两个组的具体信息
      [group1]
      group_name=group1
      storage_server_port=23000
      store_path_count=1
      store_path0=/data/fastdfs
      [group2]
      group_name=group2
      storage_server_port=23000
      store_path_count=1
      store_path0=/data/fastdfs
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
    4. 配置Storage下的Nginx,如查下载时如发现报 404,将 nginx.conf 第一行 user nobody 修改为 user root 后重新启动。

      1. 复制fastdfs的配置文件到/etc/fdfs
      $ cp /usr/local/fastdfs-6.06/conf/http.conf /usr/local/fastdfs-6.06/conf/mime.types  /etc/fdfs
      
      2. 添加www_fastdfs_com.conf
      server {
      	# 该端口与storage.conf中的http.server_port相同(默认是8888)
          listen       8888; 
          server_name  localhost;
          location ~/group[0-9]/ {
              #alias指定的目录后面必须加/
           	  #alias   /data/fastdfs/;
              ngx_fastdfs_module;
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

    上传测试

    1. 上传测试,在Tracker1或者Tracker2下修改配置文件/etc/fastdfs/client.conf

      1. 配置client.conf
      base_path = /data/fastdfs     #日志存放路径
      tracker_server = tracker-storage1:22122
      tracker_server = tracker-storage2:22122
      http.tracker_server_port=8080
      
      2. 执行上传文件,返回路径说明上传成功
      $ fdfs_upload_file /etc/fdfs/client.conf /root/huge-8.jpeg
      group1/M00/00/00/rCEAB2JcwIaAcHSaAAAP7hHA5R078.jpeg
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    2. 访问测试

      直接访问Storage11和Storage12
      http://172.33.0.6:8888/group1/M00/00/00/rCEAB2JcwIaAcHSaAAAP7hHA5R078.jpeg
      http://172.33.0.7:8888/group1/M00/00/00/rCEAB2JcwIaAcHSaAAAP7hHA5R078.jpeg
      
      直接访问Storage21和Storage22
      http://172.33.0.8:8888/group1/M00/00/00/rCEAB2JcwIaAcHSaAAAP7hHA5R078.jpeg
      http://172.33.0.9:8888/group1/M00/00/00/rCEAB2JcwIaAcHSaAAAP7hHA5R078.jpeg
      
      通过外部Nginx访问(需要配置hosts 172.33.0.10 www.fastdfs.com)
      http://www.fastdfs.com/group1/M00/00/00/rCEAB2JcwIaAcHSaAAAP7hHA5R078.jpeg
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

    开启权限验证

    1. 服务端开启token验证

      1. 在Storage节点
      $ vim /etc/fdfs/http.conf
      设置为true表示开启token验证
      http.anti_steal.check_token=true
       
      设置token失效的时间单位为秒(s)
      http.anti_steal.token_ttl=1800
       
      密钥,跟客户端配置文件的fastdfs.http_secret_key保持一致
      http.anti_steal.secret_key=FASTDFS1234567890
       
      如果token检查失败,返回的页面
      http.anti_steal.token_check_fail=/root/403.html
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13

    Tracker与Storage目录结构

    1. 参考http://www.simlinux.com/archives/484.html

    2. FastDFS 服务器端运行时目录结构

      ${base_path}
      |__data:存放状态文件
      |__logs:存放日志文件
      
      • 1
      • 2
      • 3
    3. tracker server 目录及文件结构:

      ${base_path}
      |__data
      | |__storage_groups_news.dat:存储分组信息
      | |__storage_servers_news.dat:存储服务器列表
      |__logs
      	|__trackerd.log:tracker server 日志文件
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    4. Storage Server目录以及文件结构

      ├── 00   一级目录:默认256个存放数据文件的目录,如:00, 1F
      │   └── 00 二级目录:默认256个存放数据文件的目录
      │       ├── rCEAB2JcwIaAcHSaAAAP7hHA5R078.jpeg
      │       ├── rCEABmJcCheAR9K6AAANWAFNsYE948.cfg
      │       ├── rCEABmJcEkmAIPnxAAAAsK3ye6o.bashrc
      │       ├── rCEABmJcHkaASL44AAANWAFNsYE065.cfg
      │       ├── rCEABmJcIyKAM8VnAAAa05JR_k066.jpeg
      │       └── rCEABmJcv5aAKI9mAAAAsK3ye6o.bashrc
      ├── fdfs_storaged.pid
      ├── storage_stat.dat  当前storage server统计信息
      └── sync
          ├── 172.33.0.7_23000.mark  
          ├── binlog.000          存放更新操作记录(日志)
          └── binlog_index.dat
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
  • 相关阅读:
    ArcGIS_修改文本样式
    gorm操作数组
    java+python离退休人员工资管理系统
    小程序毕设作品之微信体育馆预约小程序毕业设计成品(7)中期检查报告
    C#算法之插入排序算法
    Flink基础实操-计算单词出现次数
    【学习笔记70】数据劫持
    golang roadrunner中文文档(一)基础介绍
    社区版MyApps低代码平台,免费即刻拥有!
    SQL 注入漏洞详解
  • 原文地址:https://blog.csdn.net/usagoole/article/details/126201433