文件存储有本地存储,对象存储OSS(阿里云、七牛云、腾讯云等)、fastDFS、mongodb,现在,来讲述一下minio。
简介
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
官方文件地址:docs.min.io/cn/
获取minio地址:dl.min.io/server/mini…
功能体现
- 数据保护
- 高可用
- 限制
- 一致性
- Lambda计算
- 加密和防篡改
- 可对接后端存储
- sdk支持
- Amazon S3兼容
集群规划
单节点
图纸,暂略
多节点
图纸,暂略
分布式
图纸,暂略
分布式集群搭建
集群规划
生产环境建议最少4节点,开发环境使用单机版本即可。
本集群由4台服务器构成(官方推荐集群最小4台服务器),每个服务器上挂载4个磁盘目录,最小数据挂载点为4个。使用操作系统CentOS 7.6,每台机器服务器配置。目前,使用的是虚拟机构建来模拟分布式文件系统修改主机名称及host(所有节点)
hostnamectl set-hostname minio1
hostnamectl set-hostname minio2
hostnamectl set-hostname minio3
hostnamectl set-hostname minio4
cat >> /etc/hosts <<EOF
192.168.180.128 minio1
192.168.180.129 minio2
192.168.180.130 minio3
192.168.180.131 minio4
EOF
系统最大文件数修改(所有节点)
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
目录创建(所有节点)
- 启动脚本及二进制文件目录 run
- 数据存储目录 data
- 配置文件目录/etc/minio
mkdir -p /data/minio/{run,data} && mkdir -p /etc/minio
集群启动文件(所有节点)
vim /data/minio/run/run.sh
- MINIO_ACCESS_KEY:用户名,长度最小是5个字符
- MINIO_SECRET_KEY:密 码,长度最小是8个字符
- –config-dir:指定集群配置文件目录
#!/bin/bash
export MINIO_ACCESS_KEY=juejinzheshuo
export MINIO_SECRET_KEY=juejinzheshuo
/data/minio/run/minio server --config-dir /etc/minio \
http://192.168.180.128/data/minio/data \
http://192.168.180.129/data/minio/data \
http://192.168.180.130/data/minio/data \
http://192.168.180.131/data/minio/data \
minio.service(所有节点)
- WorkingDirectory:二进制文件目录
- ExecStart:指定集群启动脚本
cat > /usr/lib/systemd/system/minio.service <<EOF
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
[Service]
WorkingDirectory=/data/minio/run/
ExecStart=/data/minio/run/run.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
二进制文件(所有节点)
将minio二进制文件上传到/data/minio/run目录。minio二进制文件,获取minio地址:dl.min.io/server/mini…
权限修改(所有节点)
给所有涉及到的文件或目录添加权限
- service文件
- 二进制文件
- 集群启动脚本
chmod +x /usr/lib/systemd/system/minio.service
&& chmod +x /data/minio/run/minio
&& chmod +x /data/minio/run/run.sh
其中,“WorkingDirectory”为启动脚本目录,“ExecStart”为指定集群启动脚本 参考官方地址: github.com/minio/minio…
启动集群(所有节点)
systemctl daemon-reload
systemctl enable minio && systemctl start minio
对应常见命令,如下: systemctl start | stop | enable | status minio
代理集群
生产环境需要使用Nginx将集群地址进行代理,对外统一入口
upstream minio{
server 192.168.180.128:9000;
server 192.168.180.129:9000;
server 192.168.180.130:9000;
server 192.168.180.131:9000;
}
server {
listen 9000;
server_name minio;
location / {
proxy_pass http://minio;
proxy_set_header Host $http_host;
client_max_body_size 1000m;
}
}
访问测试
浏览器访问minio集群代理地址+9000端口,用户名密码为上文中启动文件run.sh中我们设置的
问题与思考:它的运行机制或者说是原理如何?在分布式拓展方面是如何扩容的呢?上图文件是否具备实时性或者文件丢失的情况呢?文件存储是否是秒级的呢?
演示环境
下一篇【掘金者说】minio使用nginx代理配置https