seaweedfs 部署使用

article/2025/10/14 19:09:56

seaweedfs是一个非常优秀的由 golang 开发的分布式存储开源项目。它是用来存储文件的系统

seaweedfs的特点: 
1 可以成存储上亿的文件(根据你硬盘大小变化) 
2 速度快

weed-fs自身可以在两种模式下运行,一种是Master,另外一种则是Volume。集群的维护以及强一致性的保证由master们保 证,master间通过raft协议实现强一致性。Volume是实际管理和存储数据的运行实例。数据的可靠性则可以通过weed-fs提供的 replication机制保证。

master可以有一个或多个,master 存储映射关系,文件和fid的映射关系 weed master
Node  系统抽象的结点,抽象为datacenter、rack、datanode
datacenter 数据中心,包含多个rack,类似一个机房
rack :属于一个datacenter,类似机房中的一个机架
datanode : 存储节点,存储多个volume,类似机架中的一个机器 weed volume
volume :逻辑卷,存储needle
needle: 逻辑卷中的object,对应存储的文件
collection:文件集,默认所有文件都属于""文件集。如果想给某些文件单独分类,可以在申请id的时候指定相同的文件集
filer :指向一个或多个master的file服务器,多个使用逗号隔开。  weed filer
weed volume会创建一个 datanode ,可以指定所属的 datacenter rack和master ,会根据配置存储文件,默认一开始没有volume,当开始存储文件的时候才会创建一个volume,当这一个volume大小超过了volumeSizeLimitMB 就会新增一个volume,当volume个数超过了max则该datanode就不能新增数据了。那就需要在通过weed volume命令新增一个datanode。

和master一样,volume本身就是靠master管理的,volume server之间没有什么联系,增加一个volume server要做的就是启动一个新的volume server就好了,新volume server节点启动后,同样会自动加入集群,后续master就会自动在其上存储数据了。

volume个数和最大存储
默认最大7个,你可以设置100等等。。。
volume的备份机制 Replication
默认000  不备份
defaultReplication
000 不备份, 只有一份数据
001 在相同的rackj里备份一份数据
010 在相同数据中心内不同的rack间备份一份数据
100 在不同的数据中心备份一份数据
200 在两个不同的数据中心各复制2次
110 在不同的rack备份一份数据, 在不同的数据中心备份一次
如果数据备份类型是 xyz形式
各自的意义
x 在别的数据中心备份的份数
y 不相同数据中心不同的racks备份的份数
z 在别的服务器相同的rack的备份份数

filer的使用
直接往weed filer中拷贝目录或者文件(-include是文件模式通配符前使用??)
weed filer.copy nginxdir http://localhost:8888/aaa  把nginxdir拷贝到aaa目录下
weed filer.copy -include *.go . http://localhost:8888/github/

开始部署:centos7,安装go语言

yum -y install epel*
yum -y install golang

下载seeweedfs

wget  https://github.com/chrislusf/seaweedfs/releases/download/0.76/linux_amd64.tar.gz
tar -C /usr/local/ -xzf linux_amd64.tar.gz

进入解压目录,以守护进程启动seaweedfs的主服务及集群(在启动前,先要创建相应的目录,/data/fileData,/data/t_v1,/data/t_v2,/data/t_v3)

mkdir -p /data/fileData
mkdir /data/t_v1
mkdir /data/t_v2
mkdir /data/t_v3

启动master:

cd /usr/local

nohup ./weed master -mdir=/data/fileData -port=9333 -defaultReplication="001" -ip="10.24.45.14" >>/data/fileData/server_sfs.log &

挂载卷volume

./weed volume -dir=/data/t_v1 -max=5 -mserver="10.24.45.14:9333" -port=9080 -ip="10.24.45.14" >>/data/t_v1_sfs.log &

./weed volume -dir=/data/t_v2 -max=5 -mserver="10.24.45.14:9333" -port=9081 -ip="10.24.45.14" >>/data/t_v2_sfs.log &

./weed volume -dir=/data/t_v3 -max=5 -mserver="10.24.45.14:9333" -port=9082 -ip="10.24.45.14" >>/data/t_v3_sfs.log &

