MInIO图片服务器

MInIO

1 基础

1.1 简介

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、

日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

1.2 纠删玛

Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。

​ 纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。 这就意味着如果是12块盘,一个

对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复

​ 纠删码的工作原理和RAID或者复制不同,像RAID6可以在损失两块盘的情况下不丢数据,而Minio纠删码可以在丢失一半的盘的情况下,仍可以保证数据安

全。 而且Minio纠删码是作用在对象级别,可以一次恢复一个对象,而RAID是作用在卷级别,数据恢复时间很长。 Minio对每个对象单独编码,存储服务一经部

署,通常情况下是不需要更换硬盘或者修复。Minio纠删码的设计目标是为了性能和尽可能的使用硬件加速。

# 使用Minio,在12个盘中启动Minio服务。
minio server /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 /data9 /data10 /data11 /data12
#  使用Minio Docker镜像,在8块盘中启动Minio服务。
docker run -p 9000:9000 --name minio \
  -v /mnt/data1:/data1 \
  -v /mnt/data2:/data2 \
  -v /mnt/data3:/data3 \
  -v /mnt/data4:/data4 \
  -v /mnt/data5:/data5 \
  -v /mnt/data6:/data6 \
  -v /mnt/data7:/data7 \
  -v /mnt/data8:/data8 \
  minio/minio server /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8

单点minio需要配置纠删玛磁盘。分布式minio自动引入纠删玛功能

1.3 Minio服务限制

纠删码 (多块硬盘 / 服务)

项目 参数
最大驱动器数量 Unlimited
最小驱动器数量 Unlimited
读仲裁 N / 2
写仲裁 N / 2+1

浏览器访问

项目 参数
Web浏览器上传大小限制 5GB

1.4 MinIO配置指南

MinIO Server config.json (v18) 指南

MinIO server在默认情况下会将所有配置信息存到 ${HOME}/.minio/config.json 文件中。 以下部分提供每个字段的详细说明以及如何自定义它们。一个完整的 config.json这里

配置目录

默认的配置目录是 ${HOME}/.minio,你可以使用--config-dir命令行选项重写之。MinIO server在首次启动时会生成一个新的config.json,里面带有自动生成的访问凭据。

Copyminio server --config-dir /etc/minio /data

证书目录

TLS证书存在${HOME}/.minio/certs目录下,你需要将证书放在该目录下来启用HTTPS 。如果你是一个乐学上进的好青年,这里有一本免费的秘籍传授一你: 如何使用TLS安全的访问minio.

以下是一个带来TLS证书的MinIO server的目录结构。

Copy$ tree ~/.minio
/home/user1/.minio
├── certs
│   ├── CAs
│   ├── private.key
│   └── public.crt
└── config.json

配置参数

版本

参数 类型 描述
version string version决定了配置文件的格式,任何老版本都会在启动时自动迁移到新版本中。 [请勿手动修改]

凭据

参数 类型 描述
credential 对象存储和Web访问的验证凭据。
credential.accessKey string Access key长度最小是5个字符,你可以通过 MINIO_ACCESS_KEY环境变量进行修改
credential.secretKey string Secret key长度最小是8个字符,你可以通过MINIO_SECRET_KEY环境变量进行修改

示例:

export MINIO_ACCESS_KEY=admin
export MINIO_SECRET_KEY=password
minio server /data

区域(Region)

参数 类型 描述
region string region描述的是服务器的物理位置,默认是us-east-1(美国东区1),这也是亚马逊S3的默认区域。你可以通过MINIO_REGION_NAME 环境变量进行修改。如果不了解这块,建议不要随意修改

示例:

export MINIO_REGION_NAME="中国华北一区"
minio server /data

浏览器

参数 类型 描述
browser string 开启或关闭浏览器访问,默认是开启的,你可以通过MINIO_BROWSER环境变量进行修改

示例:

export MINIO_BROWSER=off
minio server /data

通知

参数 类型 描述
notify 通知通过以下方式开启存储桶事件通知,用于lambda计算
notify.amqp 通过AMQP发布MinIO事件
notify.mqtt 通过MQTT发布MinIO事件
notify.elasticsearch 通过Elasticsearch发布MinIO事件
notify.redis 通过Redis发布MinIO事件
notify.nats 通过NATS发布MinIO事件
notify.postgresql 通过PostgreSQL发布MinIO事件
notify.kafka 通过Apache Kafka发布MinIO事件
notify.webhook 通过Webhooks发布MinIO事件

1.5 MinIO多租户

1.5.1 单机部署

要在单台机器上托管多个租户,为每个租户运行一个MinIO server,使用不同的HTTPS端口、配置和数据目录。

示例1:单主机,单磁盘

以下示例在一块磁盘上托管三个租户。

minio --config-dir ~/tenant1 server --address :9001 /data/tenant1
minio --config-dir ~/tenant2 server --address :9002 /data/tenant2
minio --config-dir ~/tenant3 server --address :9003 /data/tenant3

示例2:单主机,多块磁盘 (erasure code)

以下示例在多块磁盘上托管三个租户。

minio --config-dir ~/tenant1 server --address :9001 /disk1/data/tenant1 /disk2/data/tenant1 /disk3/data/tenant1 /disk4/data/tenant1
minio --config-dir ~/tenant2 server --address :9002 /disk1/data/tenant2 /disk2/data/tenant2 /disk3/data/tenant2 /disk4/data/tenant2
minio --config-dir ~/tenant3 server --address :9003 /disk1/data/tenant3 /disk2/data/tenant3 /disk3/data/tenant3 /disk4/data/tenant3

1.5.2 分布式部署

要在分布式环境中托管多个租户,同时运行多个分布式MinIO实例。

示例3 : 多主机,多块磁盘 (erasure code)

