Fastdfs V6.12.1集群部署(arm/x86均可用)

文章目录

  • 一、 Fastdfs 介绍
  • 二、部署 信息
  • 三、步骤
      • tracker/storage 机器的 compose 内容
      • storage 机器的 compose
      • tracker 与 storage 启动
      • 目录层级与配置文件
      • 测试
      • 测试集群扩容与缩减
      • 注意事项

一、 Fastdfs 介绍

FastDFS 是一款高性能的分布式文件系统,特别适合用于存储和管理大量的文件

二、部署 信息

  • 使用 docker 部署 Fastdfs 集群
角色服务器 IP服务器系统服务器配置docker /docker-compose版本
tracker/storage10.10.11.35麒麟 V10127G + 96C18.09.0/v2.25.0
tracker/storage10.10.11.56麒麟 V10254G + 64C20.10.17/v2.5.0
  • 默认 tracker 端口为 22122, storage 端口为 23000,文件访问端口为 8080
  • 此文档使用镜像在 dockerhub 上有,x86 与 arm 双架构均存在,可以直接 pull

三、步骤

tracker/storage 机器的 compose 内容

  • 由于此容器内部启动使用 sed,所以根据内部命令来启动,编辑环境变量以及域名解析,多个 tracker 使用 \n 换行符实现
version: '3.8'
services:tracker:container_name: trackerimage: ygqygq2/fastdfs-nginx:V6.12.1command: trackernetwork_mode: hostprivileged: truerestart: alwaysextra_hosts:- "tracker1:10.10.11.56"- "tracker2:10.10.11.35"environment:- TRACKER_SERVER=tracker1:22122\ntracker_server = tracker2:22122- GROUP_NAME=group111volumes:- ./data/tracker:/var/fdfs- /etc/localtime:/etc/localtimestorage:container_name: storageimage: ygqygq2/fastdfs-nginx:V6.12.1command: storagenetwork_mode: hostprivileged: truerestart: alwaysextra_hosts:- "tracker1:10.10.11.56"- "tracker2:10.10.11.35"environment:- TRACKER_SERVER=tracker1:22122\ntracker_server = tracker2:22122- GROUP_NAME=group111volumes:- ./data/storage:/var/fdfs/- /etc/localtime:/etc/localtime

storage 机器的 compose

version: '3.8'
services:storage:container_name: storageimage: ygqygq2/fastdfs-nginx:V6.12.1command: storagenetwork_mode: hostprivileged: truerestart: alwaysextra_hosts:- "tracker1:10.10.11.56"- "tracker2:10.10.11.35"environment:- TRACKER_SERVER=tracker1:22122\ntracker_server = tracker2:22122- GROUP_NAME=group111volumes:- ./data/storage:/var/fdfs/- /etc/localtime:/etc/localtime

tracker 与 storage 启动

