摘要
对象存储服务可以用来存储各类文件,公司前端项目中的图片存储采用的是OSS,也采取过Minio+Restic给虚拟机服务提供定期异地加密备份方案。小记对minio服务的理解。
MinIo简介
MinIO
是一款基于Go
语言的高性能对象存储服务,基于Apache License v2.0
开源协议。在Github上已有19K+Star。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIo可以单机或分布式模式运行。单机Minio服务存在单点故障,通常仅用于测试环境。分布式Minio将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。如果是一个N节点的分布式Minio,只要有N/2节点在线,数据就是安全的。不过你需要至少有N/2+1个节点 Quorum 来创建新的对象。
分布式模式与单机模式搭建的流程基本一样,Minio服务基于命令行传入的参数自动切换成单机模式还是分布式模式。启动一个分布式Minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,需要在所有其它节点运行同样的命令。
Minio服务器将监控数据通过无须认证的端点暴露出来
健康检查侦测:存活侦测(/minio/health/live),就绪侦测(/minio/health/ready)
Prometheus侦测:/minio/prometheus/metrics
安装及部署
1. Docker运行MinIo单点模式
MinIO 需要持久化配置(容器内: /root/.minio)和应用数据(容器内: /data)。传递的参数/data
是数据存储目录,如果不存在会在容器启动时在容器的文件系统中创建。
|
|
2. Docker-compose运行MinIo分布式模式
分布式MinIO可以通过Docker Compose
或者Swarm mode
进行部署,本文docker-compose部署.
Docker-Compose部署 | Docker-swarm | |
---|---|---|
节点规划 | 单个主机,多容器部署 | 多主机,多容器部署 |
优缺点 | 可以让快速的在机器上快速使用分布式MinIO,非常适合开发\测试环境 | 提供了更健壮,生产级别的部署.但生产环境更建议部署到k8s中 |
Docker Compose允许定义和运行单主机,多容器Docker应用程序。使用Compose,可以使用Compose文件来配置MinIO服务。 然后,使用单个命令,您可以通过你的配置创建并启动所有分布式MinIO实例。 分布式MinIO实例将部署在同一主机上的多个容器中。 适合创建基于分布式MinIO的开发,测试环境。
在Docker Compose上部署分布式MinIO,请下载docker-compose.yaml到你的当前工作目录。执行下面命令:
|
|
Docker compose file中的MinIO服务使用的端口是9001到9004。
3. Kubernetes-Helm
MinIO生产环境更建议部署再kubernetes
,不建议使用Swarm
.而且
- MinIO Helm Chart部署MinIO。
- Kubernetes MinIO参考示例 ,通过.yaml文件部署MinIO。
3.1前提条件
部署环境检查
- 默认standaline模式下,需要开启Beta API的Kubernetes 1.4+。
- distributed 模式,需要开启Beta API的Kubernetes 1.5+。
- 底层支持PV provisioner。
- helm安装病配置完成。
3.2使用Helm Chart 部署
|
|
3.3分布式节点规划:
- 分布式Minio单租户存在最少4个盘最多32个盘的限制。只要遵守分布式Minio的限制,可以组合不同的节点和每个节点几块盘。比如,可以使用2个节点,每个节点4块盘,也可以使用4个节点,每个节点两块盘,诸如此类。
- 多个节点的存储容量和就是分布式Minio的存储容量。
- mode:Minio服务器运行模式(standalone或distributed)
- replicas:节点数(仅适用于distributed模式).4 <= x <= 32,默认为4
3.4冒烟测试
|
|
使用
(未完待续)