以下示例在一个4节点集群中托管三个租户。在4个节点里都执行下列命令:

export MINIO_ACCESS_KEY=<TENANT1_ACCESS_KEY>
export MINIO_SECRET_KEY=<TENANT1_SECRET_KEY>
minio --config-dir ~/tenant1 server --address :9001 http://192.168.10.11/data/tenant1 http://192.168.10.12/data/tenant1 http://192.168.10.13/data/tenant1 http://192.168.10.14/data/tenant1

export MINIO_ACCESS_KEY=<TENANT2_ACCESS_KEY>
export MINIO_SECRET_KEY=<TENANT2_SECRET_KEY>
minio --config-dir ~/tenant2 server --address :9002 http://192.168.10.11/data/tenant2 http://192.168.10.12/data/tenant2 http://192.168.10.13/data/tenant2 http://192.168.10.14/data/tenant2

export MINIO_ACCESS_KEY=<TENANT3_ACCESS_KEY>
export MINIO_SECRET_KEY=<TENANT3_SECRET_KEY>
minio --config-dir ~/tenant3 server --address :9003 http://192.168.10.11/data/tenant3 http://192.168.10.12/data/tenant3 http://192.168.10.13/data/tenant3 http://192.168.10.14/data/tenant3

1.6 磁盘缓存

这里的磁盘缓存功能是指使用缓存磁盘来存储租户常用的一些数据。例如,假设你通过gateway azure设置访问一个对象并下载下来进行缓存,那接下来的请求

都会直接访问缓存磁盘上的对象,直至其过期失效。此功能允许Minio用户:

  • 对象的读取速度性能最佳。
  • 任何对象的首字节时间得到显著改善。

使用

1.6.1 前期条件

安装Minio - Minio快速入门

1.6.2. 运行Minio缓存

磁盘缓存可以通过修改Minio服务的cache配置来进行开启。配置cache设置需要指定磁盘路径、缓存过期时间(以天为单位)以及使用通配符方式指定的不需要进行缓存的对象。

"cache": {
   
    "drives": ["/mnt/drive1", "/mnt/drive2", "/mnt/drive3"],
    "expiry": 90,
    "exclude": ["*.pdf","mybucket/*"]
},

缓存设置也可以通过环境变量设置。设置后,环境变量会覆盖任何cache配置中的值。下面示例使用/mnt/drive1, /mnt/drive2/mnt/drive3来做缓存,

90天失效,并且mybucket下的所有对象 和 后缀名为.pdf的对象不做缓存。

export MINIO_CACHE_DRIVES="/mnt/drive1,/mnt/drive2,/mnt/drive3"
export MINIO_CACHE_EXPIRY=90
export MINIO_CACHE_EXCLUDE="*.pdf,mybucket/*"
minio server /export{
   1...24}

1.6.3. 验证设置是否成功

要验证是否部署成功,你可以通过浏览器来访问刚刚部署的Minio服务。你应该可以看到上传的文件在所有Minio节点上都可以访问。

1.7 MinIO监控指南

MinIO服务器通过端点公开监视数据。监视工具可以从这些端点中选择数据。本文档列出了监视端点和相关文档。

健康检查探针

MinIO服务器具有两个与运行状况检查相关的未经身份验证的端点,一个活动性探针(指示服务器是否工作正常),一个就绪性探针(指示服务器是否由于重负载而未接受连接)。

  • 可在以下位置获得活力探针 /minio/health/live
  • 可在以下位置获得就绪探针 /minio/health/ready

MinIO healthcheck 指南中阅读有关如何使用这些端点的更多信息。

Prometheus 探测

MinIO服务器在单个端点上公开与Prometheus兼容的数据。默认情况下,对端点进行身份验证。

  • Prometheus 数据可在 /minio/prometheus/metrics

要使用此端点,请设置Prometheus以从该端点抓取数据。在如何使用Prometheus监视MinIO服务器中阅读有关如何配置和使用Prometheus监视MinIO服务器的更多信息

1.8 设置秘钥

MinIO自定义Access和Secret密钥

方式一 秘钥设置到环境变量中

要覆盖MinIO的自动生成的密钥,您可以将Access和Secret密钥设为环境变量

# 将秘钥添加到环境变量中 -e表示启用解释反斜杠转义,默认为-E:禁用转义
echo -e MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE"\n"MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY >> /etc/profile
# 生效
source /etc/profile

方式二 自定义秘钥

MinIO允许常规字符串作为Access和Secret密钥。

docker run -p 9000:9000 --name minio1 \
  -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
  -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
  -v /mnt/data:/data \
  -v /mnt/config:/root/.minio \
  minio/minio server /data

方式三 使用Docker secrets 设置秘钥

要覆盖MinIO的自动生成的密钥,可以把secret和access秘钥创建成Docker secrets. MinIO允许常规字符串作为Access和Secret密钥。

echo "AKIAIOSFODNN7EXAMPLE" | docker secret create access_key -
echo "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" | docker secret create secret_key -

使用docker service创建MinIO服务,并读取Docker secrets。

docker service create --name="minio-service" --secret="access_key" --secret="secret_key" minio/minio server /data

2 单节点安装

2.1 docker下安装单节点MinIO

先安装docker

2.1.1 docker下载 MinIO镜像

docker中运行镜像,镜像删除,存储的数据也就丢失。所以需要将运行的数据挂载到宿主机一个目录中,以防止存储的数据丢失。

要创建具有永久存储的MinIO容器,您需要将本地持久目录从主机操作系统映射到虚拟配置~/.minio 并导出/data目录。

# 1 下载镜像 minio/minio是稳定版   minio/minio:edge 是尝鲜版
docker pull minio/minio

2.1.2 启动

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值