本文共 4947 字,大约阅读时间需要 16 分钟。
Minio 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
Minio是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。(引自https://docs.min.io/docs/minio-quickstart-guide.html )wget https://dl.minio.io/server/minio/release/linux-amd64/miniochmod +x minio
mv minio /usr/local/bin/
cat <> /etc/default/minio# Volume to be used for MinIO server.MINIO_VOLUMES="/data/minio/"# Use if you want to run MinIO on a custom port.#MINIO_OPTS="--address :9199"# Access Key of the server.MINIO_ACCESS_KEY=admin# Secret key of the server.MINIO_SECRET_KEY=12345678EOT
MINIO_VOLUMES:minio server使用的存储卷,minio要有存储卷的读写权限
MINIO_OPTS:自定义minio server监听的ip和端口MINIO_ACCESS_KEY:用户名,最少三个字符MINIO_SECRET_KEY:密钥,最少八个字符curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.servicemv minio.service /usr/lib/systemd/system/minio.service编辑minio.service,修改User=root 、Group=root。
systemctl enable minio.service
使用Access Key与Secret Key登录Minio。登录成功后进入如下界面Access Key与Secret Key可由Minio Server随机生成,也可通过变量来自定义。
USAGE:minio server [FLAGS] DIR1 [DIR2..]minio server [FLAGS] DIR{1...64}
DIR:定义文件系统上的目录,用空格分割每个存储目录,也可用“…”来缩写目录;构建分布式minio时,设置为HTTP(s) URIs.
FLAGS:
--address value :绑定的套接字,默认端口9000 --config-dir value, -C value [DEPRECATED] :老版本遗留的配置文件目录 (默认: "/root/.minio") --certs-dir value, -S value :certs目录的路径. (默认: "/root/.minio/certs") --quiet :禁止打印启动信息 --anonymous :隐藏日志中的敏感信息 --json :以json格式输出服务器日志和启动信息。 --help, -h :帮助信息
环境变量设置:
ACCESS: MINIO_ACCESS_KEY:自定义用户名或访问密钥,长度至少为3个字符。 MINIO_SECRET_KEY: 自定义密码或密钥,长度至少为8个字符。BROWSER: MINIO_BROWSER: 要禁用Web浏览器访问,请将此值设置为“off”。CACHE: MINIO_CACHE_DRIVES: 由“;”分隔的已安装驱动器或目录的列表. MINIO_CACHE_EXCLUDE:由“;”分隔的缓存排除模式列表。 MINIO_CACHE_EXPIRY: 缓存到期持续时间(天)。 MINIO_CACHE_MAXUSE: 允许的最大缓存使用百分比(0-100)。DOMAIN: MINIO_DOMAIN: 要启用虚拟主机请求,请将此值设置为Minio主机域名。WORM: MINIO_WORM: 要在服务器中打开Write-Once-Read-Many,请将此值设置为“on”BUCKET-DNS: MINIO_DOMAIN: 要启用存储桶DNS请求,请将此值设置为Minio主机域名。 MINIO_PUBLIC_IPS: 要启用存储桶DNS请求,请将此值设置为由“,”分隔的Minio主机公共IP列表。 MINIO_ETCD_ENDPOINTS: 要启用存储桶DNS请求,请将此值设置为由“,”分隔的etcd端点列表。KMS: MINIO_SSE_VAULT_ENDPOINT: 要将Vault作为KMS启用,请将此值设置为Vault端点。 MINIO_SSE_VAULT_APPROLE_ID: 要将Vault另存为KMS,请将此值设置为Vault AppRole ID。 MINIO_SSE_VAULT_APPROLE_SECRET: 要将Vault设置为KMS,请将此值设置为Vault AppRole Secret ID。 MINIO_SSE_VAULT_KEY_NAME: 要将Vault另存为KMS,请将此值设置为Vault加密密钥环名称。
minio server /data/minio
数据保护
分布式Minio采用 erasure code来防范多个节点宕机和位衰减bit rot。 分布式Minio至少需要4个节点,使用分布式Minio自动引入了纠删码功能。高可用单机Minio服务存在单点故障,相反,如果是一个N节点的分布式Minio,只要有N/2节点在线,你的数据就是安全的。不过你需要至少有N/2+1个节点 Quorum 来创建新的对象。例如,一个8节点的Minio集群,每个节点一块盘,就算4个节点宕机,这个集群仍然是可读的,不过你需要5个节点才能写数据。限制分布式Minio单租户存在最少4个盘最多16个盘的限制(受限于纠删码)。这种限制确保了Minio的简洁,同时仍拥有伸缩性。如果你需要搭建一个多租户环境,你可以轻松的使用编排工具(Kubernetes)来管理多个Minio实例。注意,只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块盘。比如,你可以使用2个节点,每个节点4块盘,也可以使用4个节点,每个节点两块盘,诸如此类。一致性Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。(摘自minio官方文档分布式minio快速入门)• 需要4个节点才能使用分布式Minio自动引入了纠删码功能• 最少2个节点,最多32个节点• 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。• 分布式Minio使用的磁盘里必须是干净的,里面没有数据。• 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP 来保证时间一致
cat <> /etc/default/minio# Remote volumes to be used for Minio server.MINIO_VOLUMES=http://192.168.143.130/data/minio_volum1/minio \http://192.168.143.130/data/minio_volum2/minio \http://192.168.143.130/data/minio_volum3/minio \http://192.168.143.130/data/minio_volum4/minio# Use if you want to run Minio on a custom port.#MINIO_OPTS="--address :9199"# Access Key of the server.MINIO_ACCESS_KEY=minioaccesskey# Secret key of the server.MINIO_SECRET_KEY=miniosecretkeyEOT
示例使用了一台虚拟机,生产环境下每一台节点都需要单独部署minio server,配置文件一致,同时开启minio server
systemctl start minio.service
MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)
wget https://dl.minio.io/client/mc/release/linux-amd64/mcchmod +x mcmv mc /usr/local/bin/
mc命令帮助
格式:mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]COMMAND: ls 列出文件和文件夹。mb 创建一个存储桶或一个文件夹。cat 显示文件和对象内容。pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT。share 生成用于共享的URL。cp 拷贝文件和对象。mirror 给存储桶和文件夹做镜像。find 基于参数查找文件。diff 对两个文件夹或者存储桶比较差异。rm 删除文件和对象。events 管理对象通知。watch 监视文件和对象的事件。policy 管理访问策略。session 为cp命令管理保存的会话。config 管理mc配置文件。update 检查软件更新。version 输出版本信息。配置文件:/root/.mc/config.json
添加一个云存储服务
开启minio服务systemctl start minio
从minio服务获得url,minioaccesskey,miniosecretkey
在客户端连接minio服务mc config host add minio http://192.168.143.131:9000 minioaccesskey miniosecretkey
参考文章
转载于:https://blog.51cto.com/jiayimeng/2378552