场景
项目每日图片增加量约为20G,minio且为单机服务,存在有磁盘空间使用完导致图片存储失败情况。
为解决此问题,需要对磁盘空间进行扩容。但扩容方案只能是新增磁盘。这意味着需要解决新旧磁盘数据共享问题。
一、etcd介绍
[引用]每个 etcd cluster 都是有若干个 member 组成的,每个 member 是一个独立运行的 etcd 实例,单台机器上可以运行多个 member。
在正常运行的状态下,集群中会有一个 leader,其余的 member 都是 followers。leader 向 followers 同步日志,保证数据在各个 member 都有副本。leader 还会定时向所有的 member 发送心跳报文,如果在规定的时间里 follower 没有收到心跳,就会重新进行选举。
客户端所有的请求都会先发送给 leader,leader 向所有的 followers 同步日志,等收到超过半数的确认后就把该日志存储到磁盘,并返回响应客户端。
每个 etcd 服务有三大主要部分组成:raft 实现、WAL 日志存储、数据的存储和索引。WAL 会在本地磁盘(就是之前提到的 --data-dir )上存储日志内容(wal file)和快照(snapshot)。
etcd 目前默认使用 2379 端口提供 HTTP API 服务, 2380 端口和 peer 通信(这两个端口已经被 IANA 官方预留给 etcd )
二、准备
minio 下载 注意:minio版本尽量高于或者等于RELEASE.2022-04-12T06-55-35Z
etcd 下载
etcd Manager 下载
三、配置
1.etcd
.\etcd.exe --name etcd1 ^
--data-dir .\data\etcd1 ^
--initial-cluster etcd1=http://192.168.3.2:2380 ^
--initial-advertise-peer-urls http://192.168.3.2:2380 ^
--listen-peer-urls http://0.0.0.0:2380 ^
--listen-client-urls http://0.0.0.0:2379 ^
--advertise-client-urls http://192.168.3.2:2379
name:etcd名称
data-dir:etcd的数据目录
initial-cluster:聚类标志,表示成员的意思,支持多个用逗号隔开
initial-advertise-peer-urls:与initial-cluster配对
listen-peer-urls:侦听对等流量的URL列表,支持局域网访问则配置0.0.0.0,不可以配置域名
listen-client-urls:侦听客户端流量的URL列表,支持局域网访问则配置0.0.0.0,不可以配置域名
advertise-client-urls:此成员的客户端URL的列表,以广播到集群的其余部分。这些URL可以包含域名
2.minio
这里使用的是window,所以需要创建minio_start.bat文件
set MINIO_ETCD_ENDPOINTS=http://192.168.3.2:2379
set MINIO_DOMAIN=minio.domain
set MINIO_PUBLIC_IPS=192.168.3.2
set MINIO_ROOT_USER=admin
set MINIO_ROOT_PASSWORD=admin001
.\minio.exe server D:\hxin\minio_etcd\release\data01 --address :9004 --console-address ":9003"
pause
MINIO_ETCD_ENDPOINTS:注册到etcd的服务地址
MINIO_DOMAIN:访问域名,必须设置,在本地host文件添加minio.domain域名解析
MINIO_PUBLIC_IPS:minio服务ip集合,逗号隔开
MINIO_ROOT_USER:minio账号(注意:采用此方案,多个minio账号密码保持一致)
MINIO_ROOT_PASSWORD:minio密码(注意:采用此方案,多个minio账号密码保持一致)
3.etcd Manager
Settings:配置连接的etcd服务
Manager keys:查看所有注册进来的key-value
4.测试
访问minio控制台,创建存储桶bucket,设置Access Policy为Public
重复第2步,启动多个minio注册到同个etcd服务
多个minio之间即可相互访问
总结
该方案解决新旧磁盘数据共享问题,也不浪费资源,一个磁盘存储满了,增加新的磁盘即可,旧的磁盘只供资源访问,不再写入。