使用docker部署fastdfs集群版

2023-11-10

一、前言

本文档说明在node01和node02两台主机上安装部署FastDFS双节点。
node01 ip:198.168.1.121 安装tracker1,storage1
node02 ip:198.168.1.122 安装tracker2,storage2

若要扩展更多tracker或storage节点,也是类似操作。

二、拉取fastdfs docker镜像

docker pull morunchang/fastdfs

三、安装fastdfs tracker

3.1 在node01和node02上安装tracker

在node01和node02上分别执行以下操作
注意:以下操作指令在node01中执行,在node02操作时,将tracker1改为tracker2

1)创建文件夹

	mkdir -p /apps/fastdfs/tracker1/data /apps/fastdfs/tracker1/conf

2)写入/apps/fastdfs/tracker1/conf/tracker.conf

	disabled=false
	bind_addr=
	port=22122
	connect_timeout=30
	network_timeout=30
	base_path=/data/fast_data
	max_connections=256
	accept_threads=1
	work_threads=4
	store_lookup=2
	store_group=group1
	store_server=0
	store_path=0
	download_server=0
	reserved_storage_space = 10%
	log_level=info
	run_by_group=
	run_by_user=
	allow_hosts=*
	sync_log_buff_interval = 10
	check_active_interval = 120
	thread_stack_size = 64KB
	storage_ip_changed_auto_adjust = true
	storage_sync_file_max_delay = 86400
	storage_sync_file_max_time = 300
	use_trunk_file = false 
	slot_min_size = 256
	slot_max_size = 16MB
	trunk_file_size = 64MB
	trunk_create_file_advance = false
	trunk_create_file_time_base = 02:00
	trunk_create_file_interval = 86400
	trunk_create_file_space_threshold = 20G
	trunk_init_check_occupying = false
	trunk_init_reload_from_binlog = false
	trunk_compress_binlog_min_interval = 0
	use_storage_id = false
	storage_ids_filename = storage_ids.conf
	id_type_in_filename = ip
	store_slave_file_use_link = false
	rotate_error_log = false
	error_log_rotate_time=00:00
	rotate_error_log_size = 0
	log_file_keep_days = 0
	use_connection_pool = false
	connection_pool_max_idle_time = 3600
	http.server_port=8080
	http.check_alive_interval=30
	http.check_alive_type=tcp
	http.check_alive_uri=/status.html

3)运行tracker1的docker容器

docker run -d --name tracker1 --net=host --restart always \
-v /etc/localtime:/etc/localtime \
-v /apps/fastdfs/tracker1/data:/data/fast_data/ \
-v /apps/fastdfs/tracker1/conf/tracker.conf:/etc/fdfs/tracker.conf \
morunchang/fastdfs sh tracker.sh

4)查看docker日志是否启动正常

docker logs tracker1

5)开启防火墙端口:22122

firewall-cmd --zone=public --add-port=22122/tcp --permanent
firewall-cmd --reload

四、安装fastdfs storage

4.1 在node01和node02上安装storage

在node01和node02上分别执行以下操作
注意:以下操作指令在node01中执行,在node02操作时,将storage1改为storage2

1)创建文件夹

mkdir -p /apps/fastdfs/storage1/data /apps/fastdfs/storage1/conf

2)写入/apps/fastdfs/storage1/conf/storage.conf

disabled=false
group_name=group1
bind_addr=
client_bind=true
port=23002
connect_timeout=30
network_timeout=30
heart_beat_interval=30
stat_report_interval=60
base_path=/data/fast_data
max_connections=256
buff_size = 256KB
accept_threads=1
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
store_path0=/data/fast_data
subdir_count_per_path=256
tracker_server=198.168.1.121:22122
tracker_server=198.168.1.122:22122
log_level=debug
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = true
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=9101

3)写入/apps/fastdfs/storage1/conf/nginx.conf

