admin管理员组文章数量:1649170
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 启动
版权声明:本文标题:MInIO图片服务器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729509663a1203886.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论