Docker seaweedfs

article/2025/10/14 18:17:51

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

关于seaweedfs的介绍我就不在此文赘述,本文的主要目的是讲述我在docker中运行seaweedfs遇到的一些问题。

这是我搜集的一些关于SeaWeedFS的资料

 

ps.不管是在物理机还是docker之中运行seaweedfs,建议为volume开放publicUrl,且该url最好为域名形式,通过nginx或者apache进行端口转发。

 

Docker SeaWeedFS的使用

方式1:自定义

【Docker】seaweedfs的搭建与使用

https://blog.csdn.net/ns2250225/article/details/69568243

如果自定义镜像,我可能会选择From ubuntu作为基础镜像

方式2:使用官方镜像 (推荐使用官方镜像)

chrislusf/seaweedfs

ps:seaweedfs官方docker镜像使用的alpine作为基础镜像,进入容器的命令是

docker exec -it container_name sh

 

docker与docker compose的安装

(以前总是直接去docker官方安装,慢的要死要死的)

1.docker pull chrislusf/seaweedfs

国内pull镜像较慢,可使用各大厂商提供的加速器,我使用的是DaoCloud(网友提供)

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8ad7943c.m.daocloud.io

systemctl restart docker

2.利用docker-compose 进行启动

创建docker-compose.yml,参考:https://github.com/chrislusf/seaweedfs/blob/master/docker/docker-compose.yml

后文会给出我的docker-compose.yml

启动: docker-compose up -d

关闭: docker-compose down

 

方式2:

https://github.com/chrislusf/seaweedfs/wiki/Getting-Started

 

建议在启动volume节点的时候加入publicUrl的参数,可以省掉很多麻烦。

publicUrl有两种方式,域名或者 ip:port都可以,域名建议通过nginx或者apache进行转发, ip:port则可以直接使用。

 

用下图直接说明

比如 -publicUrl=img.abc.com,那么你就nginx配置一个 img.abc.com 的解析,对应到 你内网IP的端口(例如10000),docker创建容器的时候 创建一个外部端口和docker内部端口的映射,例如 10000:8080(docker create -it -p 10000:8080 ……)

1、docker create -it -p 10000:8080 --name weedfsvolume ……

2、docker start weedfsvolume

我的docker-compose.yml

services:

master:

image: chrislusf/seaweedfs

volumes:

- /root/seaweedfs/data/master:/data

ports:

- 9333:9333

#command: "master"

command: 'master'

networks:

default:

aliases:

- seaweed_master

volume:

image: chrislusf/seaweedfs

volumes:

- /root/seaweedfs/data/volume:/data

ports:

- 8081:8080

#本人的域名服务暂时出了点问题,使用的ip:port的形式

#command: 'volume -max=5 -mserver="master:9333" -publicUrl="img.xxx.com" -port=8080'

command: 'volume -max=5 -mserver="master:9333" -publicUrl="xxx.xx.xxx.xx:8081" -port=8080'

depends_on:

- master

networks:

default:

aliases:

- seaweed_vol

 

我的nginx conf配置,weedfs.conf(位于/etc/nginx/conf.d/,nginx -s reload命令重新加载配置文件)

upstream weedfs{

server ip:8081;

}

 

server{

listen 80;

server_name xxx.xxx.com; #此处指定子域名访问

location / {

proxy_pass http://weedfs;

}

}

 

使用java调用seaweedfs服务,我选择了https://github.com/Shuyun123/seaweedfs-java-client,但是如果使用docker seaweedfs,该代码则存在一些bug,我进行了修改,https://github.com/HalfWater/seaweedfs-java-client,但是并没有打包至maven,若您需要使用我的代码,需要自己进行编译。

 

代码如下:

Create a connection manager

 

FileSource fileSource = new FileSource(); // SeaweedFS master server host fileSource.setHost("your ip"); // SeaweedFS master server port fileSource.setPort(9333); // Startup manager and listens for the change fileSource.startup();

 

Create a file operation template

// Template used with connection manager FileTemplate template = new FileTemplate(fileSource.getConnection()); template.saveFileByStream("filename.doc", someFile);

 

完整代码参考

FileSource fileSource = new FileSource();

fileSource.setHost("your ip");

fileSource.setPort(9333);

fileSource.startup();

 

FileTemplate template = new FileTemplate(fileSource.getConnection());

File file = new File("xxxxxxxxxxx");

 

fileName = file.getName();

FileInputStream fileInputStream = new FileInputStream(file);

FileHandleStatus fileHandleStatus = template.saveFileByStream(fileName, fileInputStream);

log.info(JSON.toJSONString(fileHandleStatus));

转载于:https://my.oschina.net/u/2983845/blog/1820996


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

相关文章

Seaweed-fs

windows–文件服务器weed集群操作: weed master -ip 127.0.0.1 weed volume -max10 -mserver“127.0.0.1:9333” -ip127.0.0.1 -port9331 -dir“C:\data1” weed volume -max10 -mserver“127.0.0.1:9333” -ip127.0.0.1 -port9332 -dir“C:\data2” Linux部署文件…

seaweedfs上传文件为什么要先申请文件号?(/dir/assign)(两种工作模式:Volume模式与Filer模式)(seaweed上传文件)

文章目录 SeaweedFS两种工作模式Volume模式Filer模式总结 SeaweedFS两种工作模式 SeaweedFS是一个分布式文件系统,它有两种模式:Volume模式和Filer模式。 Volume模式 在Volume模式下,需要先申请文件号,因为SeaweedFS会为每个文…

docker部署seaweedf

总的来说需要两个文件,如下: 1、compose.yml 需要注意:network_mode 模式、ip为宿主机ip version: 3.3services:master:network_mode: "host"image: chrislusf/seaweedfs # use a remote imagecommand: "master -ip172.0.1…

浅析 SeaweedFS 与 JuiceFS 架构异同

SeaweedFS 是一款高效的分布式文件存储系统,最早的设计原型参考了 Facebook 的 Haystack,具有快速读写小数据块的能力。本文将通过对比 SeaweedFS 与 JuiceFS 在设计与功能上的差异,以帮助读者进行更适合自己的选择。 SeaweedFS 系统结构 S…

seaweedfs 部署使用

seaweedfs是一个非常优秀的由 golang 开发的分布式存储开源项目。它是用来存储文件的系统 seaweedfs的特点: 1 可以成存储上亿的文件(根据你硬盘大小变化) 2 速度快 weed-fs自身可以在两种模式下运行,一种是Master,另…

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的比较总结以及使用技巧(一)

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