什么是Minio?如何搭建Minio集群?
一、Minio介绍
1.1 Minio简介
MinIO 是高性能的对象存储,是为海量数据存储、人工智能、大数据分析而设计的,它完全兼容AmazonS3接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。MinIO主要采用Golang语言实现,,客户端与存储服务器之间采用http/https通信协议。
1.2 部署方式:
单机部署
分布式部署
1.3 Minio官网
1、首页
二、Minio集群
2.1 Minio集群原理
MinIO分布式集群是指在多个服务器节点均部署MinIO服务,并将其组建为分布式存储集群,对外提供标准S3接口以进行统一访问。
MinIO分布式集群架构
MinIO集群采用去中心化无共享架构,各节点间为对等关系,连接至任一节点均可实现对集群的访问。在我们的方案中还选择了Nginx的轮询实现各个节点的负载均衡。
数据对象在MinIO集群中进行存储时,先进行纠删分片,后打散存储在各硬盘上。具体为:
MinIO自动在集群内生成若干纠删组,每个纠删组包含一组硬盘,其数量通常为4至16块;
对数据对象进行分片,默认策略是得到相同数量的数据分片和校验分片;
而后通过哈希算法计算出该数据对象对应的纠删组,并将数据和校验分片存储至纠删组内的硬盘上。
假设某MinIO集群内纠删组包含4块硬盘,某数据对象名为MyObject,其隶属存储桶名为MyBucket,哈希计算得到对应的纠删组为Disk 1~4。那么在Disk 1~4的数据路径下,都会生成MyBucket/MyObject子路径,子路径中包含2个文件,分别为存储元数据信息的xl.meta和MyObject对象在该盘上的第一个分片part.1。其中,xl表示MinIO中数据对象的默认存储格式。
2.2 术语解释
1、S3
Simple Storage Service,简单存储服务,这个概念是Amazon在2006年推出的,对象存储就是从那个时候诞生的。S3提供了一个简单Web服务接口,可用于随时在Web上的任何位置存储和检索任何数量的数据。
2、Object
存储到 Minio 的基本对象,如文件、字节流,Anything...
3、Bucket
用来存储 Object 的逻辑空间。每个 Bucket 之间的数据是相互隔离的。
4、Drive
部署 Minio 时设置的磁盘,Minio 中所有的对象数据都会存储在 Drive 里。
5、Set
一组 Drive 的集合,分布式部署根据集群规模自动划分一个或多个 Set ,每个 Set 中的 Drive 分布在不同位置。一个对象存储在一个 Set 上。
2.3 纠删码
纠删码是一种恢复丢失和损坏数据的数学算法,目前,纠删码技术在分布式存储系统中的应用主要有三类,阵列纠删码(Array Code: RAID5、RAID6等)、RS(Reed-Solomon)里德-所罗门类纠删码和LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码。Erasure Code是一种编码技术,它可以将n份原始数据,增加m份校验数据,并能通过n+m份中的任意n份原始数据,还原为原始数据。即如果有任意小于等于m份的校验数据失效,仍然能通过剩下的数据还原出来。
Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。
在同一集群内,MinIO 自己会自动生成若干纠删组(Set),用于分布存放桶数据。一个纠删组中的一定数量的磁盘发生的故障(故障磁盘的数量小于等于校验盘的数量),通过纠删码校验算法可以恢复出正确的数据。
2.4 Minio集群搭建
有两台服务器:
192.168.3.17
192.168.3.18
1、在每台服务器上创建minio目录
mkdir -p /home/minio/{run,data1,data2} && mkdir -p /etc/minio
2、下载或者上传下载好的minio二进制文件
官网下载地址:
https://dl.min.io/server/minio/release/linux-amd64/minio
3、集群启动文件配置
Minio默认9000端口,在配置文件中加入–address “127.0.0.1:9029” 可更改端口
注意 :
MINIO_ACCESS_KEY:用户名,长度最小是5个字符
MINIO_SECRET_KEY:密码,密码不能设置过于简单,不然minio会启动失败,长度最小是8个字符
–config-dir:指定集群配置文件目录
vim /home/minio/run/minio-run.sh
集群节点192.168.3.17内容为
#!/bin/bash
export MINIO_ACCESS_KEY=admin
export MINIO_SECRET_KEY=admin123
/home/minio/run/minio server --config-dir /etc/minio
--address "192.168.3.17:9000"
http://192.168.3.17/home/minio/data1 http://192.168.3.17/home/minio/data2
http://192.168.3.18/home/minio/data1 http://192.168.3.18/home/minio/data2
集群节点192.168.3.18内容为
#!/bin/bash
export MINIO_ACCESS_KEY=admin
export MINIO_SECRET_KEY=admin123
/home/minio/run/minio server --config-dir /etc/minio
--address "192.168.3.18:9000"
http://192.168.3.17/home/minio/data1 http://192.168.3.17/home/minio/data2
http://192.168.3.18/home/minio/data1 http://192.168.3.18/home/minio/data2
4、创建Minio.server,将minio加入系统服务
vim /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
[Service]
WorkingDirectory=/home/minio/run/
ExecStart=/home/minio/run/minio-run.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
修改配置文件后需要重加载配置
systemctl daemon-reload
5、权限修改
chmod +x /usr/lib/systemd/system/minio.service && chmod +x /home/minio/run/minio && chmod +x /home/minio/run/minio-run.sh
6、启动集群
systemctl start minio
systemctl enable minio
查看集群状态
systemctl status minio.service -l
三、Nginx反向代理与负载均衡
3.1 安装nginx
apt-get install nginx
nginx文件安装完成之后的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
为了保证安全性,将采用https形式访问minio,下面展示再服务器本地生成ssl证书,并且集成到nginx中。
3.2 创建SSL证书
1、创建证书目录
[root@localhost ~]# cd /etc/nginx/
[root@localhost nginx]# mkdir ssl
[root@localhost nginx]# cd ssl/
2、生成一个RSA密钥
[root@localhost ssl]# openssl genrsa -des3 -out nginx.key 1024 #实际使用中看服务器性能,如果足够好也可以使用4096位秘钥
Generating RSA private key, 1024 bit long modulus
.......++++++
...++++++
e is 65537 (0x10001)
Enter pass phrase for nginx.key: 123456 #输入密码,自定义
Verifying - Enter pass phrase for nginx.key: 123456 #确认密码
3、生成一个证书请求
[root@localhost ssl]# openssl req -new -key nginx.key -out nginx.csr
Enter pass phrase for nginx.key: #输入刚刚创建的秘密码
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN #国家名称
State or Province Name (full name) []:JiangSu #省
Locality Name (eg, city) [Default City]:NanJing #市
Organization Name (eg, company) [Default Company Ltd]:Dwing #公司
Organizational Unit Name (eg, section) []:Tech #部门
Common Name (eg, your name or your server's hostname) []:*.generalstorage.com #注意,此处应当填写你要部署的域名,如果是单个则直接添加即可,如果不确定,使用*,表示可以对所有generalstorage.com的子域名做认证
Email Address []:admin@generalstorage.com #以域名结尾即可
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #是否设置密码,可以不写直接回车
An optional company name []: #其他公司名称 可不写
4、创建不需要输入密码的RSA证书,否则每次reload、restart都需要输入密码
[root@localhost ssl]# openssl rsa -in nginx.key -out nginx_nopass.key
Enter pass phrase for nginx.key: #之前RSA秘钥创建时的密码
writing RSA key
5、签发证书(由于是测试自己签发,实际应该将自己生成的csr文件提交给SSL认证机构认证)
[root@localhost ssl]# openssl x509 -req -days 3650 -in nginx.csr -signkey nginx.key -out nginx.crt
Signature ok
subject=/C=CN/ST=JiangSu/L=NanJing/O=Dwing/OU=Tech/CN=*.generalstorage.com/emailAddress=admin@generalstorage.com
Getting Private key
Enter pass phrase for nginx.key: #RSA创建时的密码
3.3 配置Nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name test.generalstorage.com;
include /etc/nginx/default.d/*.conf;
return 301 https://$server_name$request_uri; #在80监听端口 配置跳转
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name test.generalstorage.com;
client_max_body_size 20M;
charset utf-8;
ssl_certificate "/etc/nginx/ssl/nginx.crt"; #
ssl_certificate_key "/etc/nginx/ssl/nginx_nopass.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://minio_server;
}
}
ssl_certificate证书其实是个公钥,它会被发送到连接服务器的每个客户端,ssl_certificate_key私钥是用来解密的,所以它的权限要得到保护但nginx的主进程能够读取。当然私钥和证书可以放在一个证书文件中,这种方式也只有公钥证书才发送到client。
ssl_session_timeout 客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m即30分钟甚至4h。
ssl_protocols指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
ssl_ciphers选择加密套件,不同的浏览器所支持的套件(和顺序)可能会不同。这里指定的是OpenSSL库能够识别的写法,你可以通过 openssl -v cipher ‘RC4:HIGH:!aNULL:!MD5’(后面是你所指定的套件加密算法) 来看所支持算法。
ssl_prefer_server_ciphers on设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
启动服务
[root@localhost nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost nginx]# systemctl restart nginx
本地hosts绑定域名
192.168.3.17 test.generalstorage.com
四、minio页面展示
浏览器中输入:https://test.generalstorage.com/
输入账号/密码:admin/admin123
标签: 如何搭建Minio集群
相关推荐:
最新新闻:
- 什么是Minio?如何搭建Minio集群?
- 谷歌GMS是什么?谷歌GMS概述
- 去中心化是什么意思?去中心化理由有哪些?
- 《吸血鬼:幸存者》2023年将推出更多DLC
- 毁灭者男星:《银河护卫队3》将是我最后一次饰演该角色:今日报
- 国产饮料霸主被外资「杀死」:曾年销20万吨-焦点报道
- 许鞍华回顾与汤唯合作:彼此都不满意 很遗憾
- 首发499元 限量2000套 仙剑官方竟然推出复刻版Windows 98电脑
- 观天下!LG新款Gram Ulstraslim 笔记本发布 轻至998克
- 四大系列 一分钟带来你全方位了解移动版13代酷睿|即时焦点
- 每日观察!iPhone 14 Pro产能恢复了 春节将是生产高峰
- 性能3倍于RTX 3090Ti RTX 4070Ti正式发布 6499元起-世界信息
- 【世界报资讯】Meta在欧洲再遇挫!“定向广告”被罚款超4亿美元,勒令业务模式整改
- 权游二丫本是电影版《最后的生还者》艾莉人选
- 外星人推出M18笔记本:高配24核心i9 可塞9TB硬盘|动态焦点
- 《原子之心》导演称游戏优化好 三核设备也能玩
- 微软对Win7、Win8.1停止安全更新 你受影响了吗? 天天播报
- Win11 22H2又出新Bug:文件管理器随机“突然出现”-全球热门
- 环球今日讯!苹果被爆新一代Apple Watch Ultra将配备micro-LED显示屏,或2024年推出
- CES 2023:外星人推出24.5寸500Hz IPS电竞显示器
- CES 2023:雷蛇预告灵刃系列推出16/18英寸游戏本_当前热议
- 《潜行者:切尔诺贝利阴影》虚幻5自制测试版推出 环球今头条
- 分析师:任天堂新款主机将于2024年发布:环球观焦点
- 【环球新视野】第三人称卡通风冒险《WHALIEN》1月24日登陆PC 新预告发布
- CES:ROG发布全系新品笔记本 i9处理器+4090显卡旗舰配置问鼎性能巅峰
- 猛男紫?戴尔新G15配色非常吸睛_世界观热点
- 为了多赚几个点,这批百亿私募“开年”忙出海 简讯
- 天天速读:最高正收益5%,银行权益理财去年业绩比肩百亿私募?方法出人意料
- 快看:商务部:每人每年仅可出售两辆二手车
- 郭明錤:京东方将成为iPhone 15屏幕最大供应商
- 今日上午10:00首销 摩托罗拉moto G53官网正式开售
- 6K超高分!戴尔CES展出32寸全新显示器 每日讯息
- 《浩劫前夕》PC配置公开 推荐GTX 1060
- 《守望》商城DJ皮肤引争议 玩家称其本该在通行证中_天天快消息
- 贝尔金畅销充电器产品的材料将向再生塑料过渡
- 清华团队重磅发布,发现抗体对新冠变异株XBB有效!如何防范XBB?疾控中心发声!
- 押注通胀见顶!全球债市喜迎新年_世界最资讯
- 豪华散热颜值在线!映众RTX4070TI冰龙超级版首发_全球微资讯
- 【聚看点】引领世界的看法 海信8K激光电视、ULEDX新品将亮相美国CES
- 世界热文:迪士尼连续7年蝉联全球票房最高的电影公司
- 美媒“全球最强国家”排行榜 韩国全球实力超越日本
- 新动态:分析师称NS继任机型将于2024年推出 NS不会有Pro款
- 全球快讯:《寂静岭2:重制版》将忠实地坚持传统故事规范
- 全球热文:华硕发布2023全新笔记本 最高搭载RTX 4090
- 真的这么费电?Xbox玩家收到的圣诞礼物是一箱电池
- 环球头条:三款性价比PCIe 4.0 SSD对比测试,买新不买旧?
- 一加11发布:3999元 号称4年后还流畅|焦点简讯
- 每日速读!一加11发布3999元起:2K高刷屏 12G起步
- 优酷回应会员仅能一部手机登录:保护账号、打击黑产
- 《鹅鸭杀》移动端预约开启 官方正在寻找国内发行商
- 红米K50至尊版对比红米K60:上手后做出了选择!_速看
- 今日快讯:好玩到落泪!万代官方发布《海贼王:时光旅诗》TVCM
- 今日热搜:韩国全球排名力压日本 让韩网友兴奋:日本网友吐槽除了三星还有啥
- 全球即时看!贾跃亭的法拉第未来重返2023年CES FF91完成升级
- 2022年度回顾:市场动荡之年,哪类资产笑到了最后?
- 脑中之脑:当动物脑中移植了人类神经元 每日动态
- 投资机构,不再轻易打款了-最新快讯
- 每日讯息!摩托罗拉ThinkPhone在CES 2023官宣,保留经典小红点
- 3999 元起,一加 11 正式发布:搭载骁龙 8 Gen 2,12GB+256GB 起步
- 年货节苏宁宜品入驻家乐福、零售云,春节假期不打烊
- 真无线耳机音质代表作 真香旗舰一加 Buds Pro 2发布
- PS VR2头显即将发布 索尼正式官宣1月5日CES 2023新品发布会
- 粉丝预测:《星空》或将在4月12日国际载人航天日发售 全球快讯
- 入手的好时机!日本PS5转售采购价跌破标价_全球今头条
- 优酷回应会员账号仅能一部手机登录:打击黑灰产:世界消息
- 日本网友吐槽世界各国游戏女角形象:还是中日韩靠谱
- 微软回应FTC起诉称:并不了解动视暴雪《使命召唤》系列
- 世界微头条丨《如何让你爱的人爱上你》:爱情的六个诀窍
- 映泰突发老年卡,RTX 3080/3070 非公显卡姗姗来迟
- 一加 11系列正式登场 两种配色两种工艺:全球热文
- 一加11系列性能公布 骁龙8Gen2只是基础|每日热议
- 一加11搭载内存基因重组技术 刷新安卓流畅体验认知_环球观焦点
- 一加11系列搭载仿生仿生振感马达 未来一年没对手:环球焦点
- C罗:欧洲的工作已经完成 我赢得了一切现在是新挑战:今日热讯
- GF社新作《接龙赛马 Ride On!》将于1月20日登录IOS:全球速递