# 在142上查看 storage 日志,可以看到会输出其他节点连接成功的信息
docker  logs -f storage
[2024-12-16 16:50:46] INFO - file: storage_func.c, line: 338, tracker_client_ip: 10.10.11.35, my_server_id_str: 10.10.11.35, g_server_id_in_filename: 587926026
[2024-12-16 16:50:46] INFO - file: tracker_client_thread.c, line: 315, successfully connect to tracker server 10.10.11.56:22122, as a tracker client, my ip is 10.10.11.35
[2024-12-16 16:50:46] INFO - file: tracker_client_thread.c, line: 2077, tracker server: #0. 10.10.11.35:22122, my_report_result: -1
[2024-12-16 16:50:46] INFO - file: tracker_client_thread.c, line: 315, successfully connect to tracker server 10.10.11.35:22122, as a tracker client, my ip is 10.10.11.35
[2024-12-16 16:50:47] INFO - file: tracker_client_thread.c, line: 2077, tracker server: #0. 10.10.11.35:22122, my_report_result: -1
[2024-12-16 16:51:16] INFO - file: tracker_client_thread.c, line: 1441, tracker server 10.10.11.56:22122, set tracker leader: 10.10.11.56:22122
[2024-12-16 16:51:16] INFO - file: tracker_client_thread.c, line: 790, my status: 6 (ONLINE) from tracker #0  != my status: 0 (INIT) from leader tracker #1, set report_my_status to true
[2024-12-16 16:51:16] INFO - file: storage_sync_func.c, line: 126, successfully connect to storage server 10.10.11.56:23000
[2024-12-16 16:51:16] INFO - file: tracker_client_thread.c, line: 2484, tracker server: 10.10.11.35:22122, try to set storage status from 6 (ONLINE) to 7 (ACTIVE)
[2024-12-16 16:51:17] INFO - file: tracker_client_thread.c, line: 315, successfully connect to tracker server 10.10.11.35:22122, as a tracker client, my ip is 10.10.11.35
[2024-12-16 16:51:46] INFO - file: storage_sync_func.c, line: 126, successfully connect to storage server 10.10.11.56:23000# 在139查看tracker日志
[2024-12-16 16:50:45] INFO - FastDFS v6.12.1, base_path=/var/fdfs, max_connections=1024, connect_timeout=5, network_timeout=60, thread_stack_size=256 KB, max_pkg_size=256 KB, min_buff_size=8 KB, max_buff_size=256 KB, tcp_quick_ack=1, log_level=INFO, run_by_group=, run_by_user=, error-log: {sync_log_buff_interval=1, rotate_everyday=1, rotate_time=00:00, rotate_on_size=0, compress_old=0, compress_days_before=1, keep_days=0, delete_old_time=01:30}, port=22122, bind_addr=, address_family=auto, accept_threads=1, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=1.00%, download_server=0, allow_ip_count=-1, check_active_interval=120s, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s, use_trunk_file=0, slot_min_size=256, slot_max_size=1024 KB, trunk_alloc_alignment_size=256, trunk_file_size=64 MB, trunk_create_file_advance=0, trunk_create_file_time_base=02:00, trunk_create_file_interval=86400, trunk_create_file_space_threshold=20 GB, trunk_init_check_occupying=0, trunk_init_reload_from_binlog=0, trunk_free_space_merge=1, delete_unused_trunk_files=0, trunk_compress_binlog_min_interval=86400, trunk_compress_binlog_interval=86400, trunk_compress_binlog_time_base=03:00, trunk_binlog_max_backups=7, use_storage_id=0, id_type_in_filename=ip, trust_storage_server_id=1, storage_id/ip_count=0 / 0, store_slave_file_use_link=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s
[2024-12-16 16:50:46] ERROR - file: tracker_service.c, line: 686, client ip: 10.10.11.56, leader 10.10.11.56:22122 not exist
[2024-12-16 16:50:47] INFO - file: tracker_mem.c, line: 4393, sys files loaded from tracker server 10.10.11.56:22122
[2024-12-16 16:50:47] INFO - file: tracker_relationship.c, line: 356, the tracker leader is 10.10.11.56:22122
[2024-12-16 16:51:15] WARNING - file: tracker_mem.c, line: 4963, storage server: 10.10.11.56:23000, dest status: 2, my status: 1, should change my status!
[2024-12-16 16:51:15] WARNING - file: tracker_mem.c, line: 4963, storage server: 10.10.11.56:23000, dest status: 5, my status: 2, should change my status!
[2024-12-16 16:51:16] INFO - file: tracker_service.c, line: 1229, client ip: 10.10.11.35, do NOT change storage status, old status: 7 (ACTIVE), new status: 7 (ACTIVE)

目录层级与配置文件

# 目录层级如下
data├── storage└── tracker├── data└── logs

查看集群信息

