SeaweedFS学习笔记:架构和快速入门

目录

    • 1. 介绍
      • 1.1 Components
      • 1.2 Master 服务
      • 1.3 Volume 服务
      • 1.4 Filer服务
      • 1.5 S3服务
      • 1.6 Volume的概念
        • 1.7 Collection的概念
    • 2. 快速入门
      • 2.1 安装 SeaweedFS
      • 2.2 启动 Master 服务
      • 2.3 启动 Volume 服务
      • 2.4 快速启动一个Master服务和一个Volume服务
      • 2.5 测试
    • 3. 参考

1. 介绍

SeaweedFS学习笔记:架构和快速入门_第1张图片

1.1 Components

有三个主要的组件,Master服务和Volume服务共同提供了分布式的冗余高可用对象存储服务。filer和S3服务是对象存储之上的一层。这些服务都可以单实例或者多实例的模式运行在不同的服务器上。

1.2 Master 服务

Master服务包含了1台(3台或者更多)服务器,拥有整个SeaweedFS集群的一致性视图,根据Raft协议选举出该服务的leader,leader会与集群中的所有节点通信。

为了保证多数共识算法可以运行,Master服务的节点数必须是奇数的。另外,节点数不需要太多,少量稳定的服务器比大量不稳定的服务器要好。通常来说,1或者3个即可。

所有的Volume服务都需要向Mater服务的leader节点发送心跳信息,根据心跳信息决定路由,以及复制。

如果leader节点不可用了,根据raft共识协议会重新指派一个leader。 之前的leader会被降级直到它恢复正常。

1.3 Volume 服务

Volume 服务会把很多对象(文件或者文件块)高效地打包成一个单独的Volume。数据的复制和冗余是以Volume为单位的。

每个Volume服务节点都会周期性的发送心跳信息到Master服务的leader节点,心跳信息包含状态和volume的信息。

Volume服务在内存中维护fid到文件读写位置的映射,实现每次查询和写入都只需要1次IO操作,同一个Volume的操作是串行的。

1.4 Filer服务

Filer服务通过HTTP或者UNIX Mount等用户可见的方式来组织SeaweedFS的volumes和对象,例如url,文件系统。
该服务不是必须的。

1.5 S3服务

提供类AWS S3 buckets的访问方式。
该服务不是必须的。

1.6 Volume的概念

由许多小文件构成了一个大的文件,这就是Volume。 Volume的默认大小是30G。 整个集群最开始有8个Volume。每个Volume都可以单独配置过期时间和副本数。

1.7 Collection的概念

Collection指的是一组Volume的集合。

Collection可以被快速的删除,只需要把Collection里面的所有的Volume删除即可。

2. 快速入门

2.1 安装 SeaweedFS

下载最新的发布版本:https://github.com/seaweedfs/seaweedfs/releases
解压后得到一个文件, weed 或者 weed.exe

./weed -h #查看帮助信息

2.2 启动 Master 服务

./weed master -h #查看master服务帮助信息

-mdir 配置volume id的存储目录

./weed master -mdir="."

-ip 配置Master服务的Ip地址,默认为localhost

./weed master -mdir="." -ip=xxx.xxx.xxx.xxx

2.3 启动 Volume 服务

./weed volume -h # 查看volume服务的帮助信息

通常volume节点分布在不同的服务器上,有着不同的磁盘,甚至不同的操作系统。
一般情况下,Volume服务需要配置可用的磁盘,Master服务的地址。
-max 最多可承载的volume数量

./weed volume -max=100 -mserver="localhost:9333" -dir="./data"

2.4 快速启动一个Master服务和一个Volume服务

./weed master -mdir="/home/ubuntu/seaweed/master" -ip=192.168.56.101
./weed volume -max=10 -mserver="192.168.56.101:9333" -dir="/home/ubuntu/seaweed/data"

2.5 测试

./weed upload -dir="/some/big/folder" #上传本地的文件或者目录

3. 参考

本文参考小文件存储SeaweedFS技术指南,下载地址。

你可能感兴趣的:(小文件存储,学习,笔记,架构)