文章目录
环境准备
- https://github.com/happyfish100/fastdfs/wiki
集群安装与配置
-
机器准备:这里省略Keepalived,这里是在docker中安装,使用虚拟机安装步骤是一样的
机器IP 用途 组 172.33.0.4 Tracker1 172.33.0.5 Tracker1 172.33.0.6 Storage11和Nginx group1 172.33.0.7 Storage12 和Nginx group1 172.33.0.8 Storage21和Nginx group2 172.33.0.9 Storage22和Nginx group2 172.33.0.10 外部访问Nginx -
部署架构图

安装Tracker
-
Tracker1和Tracker1都安装如下方式安装
-
修改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. 默认配置文件目录/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 -
查看tracker日志是否启动成功
$ cat /data/fastdfs/logs/trackerd.log INFO - FastDFS v6.06, base_path=/data/fastdfs ......
外部访问Nginx配置
-
外部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
-
Storage11和Storage11的
group_name=group1,Storage21和Storage22的group_name=group2 -
修改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. 默认配置文件目录/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 -
查看日志
$ 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 -
验证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模块
-
fastdfs-nginx-module模块只需要安装到storage上(Storage下需要安装Nginx)
-
安装
#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 -
修改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 -
配置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; } }
上传测试
-
上传测试,在Tracker1或者Tracker2下修改配置文件
/etc/fastdfs/client.conf1. 配置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 -
访问测试
直接访问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
开启权限验证
-
服务端开启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目录结构
-
参考http://www.simlinux.com/archives/484.html
-
FastDFS 服务器端运行时目录结构
${base_path} |__data:存放状态文件 |__logs:存放日志文件 -
tracker server 目录及文件结构:
${base_path} |__data | |__storage_groups_news.dat:存储分组信息 | |__storage_servers_news.dat:存储服务器列表 |__logs |__trackerd.log:tracker server 日志文件 -
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
本文档详细介绍了Fastdfs的集群安装过程,包括环境准备、安装Tracker和Storage节点、外部Nginx配置、fastdfs-nginx-module模块的安装、上传测试以及开启权限验证等步骤。同时,还阐述了Tracker与Storage的目录结构,帮助读者理解Fastdfs集群的运行机制。

5205

被折叠的 条评论
为什么被折叠?