# 查看当前集群信息,任意节点的 storage 容器查看即可	
docker exec -it storage fdfs_monitor /etc/fdfs/client.conf  
# server_count = 2 表示 tracker 有两个
server_count=2, server_index=0tracker server is 10.10.11.35:22122group count: 1Group 1:
group name = group111
disk total space = 400,088 MB
disk free space = 15,674 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
storage server port = 23000
storage HTTP port = 8080
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0
。。。。。。
Storage 1:  # 表示第一个storage的信息id = 10.10.11.35ip_addr = 10.10.11.35  ACTIVE
。。。。。。
Storage 2:  # 第二个storage的信息id = 10.10.11.56ip_addr = 10.10.11.56  ACTIVE

测试

# 通过访问tracker接口上传,但有可能会报错文件过大
curl -F "file=@./test.txt" http://10.10.11.140:22122/upload# 通过容器内部命令上传
docker exec -it storage bash 
cd                      
echo 11111 > test.txt 
fdfs_test /etc/fdfs/client.conf upload test.txtThis is FastDFS client test program v6.12.1Copyright (C) 2008, Happy Fish / YuQingFastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.fastken.com/ 
for more detail.tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=10.10.11.35, port=23000server 2. group_name=, ip_addr=10.10.11.56, port=23000group_name=group111, ip_addr=10.10.11.56, port=23000
storage_upload_by_filename
group_name=group111, remote_filename=M00/00/00/CgoLOGdf6m6AeFMrAAAABqkTGlI497.txt
source ip address: 10.10.11.56
file timestamp=2024-12-16 16:53:02
file size=6
file crc32=2836601426
example file url: http://10.10.11.56/group111/M00/00/00/CgoLOGdf6m6AeFMrAAAABqkTGlI497.txt
storage_upload_slave_by_filename
group_name=group111, remote_filename=M00/00/00/CgoLOGdf6m6AeFMrAAAABqkTGlI497_big.txt
source ip address: 10.10.11.56
file timestamp=2024-12-16 16:53:02
file size=6
file crc32=2836601426
example file url: http://10.10.11.56/group111/M00/00/00/CgoLOGdf6m6AeFMrAAAABqkTGlI497_big.txt
root@localhost:~# curl http://10.10.11.56:8080/group111/M00/00/00/CgoLOGdf6m6AeFMrAAAABqkTGlI497_big.txt
11111
root@localhost:~# curl http://10.10.11.35:8080/group111/M00/00/00/CgoLOGdf6m6AeFMrAAAABqkTGlI497_big.txt
11111
  • 访问地址 http://10.10.11.35:8080/group111/M00/00/00/CgoLOGdf6m6AeFMrAAAABqkTGlI497_big.txt

  • fastdfs 集群直接的 storage 会自动同步数据,更换 ip 再次访问,也可以成功访问

测试集群扩容与缩减

  • 扩容:目前有两种方法,扩容容量需要增加硬盘,挂载分区,扩容节点需要增加新的 group,修改新节点的配置后就可以加入集群,原有集群有数据后是无法直接增加节点的,除了上面增加 group 的方法就只能清除数据重新部署节点,所以推荐在部署集群之前最好先确认架构,防止后续因为架构调整带来的不必要的麻烦
  • 缩减:由于集群会自动同步数据,要缩减直接直接关闭storage、修改nginx代理即可

nginx 负载配置(示例配置)

