基于Kubernetes环境的minIO热备方案
1. 应用场景
该方案针对单节点minIO服务,如果已经部署了集群,已经实现了高可用和多副本,那么不需要该方案。
2. 方案原理
核心原理就是利用minIO客户端mc mirror命令把主节点的数据同步到备份节点。
大概有下面几个步骤:
2.1. 准备存储目录
在备份服务器上创建一个文件目录,用于存储minIO数据。例如:/var/opt/minio-bak。注意要修改一下这个目录的所有者,以确保minIO容器有权限访问。
chown -R 1001 /var/opt/minio-bak
2.2. 创建config map
创建一个config map,用于保存minio client的配置文件,该配置文件中设置了主备节点的连接信息,将其创建为别名,方便命令中使用。
apiVersion: v1
kind: ConfigMap
metadata:
name: minio-client
namespace: minio
data:
config.json: |-
{
"version": "10",
"aliases": {
"minio": {
"url": "http://minio:9000",
"accessKey": "user",
"secretKey": "password",
"api": "s3v4",
"path": "auto"
},
"minio-bak": {
"url": "http://minio-bak:9000",
"accessKey": "user",
"secretKey": "password",
"api": "s3v4",
"path": "auto"
}
}
}
注意:修改其中的user和password。
2.3. 创建deployment
deployment中重点是以下内容:
绑定备份服务器节点
绑定数据存储目录
Pod中添加两个容器,容器1采用minio镜像,如:bitnami/minio,容器2采用minio客户端镜像,如:bitnami/minio-client。
容器2挂载配置文件,挂载位置为:/.mc/config.json
容器2设置启动命令为:
mc mirror --overwrite --remove --watch minio minio-bak
2.4. 创建ClusterIP service
主从节点都创建ClusterIP类型的service,端口包括9000/tcp和9001/tcp,名称与前面配置文件中URL一致。
License:
CC BY 4.0