1、-mdir和-dir表示该DataNode数据存储的目录;
2、-max表示volume个数最大值;
3、-mserver表示Master地址;
4、-port该DataNode监听的端口;

#将上面的ip地址换为具体的ip即可,默认可设为10.24.45.14。volume多少可以根据自己的情况添加。

#一个 MasterServer 对应三个 VolumeServer ,设置复制模式为 “001” , 也就是在相同 Rack 下复制副本为一份,也就是总共有两份

查看主服务和volume端口:

浏览器访问:http://ip:9333

使用接口,申请一个fid

(1)获取fid,使用GET或POST访问路径http://10.24.45.14:9333/dir/assign获取fid和上传文件地址,如下:

curl -X POST http://10.24.45.14:9333/dir/assign

seaweedfs会返回json的结果:

{"fid":"1,08e684f060","url":"10.24.45.14:9080","publicUrl":"10.24.45.14:9080","count":1}

#fid就是上传的标志

使用url或者publicUrl加上fid,就是文件上传的地址。如下:

#http://localhost:9080/1,08e684f060

接着就可以发起一个PUT或POST请求到上面的地址,把文件上传上去。

curl -X PUT -F file=@/root/t017dd6c89c1d818a2d.jpg http://10.24.45.14:9080/1,02977c9e1b

结果如下:

{"name": " t017dd6c89c1d818a2d.jpg ","size": 64300
}

(2)如果要更新一个文件,直接发起POST或者PUT请求到url+fid的地址即可。fid就是保存图片使用的fid。

(3)删除图片发起一个DELETE请求即可。

curl -X DELETE http://10.24.45.14:8080/1,08e684f060

(4)查看文件,需要fid。就是刚刚上传图片得到的fid。可以将其保存在数据库当中,查找文件时再调用。

当有多个Volume集群时,可以通过参数指定查看某个卷。

curl http://10.24.45.14:9333/dir/lookup?volumeId=2

得到具体的地址:

{"volumeId":"2","locations":[{"url":"10.24.45.14:9081","publicUrl":"10.24.45.14:9081"}]}

然后访问具体的路由:

#http:// 10.24.45.14:9081/fid

比如:http://10.24.45.14:9080/1,02977c9e1b

SeaweedFS命令集:
benchmark 
backup  
compact 
filer
fix
server 
master 
filer 
s3 
upload 
download 
shell 
version 
volume
export
mount 

 查看数据目录:


http://chatgpt.dhexx.cn/article/L6vZypIw.shtml

相关文章

SeaweedFs分布式文件存储实战

背景: 需求重点:大量小文件,读场景多,磁盘存储有限,要能支持fuse挂载,兼容s3接口 公司最近要进行分布式文件服务的选型,起因是因为公司目前有一些设备上报的文件或者日志性能管理文件需要定时…

SEA~~

抹平One-Stage与Two-Stage目标检测之间的差距 ,重新讨论了单阶段和两阶段的检测器蒸馏任务 在这讨论了单阶段和两阶段的检测器蒸馏任务,并提出了一个简单而有效的语义感知框架来填补它们之间的空白。作者通过设计类别Anchor来生成每个类别的代表性模式,…

SeaweedFS容器部署(seaweed部署、seaweedfs部署)(文件块chunks概念)(master节点与volume节点通信原理)(seaweed上传seaweed下载)

官网链接:https://github.com/seaweedfs 文章目录 seaweed简介seaweedfs文件块概念(chunks)分布式部署时master节点与volume节点通信原理seaweed容器部署方法单个节点部署部署方法(mastervolum)(mastervolu…

seaweedfs服务启动参数及翻译(seaweed参数、seaweed命令、weed参数、weed命令)(在单个容器同时启动master、volume、filer服务)

文章目录 weed命令翻译weed server命令翻译 weed filer命令 docker容器运行示例(docker run命令)以下是一个在单个容器启动master、volume、filer服务的示例 weed server 容器debug 版本:3.47从官方镜像docker容器里扒下来的,只扒…

Paramiko: Python使用paramiko连接主机报错“Authentication timeout”

