Fastdfs之集群安装

本文档详细介绍了Fastdfs的集群安装过程,包括环境准备、安装Tracker和Storage节点、外部Nginx配置、fastdfs-nginx-module模块的安装、上传测试以及开启权限验证等步骤。同时,还阐述了Tracker与Storage的目录结构,帮助读者理解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
    
  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
    
  4. 查看tracker日志是否启动成功

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

外部访问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;
        }
    }
    

安装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
    
  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 
    
  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
    
  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等配置都完成并成功启动
    

安装 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
    
  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
    
  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. 上传测试,在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
    
  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. 服务端开启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
    

Tracker与Storage目录结构

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

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

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

    ${base_path}
    |__data
    | |__storage_groups_news.dat:存储分组信息
    | |__storage_servers_news.dat:存储服务器列表
    |__logs
    	|__trackerd.log:tracker server 日志文件
    
  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
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值