worker_processes  1;
error_log  /data/fast_data/logs/nginx-error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /data/fast_data/logs/nginx-access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       9101;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~ /group1/M00 {
                    root /data/fast_data/data;
                    ngx_fastdfs_module;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

4)写入/apps/fastdfs/storage1/conf/mod_fastdfs.conf

connect_timeout=30
network_timeout=30
base_path=/data/fast_data
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
tracker_server=198.168.1.121:22122
tracker_server=198.168.1.122:22122
storage_server_port=23002
group_name=group1
url_have_group_name = true
store_path_count=1
store_path0=/data/fast_data
log_level=info
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 0

5)写入/apps/fastdfs/storage1/conf/storage.sh

#!/bin/sh
/data/fastdfs/storage/fdfs_storaged /etc/fdfs/storage.conf
/etc/nginx/sbin/nginx
tail -f /data/fast_data/logs/storaged.log

6)写入/apps/fastdfs/storage1/conf/client.conf

# connect timeout in seconds
# default value is 30s
connect_timeout=30

# network timeout in seconds
# default value is 30s
network_timeout=30

# the base path to store log files
base_path=/data/fastdfs/test

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address

tracker_server=198.168.1.121:22122
tracker_server=198.168.1.122:22122

#standard log level as syslog, case insensitive, value list:
### emerg for emergency
### alert
### crit for critical
### error
### warn for warning
### notice
### info
### debug
log_level=info

# if use connection pool
# default value is false
# since V4.05
use_connection_pool = false

# connections whose the idle time exceeds this time will be closed
# unit: second
# default value is 3600
# since V4.05
connection_pool_max_idle_time = 3600

# if load FastDFS parameters from tracker server
# since V4.05
# default value is false
load_fdfs_parameters_from_tracker=false

# if use storage ID instead of IP address
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# default value is false
# since V4.05
use_storage_id = false

# specify storage ids filename, can use relative or absolute path
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# since V4.05
storage_ids_filename = storage_ids.conf

#HTTP settings
http.tracker_server_port=80

#use "#include" directive to include HTTP other settiongs
##include http.conf

7)运行docker容器

docker run -d --name storage1 --net=host --restart always \
-v /etc/localtime:/etc/localtime \
-v /apps/fastdfs/storage1/data:/data/fast_data/ \
-v /apps/fastdfs/storage1/conf/storage.sh:/storage.sh \
-v /apps/fastdfs/storage1/conf/storage.conf:/etc/fdfs/storage.conf \
-v /apps/fastdfs/storage1/conf/nginx.conf:/etc/nginx/conf/nginx.conf  \
-v /apps/fastdfs/storage1/conf/mod_fastdfs.conf:/etc/fdfs/mod_fastdfs.conf \
-v /apps/fastdfs/storage1/conf/client.conf:/data/fastdfs/conf/client.conf \
morunchang/fastdfs sh storage.sh

8)查看docker日志是否正常

docker logs storage1

9)开启防火墙端口:23002、9101

firewall-cmd --zone=public --add-port=23002/tcp --add-port=9101/tcp --permanent
firewall-cmd --reload

五、验证fastdfs是否安装成功

说明:以下操作在node01中进行。

5.1查看FastDFS监控状态

docker exec -it storage1 fdfs_monitor /data/fastdfs/conf/client.conf

参数说明:
tracker_server_count:2 --表示2个Tracker Server
tracker server is 198.168.1.121:22122 --表示Leader Tracker
group count: 1 --表示有1个group
group name = group1 --组名称是group1
storage server count = 2 --组内有2个storage
active server count = 2 --活动的storage有2个
storage server port = 23002 --storage的端口
storage HTTP port = 9101 --storage的文件访问端口
store path count = 1 --storage只挂了一个存储目录
total_upload_count = 11 --总共上传了多少个文件
total_upload_bytes = 691405 --总共上传了多少字节
success_upload_bytes = 691405 --成功上传了多少字节
total_download_count = 2 --总共下载了多少文件(使用java客户端)

5.2上传文件到FastDFS

docker exec -it storage1 bash
cd /data/fastdfs/conf
fdfs_test client.conf upload anti-steal.jpg

