博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
存储非结构化数据之利器-minio
阅读量:6276 次
发布时间:2019-06-22

本文共 4947 字,大约阅读时间需要 16 分钟。

一、minio简介

Minio 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

Minio是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。(引自https://docs.min.io/docs/minio-quickstart-guide.html )

二、minio-server单节点部署

2.1、下载minio

wget https://dl.minio.io/server/minio/release/linux-amd64/miniochmod +x minio

2.2、将minio移动到/usr/local/bin目录

mv minio /usr/local/bin/

2.3、编辑配置文件

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:密钥,最少八个字符

2.4、配置minio服务

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。

2.5、开机启动minio服务

systemctl enable minio.service

2.6 、minio server

使用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加密密钥环名称。

2.7、启动minio server

minio server /data/minio

三、分布式minio server

3.1、分布式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快速入门)

3.2、前提条件

• 需要4个节点才能使用分布式Minio自动引入了纠删码功能• 最少2个节点,最多32个节点• 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。• 分布式Minio使用的磁盘里必须是干净的,里面没有数据。• 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP 来保证时间一致

3.3、修改配置文件

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

3.4、开启分布式服务

示例使用了一台虚拟机,生产环境下每一台节点都需要单独部署minio server,配置文件一致,同时开启minio server

systemctl start minio.service

3.5、测试

存储非结构化数据之利器-minio

四、Minio-client

MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)

4.1、安装

wget https://dl.minio.io/client/mc/release/linux-amd64/mcchmod +x mcmv mc /usr/local/bin/

4.2、使用

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

你可能感兴趣的文章
java线程池
查看>>
UI面试内容
查看>>
Linux之RPM详解
查看>>
Windows Azure 常见问题及测试题
查看>>
flex DateChooser
查看>>
天天晚上打车--我对滴滴打车的想法
查看>>
由于MTU值设置不当造成的某些网站无法登录解决
查看>>
线程池
查看>>
聊聊高并发之隔离术
查看>>
JenKins 构建Github项目
查看>>
MySQL中from_unixtime与unix_timestamp差别
查看>>
LVS+KEEPALIVED实现高可用负载均衡架构
查看>>
Armadillo之行向量(row vector)
查看>>
搭建一个master对应2个slave
查看>>
Java 线程池的使用好处
查看>>
MySQL 双主 + keepalived 实现 HA
查看>>
FbinstTool最简单制作U盘启动ISO格式(金测)
查看>>
Android反射机制实现与原理
查看>>
浅谈大数据的标签管理
查看>>
PHP中使用Smarty模板目录结构配置
查看>>