Please enable Javascript to view the contents

对象存储服务-Minio

 ·  ☕ 4 分钟

摘要

对象存储服务可以用来存储各类文件,公司前端项目中的图片存储采用的是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是数据存储目录,如果不存在会在容器启动时在容器的文件系统中创建。

1
2
3
4
5
docker pull minio/minio
docker run -p 9000:9000 --name minio \
  -v /mnt/data:/data \
  -v /mnt/config:/root/.minio \
  minio/minio server /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到你的当前工作目录。执行下面命令:

1
2
3
4
5
6
7
8
# 1. Get docker-compose.yaml
wget https://raw.githubusercontent.com/minio/minio/master/docs/orchestration/docker-compose/docker-compose.yaml

# 2. pull image
docker-compose pull

# 3. container create & up
docker-compose up

Docker compose file中的MinIO服务使用的端口是9001到9004。

3. Kubernetes-Helm

MinIO生产环境更建议部署再kubernetes,不建议使用Swarm.而且

3.1前提条件

部署环境检查

  • 默认standaline模式下,需要开启Beta API的Kubernetes 1.4+。
  • distributed 模式,需要开启Beta API的Kubernetes 1.5+。
  • 底层支持PV provisioner。
  • helm安装病配置完成。

3.2使用Helm Chart 部署

1
helm install --name=minio --namespace paas stable/minio

3.3分布式节点规划:

  • 分布式Minio单租户存在最少4个盘最多32个盘的限制。只要遵守分布式Minio的限制,可以组合不同的节点和每个节点几块盘。比如,可以使用2个节点,每个节点4块盘,也可以使用4个节点,每个节点两块盘,诸如此类。
  • 多个节点的存储容量和就是分布式Minio的存储容量。
  • mode:Minio服务器运行模式(standalone或distributed)
  • replicas:节点数(仅适用于distributed模式).4 <= x <= 32,默认为4

3.4冒烟测试

1
2
3
4
5
6
7
8
9
# curl
curl http://<service-name:9000>/minio/health/live
curl http://<service-name:9000>/minio/health/ready

# mc client
mc config host add <ALIAS> <ENDPOINT> <ACCESS-KEY> <SECRET-KEY>
mc ls <ALIAS>
mc mb <ALIAS>/testbucket
mc ls <ALIAS>

使用

(未完待续)

Reference

Docker Compose 部署 MinIO
Kubernetes 部署 MinIO
Chart 获取

分享

Hex
作者
Hex
CloudNative Developer

目录