目录一、MiNIO介绍1.1 Minio简介1.2 部署方式:1.3 Minio官网二、Minio集群2.1 Minio集群原理2.2 术语解释2.3 纠删码2.4 Minio集群搭
MinIO 是高性能的对象存储,是为海量数据存储、人工智能、大数据分析而设计的,它完全兼容Amazon S3接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。MinIO主要采用Golang语言实现,,客户端与存储服务器之间采用http/https通信协议。
1、首页
https://min.io/
2、下载
Https://min.io/download
3、中文文档
http://docs.minio.org.cn/docs/
MinIO分布式集群是指在多个服务器节点均部署MinIO服务,并将其组建为分布式存储集群,对外提供标准S3接口以进行统一访问。
MinIO集群采用去中心化无共享架构,各节点间为对等关系,连接至任一节点均可实现对集群的访问。在我们的方案中还选择了Nginx的轮询实现各个节点的负载均衡。
数据对象在MinIO集群中进行存储时,先进行纠删分片,后打散存储在各硬盘上。具体为:
假设某MinIO集群内纠删组包含4块硬盘,某数据对象名为MyObject,其隶属存储桶名为MyBucket,哈希计算得到对应的纠删组为Disk 14。那么在Disk 14的数据路径下,都会生成MyBucket/MyObject子路径,子路径中包含2个文件,分别为存储元数据信息的xl.meta和MyObject对象在该盘上的第一个分片part.1。其中,xl表示MinIO中数据对象的默认存储格式。
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 上。
纠删码是一种恢复丢失和损坏数据的数学算法,目前,纠删码技术在分布式存储系统中的应用主要有三类,阵列纠删码(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),用于分布存放桶数据。一个纠删组中的一定数量的磁盘发生的故障(故障磁盘的数量小于等于校验盘的数量),通过纠删码校验算法可以恢复出正确的数据。
有两台服务器:
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” 可更改端口
注意 :
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
apt-get install nginx
nginx文件安装完成之后的文件位置:
/usr/sbin/nginx
:主程序/etc/nginx
:存放配置文件/usr/share/nginx
:存放静态文件/var/log/nginx
:存放日志为了保证安全性,将采用https形式访问minio,下面展示再服务器本地生成ssl证书,并且集成到nginx中。
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创建时的密码
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;
}
}
启动服务
[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
浏览器中输入:https://test.generalstorage.com/
输入账号/密码:admin/admin123
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: Minio基本介绍及如何搭建Minio集群
本文链接: https://lsjlt.com/news/151403.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0