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

一、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/minio
chmod +x minio

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

mv minio /usr/local/bin/

2.3、编辑配置文件

cat <<EOT >> /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=12345678
EOT

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.service
mv 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 <<EOT >> /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=miniosecretkey
EOT

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/mc
chmod +x mc
mv 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://github.com/minio/minio-service/tree/master/linux-systemd
https://docs.min.io/cn/minio-docker-quickstart-guide.html

转载于:https://blog.51cto.com/jiayimeng/2378552

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值