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.mzph.cn/bicheng/64333.shtml

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

相关文章

零基础开始学习鸿蒙开发-基础页面的设计

目录 1.样例图 2.逐项分析 2.1 头顶布局分析:首先我们要把第一行的图标绘制出来,一个左一个右,很明显,需要放在一个Row容器中,具体代码如下: 2.2 和头像同一行的布局,需要注意的是&#xff0c…

如何用细节提升用户体验?

前端给用户反馈是提升用户体验的重要部分,根据场景选择不同的方式可以有效地提升产品的易用性和用户满意度。以下是常见的方法: 1. 视觉反馈 用户执行了某些操作后,需要即时确认操作结果。例如:按钮点击、数据提交、页面加载等。…

[数据结构#2] 图(1) | 概念 | 邻接矩阵 | 邻接表 | 模拟

图是由顶点集合及顶点间的关系(边)组成的数据结构,可用 G ( V , E ) G(V,E) G(V,E)表示,其中: 顶点集合 V V V: V { x ∣ x ∈ 某数据对象集 } V\{x|x\in\text{某数据对象集}\} V{x∣x∈某数据对象集},…

学习maven(maven 项目模块化,继承,聚合)

前言 本篇博客的核心:理解maven 项目模块化,继承,聚合 的含义 maven 项目模块化 含义 maven项目模块化:使用maven 构建项目,管理项目的方式,我们可以将maven项目根据内在的关系拆分成很多个小项目【模块】…

【OJ题解】最长回文子串

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 📘 基础数据结构【C语言】 💻 C语言编程技巧【C】 🚀 进阶C【OJ题解】 📝 题解精讲 目录 **题目链接****解题思路****1. 初步判断****2. 回文子串性质****3. 判断是…

EMQX 可观测性最佳实践

EMQX 介绍 EMQX 是一款开源、高度可伸缩、高可用的分布式 MQTT 消息服务器,同时也支持 CoAP/LwM2M 等一站式 IoT 协议接入。以下是 EMQX 的一些主要特点和功能: 海量连接与高并发:EMQX 能够处理千万级别的并发客户端,支持大规模…

kubeadm_k8s_v1.31高可用部署教程

kubeadm_k8s_v1.31高可用部署教程 实验环境部署拓扑图**署架构方案****Load Balance****Control plane node****Worker node****资源分配(8台虚拟机)**集群列表 前置准备关闭swap开启ipv4转发更多设置 1、Verify the MAC address and product_uuid are u…

mysql flink cdc 实时数据抓取

背景 通过监控mysql日志,获取表字段更新,用来做实时展示。 使用技术:Flink CDC Flink CDC 基于数据库日志的 Change Data Caputre 技术,实现了全量和增量的一体化读取能力,并借助 Flink 优秀的管道能力和丰富的上下游…

element plus el-select修改后缀图标

<el-selectv-model"value"placeholder"请选择工点"size"large":teleported"false":suffix-icon"CaretBottom"style"width: 100px"><el-optionv-for"item in options":key"item.value&quo…

自动驾驶控制与规划——Project 2: 车辆横向控制

目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu&#xff0c;…

Qt6开发自签名证书的https代理服务器

目标&#xff1a;制作一个具备类似Fiddler、Burpsuit、Wireshark的https协议代理抓包功能&#xff0c;但是集成到自己的app内&#xff0c;这样无需修改系统代理设置&#xff0c;使用QWebengineview通过自建的代理服务器&#xff0c;即可实现https包的实时监测、注入等自定义功能…

Windows如何安装Php 7.4

一、进入官网&#xff0c;选择其他版本 https://windows.php.net/download/ 二、配置环境变量 将解压后的php 路径在系统环境变量中配置一下 cmd 后输入 php-v

ensp 静态路由配置

A公司有广州总部、重庆分部和深圳分部3个办公地点&#xff0c;各分部与总部之间使用路由器互联。广州、重庆、深圳的路由器分别为R1、R2、R3&#xff0c;为路由器配置静态路由&#xff0c;使所有计算机能够互相访问&#xff0c;实训拓扑图如图所示 绘制拓扑图 给pc机配置ip地址…

红米Note 9 Pro5G刷LineageOS

LineageOS介绍 LineageOS 是一个基于 Android 的开源操作系统&#xff0c;是面向智能手机和平板电脑等设备的替代性操作系统。它是 CyanogenMod 的继承者&#xff0c;而 CyanogenMod 是曾经非常受欢迎的一个第三方 Android 定制 ROM。 在 2016 年&#xff0c;CyanogenMod 项目因…

ECharts实现数据可视化入门详解

文章目录 ECharts实现数据可视化入门详解一、引言二、基础配置1.1、代码示例 三、动态数据与交互2.1、代码示例 四、高级用法1、多图表组合1.1、在同一容器中绘制多个图表1.2、创建多个容器并分别初始化 ECharts 实例1.3、实现多图联动 五、总结 ECharts实现数据可视化入门详解…

盲盒3.0版h5版-可打包app-新优化版紫色版

整体界面ui美观大气&#xff0c;盲盒项目也是一直比较热门的&#xff0c;各大平台一直自己也有做。 感兴趣的小伙伴可以搭建做自己的项目。盲盒项目的利润率还是很大的。

MacbookPro M1 安装Hive

前提注意⚠️⚠️⚠️ 1&#xff09;在安装Hive前确实需要安装MySQL&#xff0c;因为Hive可以使用MySQL作为元数据存储 2&#xff09;在安装Hive之前&#xff0c;需要先安装Hadoop。Hive是一个构建在Hadoop之上的数据仓库软件&#xff0c;它使用Hadoop的HDFS&#xff08;分布…

Crawl4AI:一个为大型语言模型(LLM)和AI应用设计的网页爬虫和数据提取工具实战

这里写目录标题 一、crawl4AI功能及简介1、简介2、特性 二、项目地址三、环境安装四、大模型申请五、代码示例1.生成markdown2.结构化数据 一、crawl4AI功能及简介 1、简介 Crawl4AI 是一个开源的网页爬虫和数据抓取工具&#xff0c;一个python项目&#xff0c;主要为大型语言…

游戏引擎学习第50天

仓库: https://gitee.com/mrxiao_com/2d_game Minkowski 这个算法有点懵逼 回顾 基本上&#xff0c;现在我们所处的阶段是&#xff0c;回顾最初的代码&#xff0c;我们正在讨论我们希望在引擎中实现的所有功能。我们正在做的版本是初步的、粗略的版本&#xff0c;涵盖我们认…

深度解读:Top14金融顶刊

作者Toby&#xff1a;来源&#xff1a;Python风控模型&#xff0c;Top14金融顶刊 各位同学好&#xff0c;我是Toby老师&#xff0c;今天为大家介绍金融风控领域的顶级学术期刊&#xff0c;用于小论文发布平台参考。 金融风控领域内有许多顶级学术期刊&#xff0c;它们发表高质…