文件上传成功后,会提示文件访问地址,同时会自动同步到storage2,因此也可以通过storage2的IP,访问文件。

由于storage1的http端口配置为9101,所以真正的访问地址是:
(示例地址)http://198.168.1.121:9101/group1/M00/00/00/xowDSFyCEcyAVz4gAABdrZgsqUU908.jpg
storage2的访问地址是:
(示例地址)http://198.168.1.122:9101/group1/M00/00/00/xowDSFyCEcyAVz4gAABdrZgsqUU908.jpg

5.3下载文件

curl http://198.168.1.121:9101/group1/M00/00/00/xowDSFyCEcyAVz4gAABdrZgsqUU908.jpg
curl http://198.168.1.122:9101/group1/M00/00/00/xowDSFyCEcyAVz4gAABdrZgsqUU908.jpg
能下载文件就表示fastdfs同步文件成功,也表示fastdfs安装配置成功。

5.4统计Storage文件数量

进入storage的data目录,执行以下指令

cd /apps/fastdfs/storage1/data/data
ls -lR|grep "^-"|wc -l

或者进入data目录下的sync目录,执行以下指令

cat binlog.000 | wc -l

binlog.000保存了storage中所有文件名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用docker部署fastdfs集群版 的相关文章

随机推荐

  • 【计算机网络】TCP报文段详解

    本文为借阅书籍资料 观看他人博客总结得出 欢迎提问 一 前期说明 TCP虽然是面向字节流的 但是在网络中的传输单元确实是报文段的格式 一个TCP报文段分为首部和数据两个部分 而协议的全部实现都在TCP报文段的首部体现出来的 只有先理解首部各
  • 【计算机视觉】ViT:代码逐行解读

    文章目录 一 代码 二 代码解读 2 1 大体理解 2 2 详细理解 一 代码 import torch import torch nn as nn from einops import rearrange from self attent
  • 如何调整图片分辨率大小(适用于电脑/手机)

    随着智能手机快速发展 相机分辨率也从几百万像素升级到上千万 甚至上亿像素 超高像素的图片不仅会占用越来越多的存储空间 还会在上传和分享时耗费不少时间 而且在一些特殊APP或者网站上传图片时 可能对图片宽高分辨率有要求 这些时候 就需要我们调
  • ARP Proxy

    ARP Proxy原理 当主机没有配置网关 发一个请求目的MAC地址 ARP Proxy会使用自己的MAC地址作为该ARP请求的的回应 分类 路由式ARP Proxy 实现同一网段 请求的是目的MAC地址 不同物理位置 中间有三层设备 的互
  • 开源大模型详解

    作者 Linux猿 简介 CSDN博客专家 华为云享专家 Linux C C 云计算 物联网 面试 刷题 算法尽管咨询我 关注我 有问题私聊 欢迎小伙伴们点赞 收藏 留言 本篇文章主要对开源大模型进行总结和介绍 一 什么是大模型 大模型指网
  • 吐槽记~(这个帖子是我的垃圾桶)~哈哈

    我倒是要看看tamen到底有多少该吐槽的点 一 令人窒息的业务 初见 1 收到原始需求文档 涉及前后端开发 涉及流程 但是无流程图 无UI图 全文字描述 2 过需求会议 来一份会议纪要 加20个修改点 3 再来一个会议 提出15个修改点 开
  • mpvue小程序实战项目开发记录篇(二)

    六 mpvue的能力 1 彻底的Vue组件化开发能力 提高代码复用性 2 完整的vue开发体验 3 快捷的 webpack 构建机制 开发阶段 hotReload 4 支持npm安装依赖 5 使用 Vue js 命令行工具 vue cli
  • 手机闪存速度排行_手机闪存性能排行

    手机专用闪存主要分为eMMC和UFS两大类别 前者仅支持并行读写 即半双工运行 读写必须分开执行 哪怕是最新的eMMC5 1标准其顺序读取和写入速度也不过300MB s和200MB s左右 常见于售价低于千元的入门级4G手机市场 UFS自诞
  • Win10 某个移动硬盘不自动分配盘符

    简单来说就是某个移动硬盘不自动分配盘符 每次都要到磁盘管理里面手动分配盘符 而且每次删除设备后 手动分配的盘符不消失 1 使用管理员启动 CMD 命令提示符 2 输入 diskpart 3 列出磁盘 list disk 4 选择磁盘 sel
  • 创建动态数组键盘输入一个正整数 n,创建大小为 n 的数组(采用动态数组的方式),将数组中的元素初始化为 n、n+1、...、2n - 1。并输出数组中的元素。输入描述:键盘输入一个正整数 n输

    include
  • 【QT 网络云盘客户端】——实现文件属性窗口

    目录 文件属性对话框 设置字体样式 获取文件的信息 显示文件属性对话框 当我们点击文件中的属性 则会弹出一个属性对话框 实现过程 0 设置 属性 菜单项的槽函数 1 鼠获取鼠标选中的QListWidgetItem 它包含 图标和文件名 2
  • 代码重构与单元测试——重构1的单元测试(四)

    四 重构1的vb net教程单元测c 教程试 程序开发过程中 写代码是为了实现需求 当我们的代码通过了编译 只是说明它的语法正确 功能能否实现则不能保证 因此 当我们的某些功能代码完成后 为了检验其是否满足程序的需求 可以通过编写测试代码
  • java自动化测试语言高级之多线程编程

    java自动化测试语言高级之多线程编程 Java 多线程编程 Java 给多线程编程提供了内置的支持 一条线程指的是进程中一个单一顺序的控制流 一个进程中可以并发多个线程 每条线程并行执行不同的任务 多线程是多任务的一种特别的形式 但多线程
  • Fiddler工具使用汇总

    Fiddler工作原理 fiddler作为一个代理服务器 跟浏览器建立连接之后 浏览器像目标服务器发送的请求都会经过fiddler代理 所以fiddler可以捕获到http s 请求 从而可以解释 分析 甚至重写发出去的http s 请求
  • Conda、pip下载包:PackagesNotFoundError: The following packages are not available from current channels:

    1 问题 安装包的时报下面错误 安装包之前查一下当前环境对应的包的版本 conda search 包名 2 解决方法1 报错原因是当前镜像中不存在这个包 解决方法如下 直接去官网https anaconda org 搜包名 找到对应的版本点
  • ESXI虚拟机 - 使用vmdk虚拟机转换为OVF模板,导入ESXI

    目录 一 前提条件 二 转换为OVF模板 三 导入ESXI系统 四 安装时可能会出现的问题 一 前提条件 已安装VMware Workstation 并且创建了一个的虚拟机 此处以win8 1为例 已存在ESXI系统 二 转换为OVF模板
  • 包装类Integer判断“==”相等

    今日小编在复习Java基本数据操作类是发现的遗忘问题 是Integer的 比较问题 与大家进行分享 示例代码如下 public class IntegerComparison public static void main String a
  • 四因素三水平正交试验表_最简单的正交试验教程,一次性搞懂它

    大家好 今天要分享的是正交试验设计与结果检验过程 正交试验设计时试验优化的常用技术 它可以通过科学合理地设计 达到用较少的试验次数 取得较为准确可靠的结果 正交试验设计一般包括以下几步 确定研究因素和指标水平 制作成正交试验表格 实施试验
  • seaborn简明教程(一)

    1 Seaborn简介 seaborn是基于matplotlib的数据可视化库 它在matplotlib的基础上 进行了更高级的API封装 从而使得绘图更加容易 不需要经过大量的调整 就能使图形变得精致 seaborn的几个鲜明特点如下 绘
  • 使用docker部署fastdfs集群版

    一 前言 本文档说明在node01和node02两台主机上安装部署FastDFS双节点 node01 ip 198 168 1 121 安装tracker1 storage1 node02 ip 198 168 1 122 安装tracke