问题描述: 在用Python Paramiko库去连接主机时 始终无法连接,exception输出错误仅有 Authentication timeout connection paramiko.SSHClient()connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:connection.connect(hostname192.1…

安装paramiko模块

使用Python实现自动化运维巡检网络设备,需要使用到paramiko模块 下载过程: 进入至CMD命令提示符 win r 跳转出 " 运行 " 窗口 打开内输入" cmd " 进入命令提示符 安装paramiko模块 cmd输入:pip install paramiko PS&…

python-paramiko安装

paramiko 安装坑比较多 测试环境: python3.7.9 win10 安装步骤: pip install pep517 pip install cryptography pip install paramiko

Python paramiko 模块详解与SSH主要功能模拟

我们知道,通过SSH服务可以远程连接到Linux服务器,查看上面的日志状态,批量配置远程服务器,文件上传,文件下载等,Python的paramiko模块同样实现了这一功能。 首先我们需要安装这一模块,pycharm环…

paramiko的安装

import paramiko 出错 直接通过下列代码即可,无需安装VS之类的 pip install paramiko 再上一步安装了paramiko之后,若您安装了pycharm ,博主安装的是pycharm 2018 community版则可通过File --> setting -->下列方式 步骤1&#xf…

Python模块之paramiko

Paramiko paramiko模块,基于SSH用于连接远程服务器并执行相关操作。 一、安装 1 pip3 install paramiko 二、使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 import paramiko2 3 # 创建SSH对象4 ssh paramiko.SSHCli…

python之paramiko模块

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。 由于使用的是python这样的能够跨平台运行…

Python--paramiko

Paramiko paramiko模块,基于SSH用于连接远程服务器并执行相关操作。 一、安装 1 pip3 install paramiko 二、使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko# 创建SSH对象 ssh paramiko.SSHClient() # 允…

Python笔记之paramiko模块安装和使用示例

一、paramiko模块简介 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,基于linux中的ssh服务 。paramiko是第三方模块,需要我们单独安装。通过paramiko模块,我们可以利用python代码程序实现对…

【Python-自动化】paramiko模块

文章目录 运维自动化Python一、模块介绍二、模块应用1.使用paramiko模块,通过ssh协议连接服务器2.解决首次连接known_hosts问题3、执行命令exec_command方法扩展:使用try异常捕获 4、多台服务器执行命令5、从服务器上传下载文件--SFTPClient方法6、多台服…

HttpClient和HtmlUnit的比较总结以及使用技巧(一)

大家在做爬虫、网页采集、通过网页自动写入数据时基本上都接触过这两个组件(权且称之为组件吧),网上入门资料已经很多了,我想从实际的应用角度谈谈我对于这两个组件的看法,并记录在博客中,以便日后翻阅&…

htmlUnit的读取js渲染的页面

htmlUnit的读取js渲染的页面 我这边有个这么的需求,要求前端每次上版本的时候,有一个版本号。然后后端去爬前端,比较禅道的版本发布计划,如果发布计划和生产上的版本号不一致,就告警。 这个跟后端的jar包&#xff0c…

HtmlUnit

HtmlUnit是什么?看下介绍: A java GUI-Less browser, which allows high-level manipulation of web pages, such as filling forms and clicking links; just getPage(url), find a hyperlink, click() and you have all the HTML, JavaScript, and A…

HtmlUnit使用

htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。是一个没有界面的浏览器,运行速度迅速。是junit的扩展之一,它采用…

【转】 HtmlUnit简介

HtmlUnit简介: 引自 http://www.javaeye.com/topic/166702 HtmlUnit 是 JUnit 的扩展测试框架之一。HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了。HtmlUnit 使用例如 table、form 等标识符将测试文档作为 HTML 来处理。它同样需要遵…

HtmlUnit(Java) - 快速入门学习 - 无界面浏览器

文章目录 1. 概述2. 注意2.0 js解析问题2.1 关闭HtmlUnit日志 3. 使用3.1 抓取IT之家周榜内容 - 单页面3.2 抓取IT之家周榜第九篇文章的内容 - 双页面3.3 模拟用户操作 - (这个功能个人感觉非常非常的鸡肋,只能用于非常简单的JS,但是一般网站…