SeaweedFS深度解析(三):裸金属单机和集群部署
#作者:闫乾苓
文章目录
- 
- 
- 2.2.4 S3 Server(兼容 Amazon S3 的接口)
 - 2.2.5 Weed(命令行工具)
 
 
 - 
 - 3、裸金属单机和集群部署
 - 
- 3.1 裸金属单机部署
 - 
- 3.1.1安装 SeaweedFS
 - 3.1.2 以Master模式启动
 
 
 
2.2.4 S3 Server(兼容 Amazon S3 的接口)
功能:提供与 Amazon S3 兼容的RESTful API,方便集成现有S3生态工具。
 特点:基于 Filer 实现,将 S3 操作转换为 SeaweedFS 原生操作。
 工作原理:S3 Server接收来自客户端的S3协议请求,将其转换为对Filer和Volume Service的操作。这样,用户就可以像使用S3一样使用SeaweedFS进行对象存储。
2.2.5 Weed(命令行工具)
功能:管理集群的核心工具,支持以下操作:
- 启动 Master、Volume Server、Filer 等组件(如 weed master、weed volume)。
 - 文件上传/下载(如 weed upload、weed download)。
 - 系统状态监控(如 weed shell)。
 
工作原理:通过调用SeaweedFS的不同API,“Weed”命令行工具能够方便地与Master Service、Volume Service以及Filer进行交互,实现对集群的各种管理功能。
3、裸金属单机和集群部署
3.1 裸金属单机部署
3.1.1安装 SeaweedFS
从https://github.com/seaweedfs/seaweedfs/releases下载最新的官方版本。
 -rw-r–r–. 1 root root 44870713 5月 26 10:17 linux_amd64_full.tar.gz
解压下载的文件。你只会找到一个可执行文件,在大多数系统上是“weed”,在 Windows 上是“weed.exe”。
建议为服务创建最小权限的专用系统账户,以遵循最小权限原则,避免因使用 root 用户带来过大的安全风险。
 ~# useradd weed
 ~# passwd weed
为 seaweedfs创建相关的目录
 ~# mkdir /opt/seaweedfs/{sbin,master-data} -p
将文件“weed”放到/opt/seaweedfs/sbin/下, 并设置weed账户的权限
 ~# mv weed /opt/seaweedfs/sbin
 ~# chown -R weed:weed /opt/seaweedfs/
使用以下命令查看下载安装是否正常。
 ~# /opt/seaweedfs/sbin/weed -h
3.1.2 以Master模式启动
启动方法:
~# su - weed~$ ./weed master -mdir=\".\" -ip=xxx.xxx.xxx.xxx
参数:
- 
-mdir: 指定元数据存储目录
 - 
-logdir:日志输出目录
 - 
-ip: 指定服务启动后网络监听端口绑定的IP,不指定默认会绑定127.0.0.1和自动探测到的IP。
 - 
-volumeSizeLimitMB: 这个参数控制单个卷的最大大小限制,默认值是默认值是 30GB (30*1000 MB),
推荐值: - 
小文件场景:1000-4000 MB,便于快速备份和迁移
 - 
大文件场景:8000-30000 MB,减少卷的数量
 - 
混合场景:4000-8000 MB,平衡性能和管理复杂度
 - 
-defaultReplication: 默认复制策略
复制策略格式为 XYZ:
X:跨数据中心的副本数
Y:同数据中心不同机架的副本数
Z:同机架不同服务器的副本数
推荐值: - 
单机测试:“000”(无复制)
 - 
生产环境:“001”(同机架1个副本)或 “010”(不同机架1个副本)
 - 
高可用环境:“100”(跨数据中心1个副本)
 - 
-garbageThreshold: 垃圾回收阈值,控制何时触发垃圾回收和空间回收
默认值是 0.3,表示当删除的数据占卷总大小的 30% 时触发垃圾回收。
推荐值: - 
频繁删除场景:0.2-0.3,及时回收空间
 - 
稳定存储场景:0.4-0.5,减少回收频率
 - 
性能优先场景:0.6-0.8,最小化回收影响
 - 
-metricsPort: 指定prometheus 监控指标的 HTTP 端口
推荐值: - 
标准部署:9327(官方默认)
 - 
多实例部署:9327, 9328, 9329…(避免端口冲突)
 - 
企业环境:根据监控系统规范设置
 
简单示例:
~$ /opt/seaweedfs/sbin/weed master -mdir=\"/opt/seaweedfs/master-data\" -ip=\"192.168.61.71\"
完整配置示例:
~$ /opt/seaweedfs/sbin/weed master -ip=\"192.168.61.71\" -mdir=\"/opt/seaweedfs/master-data\" -volumeSizeLimitMB=4000 -defaultReplication=\"001\" -metricsPort=9327
查看监听的端口
$ ss -ntlp |grep 9333LISTEN 0 4096 127.0.0.1:9333 0.0.0.0:* users:((\"weed\",pid=2183,fd=9)) LISTEN 0 4096 192.168.61.71:9333 0.0.0.0:* users:((\"weed\",pid=2183,fd=8)) LISTEN 0 4096 127.0.0.1:19333 0.0.0.0:* users:((\"weed\",pid=2183,fd=12))LISTEN 0 4096 192.168.61.71:19333 0.0.0.0:* users:((\"weed\",pid=2183,fd=11))
3.1.2.1以配置文件启动master服务
 Seaweedfs也支持使用配置文件启动,可以将启动命令中的配置参数合并写入模板配置文件,方便管理。(但在测试3.9.2版本时,mdir,metricsPort 两个参数在配置文件中不生效,只在启动命令中作为参数使用时生效,我已经提交issue并给出修复建议,已被项目维护者采纳,https://github.com/seaweedfs/seaweedfs/issues/6922)
 使用以下命令创建模板配置文件:
 /opt/seaweedfs/sbin/weed scaffold -config=master > /home/weed/.seaweedfs/master.toml
注意:/home/weed/.seaweedfs 目录不存在,请先创建。
 会生成的master.toml模板配置文件,下面的配置文件在模板配置文件的基础上合并加入了其他基础配置参数:
[master] port = 9333 ip = \"192.168.61.21\" mdir = \"/data/seaweedfs/master/data\"volumeSizeLimitMB = 30000 defaultReplication = \"000\" metricsHttpPort = 9327 [master.replication] treat_replication_as_minimums = false [master.maintenance] scripts = \"\"\" lock ec.encode -fullPercent=95 -quietFor=1h ec.rebuild -force ec.balance -force volume.fix.replication unlock \"\"\" sleep_minutes = 17 [master.volume_growth] copy_1 = 7 copy_2 = 6 copy_3 = 3 copy_other = 1 threshold = 0.9