upstream storage {server 10.10.11.56:23000;server 10.10.11.35:23000;
}upstream storage_file {server 10.10.11.56:8080;server 10.10.11.35:8080;
}
upstream tracker {server 10.10.11.56:22122;server 10.10.11.35:22122;
}server {listen 23001 ;server_name _;location / {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Host $http_host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://storage;}
}server {listen 8889;server_name _;location / {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Host $http_host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://storage_file;}
}server {listen 22123;server_name _;location / {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Host $http_host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://tracker;}
}

注意事项

  • fastdfs 默认保留的磁盘空间为 10%,当至少有一个节点的磁盘存储小于或等于 10%时,文件无法写入,可以更改保留空间,修改 tracker 容器中 /etc/fdfs/tracker.conf,进入容器使用 echo “reserved_storage_space = 1%” >> /etc/fdfs/tracker.conf 追加,所有的 tracker 都需要更改,然后单独重启 tracker,清空原有数据,即 data 下的所有内容,重启 storage 即可
  • 如果遇到一直不同步的清空,则删除 等待节点,重新启动,或删除全部 数据,重新创建容器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/493450.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven-resources-production:ratel-fast: java.lang.IndexOutOfBoundsException

Maven生产环境中遇到java.lang.IndexOutOfBoundsException的问题,尝试了重启电脑、重启IDEA等常规方法无效,最终通过直接重建工程解决了问题。 Rebuild Project 再启动OK

1. JasperSoft介绍与安装

Jaspersoft介绍 Jaspersoft是一款开源的,强大灵活并且使用广泛的报表软件。能够展示丰富的页面内容,并将之转换成PDF、HTML或者XML格式,该库完全由Java写出,可以用于在各种Java应用程序,非常适合Java开发者用来做报表生…

知网研学 | 知网文献(CAJ+PDF)批量下载

知网文献(CAJPDF)批量下载 一、知网研学安装二、插件及脚本安装三、CAJ批量下载四、脚本下载及PDF批量下载浏览器取消拦截窗口 一、知网研学安装 批量下载知网文件,格式为es6文件,需使用知网研学软件打开,故需先安装该…

WeakAuras NES Script(lua)

WeakAuras NES Script 修星脚本字符串 脚本1:NES !WA:2!TMZFWXX1zDxVAs4siiRKiBN4eV(sTRKZ5Z6opYbhQQSoPtsxr(K8ENSJtS50(J3D7wV3UBF7E6hgmKOXdjKsgAvZFaPTtte0mD60XdCmmecDMKruyykDcplAZiGPfWtSsag6myGuOuq89EVDV9wPvKeGBM7U99EFVVVV33VFFB8Z2TJ8azYMlZj7Ur3QDR(…

[数据结构] 链表

目录 1.链表的基本概念 2.链表的实现 -- 节点的构造和链接 节点如何构造? 如何将链表关联起来? 3.链表的方法(功能) 1).display() -- 链表的遍历 2).size() -- 求链表的长度 3).addFirst(int val) -- 头插法 4).addLast(int val) -- 尾插法 5).addIndex -- 在任意位置…

springmvc的拦截器,全局异常处理和文件上传

拦截器: 拦截不符合规则的,放行符合规则的。 等价于过滤器。 拦截器只拦截controller层API接口。 如何定义拦截器。 定义一个类并实现拦截器接口 public class MyInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest reque…

RestTemplate远程调用、服务注册、

一.RestTemplate Spring给我们提供了一个RestTemplate的API,可以方便的实现Http请求的发送。 同步客户端执行HTTP请求,在底层HTTP客户端库(如JDK HttpURLConnection、Apache HttpComponents等)上公开一个简单的模板方法API。RestTemplate通过HTTP方法为常…

台球助教平台系统开发APP和小程序信息收藏功能需求解析(第十二章)

以下是开发台球助教系统客户端(APP,小程序,H5)几端的信息收藏功能的详细需求和功能说明,内容比较详细,可以说是一个教科书式的详细说明了,这套需求说明不仅仅用在我们的台球助教系统程序上&…

React系列(八)——React进阶知识点拓展

前言 在之前的学习中,我们已经知道了React组件的定义和使用,路由配置,组件通信等其他方法的React知识点,那么本篇文章将针对React的一些进阶知识点以及React16.8之后的一些新特性进行讲解。希望对各位有所帮助。 一、setState &am…

【开源免费】基于SpringBoot+Vue.JS房屋租赁管理系统(JAVA毕业设计)

本文项目编号 T 091 ,文末自助获取源码 \color{red}{T091,文末自助获取源码} T091,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

netcore 集成Prometheus

一、安装包 <ItemGroup><PackageReference Include"prometheus-net" Version"8.2.1" /><PackageReference Include"prometheus-net.AspNetCore" Version"8.2.1" /> </ItemGroup> 二、添加代码 #region Pro…

CLION中运行远程的GUI程序

在CLION中运行远程GUI程序&#xff0c;很有可能会遇到下面错误 Gtk-WARNING **: cannot open display: 这是因为远程的GUI程序不能再本地机器上显示。这个问题一般有两种解决方法 通过SSH的ForwardX11的方法&#xff0c;就是将远程的GUI程序显示到本地机器上&#xff0c;一般在…

datasets 笔记:加载数据集(基本操作)

参考了huggingface的教程 1 了解数据集基本信息&#xff08; load_dataset_builder&#xff09; 在下载数据集之前&#xff0c;通常先快速了解数据集的基本信息会很有帮助。数据集的信息存储在 DatasetInfo 中&#xff0c;可能包括数据集描述、特征和数据集大小等信息。&…

Java期末复习暨学校第十三次上机课作业

Java期末复习暨学校第十三次上机课作业&#xff1a; &#xff08;1&#xff09;&#xff1a;掌握正则表达式的使用 第一题&#xff1a; 第13行代码为正则表达式&#xff0c;中国内地的手机号必须是11个数字&#xff1a; &#xff08;1&#xff09; ^1&#xff1a;是该电话号码…

aosp15 - Activity生命周期切换

本文探查的是&#xff0c;从App冷启动后到MainActivity生命周期切换的系统实现。 调试步骤 在com.android.server.wm.RootWindowContainer#attachApplication 方法下断点&#xff0c;为了attach目标进程在com.android.server.wm.ActivityTaskSupervisor#realStartActivityLock…

【libuv】Fargo信令1:client发connect消息给到server

tcp 单机测试,进行模拟 (借助copilot实现) 【Fargo】28:字节序列client发connect消息给到serverserver 收到后回复ack给到客户端程序借助copilot实现。项目构建 Console依赖于Halo.dll提供的api,Halo 依赖于 Immanuel, 运行效果 遗留问题 客户端似乎么有逻辑收到ack做处理各…

libmodbus安装使用

要配置和编译 libmodbus&#xff0c;您需要确保安装了所有必要的依赖项&#xff0c;并按照正确的步骤进行操作。以下是详细的环境配置和编译指南&#xff0c;适用于不同的操作系统。 1. Linux (Debian/Ubuntu) 安装依赖项 首先&#xff0c;确保您的包列表是最新的&#xff1…

猫咪睡眠:萌态背后的奥秘与启示

猫咪的睡眠&#xff0c;犹如一本充满趣味与奥秘的小书&#xff0c;每一页都写满了它们独特的习性与本能。 猫咪堪称 “睡眠大师”&#xff0c;睡眠时间之长令人咋舌&#xff0c;一天中大约有 12 - 16 个小时在梦乡中度过&#xff0c;幼猫和老年猫甚至能睡更久。它们似乎深谙放…

关于小程序内嵌h5打开新的小程序

关于小程序内嵌h5打开新的小程序 三种方式 https://juejin.cn/post/7055551463489011749 只依赖于h5本身的就是 https://huaweicloud.csdn.net/64f97ebb6b896f66024ca16c.html https://juejin.cn/post/7055551463489011749 navigateToMiniProgram 故小程序webview里的h5无法…

免费GIS工具箱:轻松将glb文件转换成3DTiles文件

在GIS地理信息系统领域&#xff0c;GLB文件作为GLTF文件的二进制版本&#xff0c;主要用于3D模型数据的存储和展示。然而&#xff0c;GLB文件的使用频率相对较低&#xff0c;这是因为GIS系统主要处理的是地理空间数据&#xff0c;如地图、地形、地貌、植被、水系等&#xff0c;…