什么是Minio?如何搭建Minio集群?
來(lái)源: 三好在線 2023-01-19 13:51:28
一、Minio介紹
1.1 Minio簡(jiǎn)介
MinIO 是高性能的對(duì)象存儲(chǔ),是為海量數(shù)據(jù)存儲(chǔ)、人工智能、大數(shù)據(jù)分析而設(shè)計(jì)的,它完全兼容AmazonS3接口,單個(gè)對(duì)象最大可達(dá)5TB,適合存儲(chǔ)海量圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等。MinIO主要采用Golang語(yǔ)言實(shí)現(xiàn),,客戶(hù)端與存儲(chǔ)服務(wù)器之間采用http/https通信協(xié)議。
1.2 部署方式:
單機(jī)部署
分布式部署
1.3 Minio官網(wǎng)
1、首頁(yè)
二、Minio集群
2.1 Minio集群原理
MinIO分布式集群是指在多個(gè)服務(wù)器節(jié)點(diǎn)均部署MinIO服務(wù),并將其組建為分布式存儲(chǔ)集群,對(duì)外提供標(biāo)準(zhǔn)S3接口以進(jìn)行統(tǒng)一訪問(wèn)。
MinIO分布式集群架構(gòu)
MinIO集群采用去中心化無(wú)共享架構(gòu),各節(jié)點(diǎn)間為對(duì)等關(guān)系,連接至任一節(jié)點(diǎn)均可實(shí)現(xiàn)對(duì)集群的訪問(wèn)。在我們的方案中還選擇了Nginx的輪詢(xún)實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)的負(fù)載均衡。
數(shù)據(jù)對(duì)象在MinIO集群中進(jìn)行存儲(chǔ)時(shí),先進(jìn)行糾刪分片,后打散存儲(chǔ)在各硬盤(pán)上。具體為:
MinIO自動(dòng)在集群內(nèi)生成若干糾刪組,每個(gè)糾刪組包含一組硬盤(pán),其數(shù)量通常為4至16塊;
對(duì)數(shù)據(jù)對(duì)象進(jìn)行分片,默認(rèn)策略是得到相同數(shù)量的數(shù)據(jù)分片和校驗(yàn)分片;
而后通過(guò)哈希算法計(jì)算出該數(shù)據(jù)對(duì)象對(duì)應(yīng)的糾刪組,并將數(shù)據(jù)和校驗(yàn)分片存儲(chǔ)至糾刪組內(nèi)的硬盤(pán)上。
假設(shè)某MinIO集群內(nèi)糾刪組包含4塊硬盤(pán),某數(shù)據(jù)對(duì)象名為MyObject,其隸屬存儲(chǔ)桶名為MyBucket,哈希計(jì)算得到對(duì)應(yīng)的糾刪組為Disk 1~4。那么在Disk 1~4的數(shù)據(jù)路徑下,都會(huì)生成MyBucket/MyObject子路徑,子路徑中包含2個(gè)文件,分別為存儲(chǔ)元數(shù)據(jù)信息的xl.meta和MyObject對(duì)象在該盤(pán)上的第一個(gè)分片part.1。其中,xl表示MinIO中數(shù)據(jù)對(duì)象的默認(rèn)存儲(chǔ)格式。
2.2 術(shù)語(yǔ)解釋
1、S3
Simple Storage Service,簡(jiǎn)單存儲(chǔ)服務(wù),這個(gè)概念是Amazon在2006年推出的,對(duì)象存儲(chǔ)就是從那個(gè)時(shí)候誕生的。S3提供了一個(gè)簡(jiǎn)單Web服務(wù)接口,可用于隨時(shí)在Web上的任何位置存儲(chǔ)和檢索任何數(shù)量的數(shù)據(jù)。
2、Object
存儲(chǔ)到 Minio 的基本對(duì)象,如文件、字節(jié)流,Anything...
3、Bucket
用來(lái)存儲(chǔ) Object 的邏輯空間。每個(gè) Bucket 之間的數(shù)據(jù)是相互隔離的。
4、Drive
部署 Minio 時(shí)設(shè)置的磁盤(pán),Minio 中所有的對(duì)象數(shù)據(jù)都會(huì)存儲(chǔ)在 Drive 里。
5、Set
一組 Drive 的集合,分布式部署根據(jù)集群規(guī)模自動(dòng)劃分一個(gè)或多個(gè) Set ,每個(gè) Set 中的 Drive 分布在不同位置。一個(gè)對(duì)象存儲(chǔ)在一個(gè) Set 上。
2.3 糾刪碼
糾刪碼是一種恢復(fù)丟失和損壞數(shù)據(jù)的數(shù)學(xué)算法,目前,糾刪碼技術(shù)在分布式存儲(chǔ)系統(tǒng)中的應(yīng)用主要有三類(lèi),陣列糾刪碼(Array Code: RAID5、RAID6等)、RS(Reed-Solomon)里德-所羅門(mén)類(lèi)糾刪碼和LDPC(LowDensity Parity Check Code)低密度奇偶校驗(yàn)糾刪碼。Erasure Code是一種編碼技術(shù),它可以將n份原始數(shù)據(jù),增加m份校驗(yàn)數(shù)據(jù),并能通過(guò)n+m份中的任意n份原始數(shù)據(jù),還原為原始數(shù)據(jù)。即如果有任意小于等于m份的校驗(yàn)數(shù)據(jù)失效,仍然能通過(guò)剩下的數(shù)據(jù)還原出來(lái)。
Minio采用Reed-Solomon code將對(duì)象拆分成N/2數(shù)據(jù)和N/2 奇偶校驗(yàn)塊。
在同一集群內(nèi),MinIO 自己會(huì)自動(dòng)生成若干糾刪組(Set),用于分布存放桶數(shù)據(jù)。一個(gè)糾刪組中的一定數(shù)量的磁盤(pán)發(fā)生的故障(故障磁盤(pán)的數(shù)量小于等于校驗(yàn)盤(pán)的數(shù)量),通過(guò)糾刪碼校驗(yàn)算法可以恢復(fù)出正確的數(shù)據(jù)。
2.4 Minio集群搭建
有兩臺(tái)服務(wù)器:
192.168.3.17
192.168.3.18
1、在每臺(tái)服務(wù)器上創(chuàng)建minio目錄
mkdir -p /home/minio/{run,data1,data2} && mkdir -p /etc/minio
2、下載或者上傳下載好的minio二進(jìn)制文件
官網(wǎng)下載地址:
https://dl.min.io/server/minio/release/linux-amd64/minio
3、集群?jiǎn)?dòng)文件配置
Minio默認(rèn)9000端口,在配置文件中加入–address “127.0.0.1:9029” 可更改端口
注意 :
MINIO_ACCESS_KEY:用戶(hù)名,長(zhǎng)度最小是5個(gè)字符
MINIO_SECRET_KEY:密碼,密碼不能設(shè)置過(guò)于簡(jiǎn)單,不然minio會(huì)啟動(dòng)失敗,長(zhǎng)度最小是8個(gè)字符
–config-dir:指定集群配置文件目錄
vim /home/minio/run/minio-run.sh
集群節(jié)點(diǎn)192.168.3.17內(nèi)容為
#!/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
集群節(jié)點(diǎn)192.168.3.18內(nèi)容為
#!/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、創(chuàng)建Minio.server,將minio加入系統(tǒng)服務(wù)
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、權(quán)限修改
chmod +x /usr/lib/systemd/system/minio.service && chmod +x /home/minio/run/minio && chmod +x /home/minio/run/minio-run.sh
6、啟動(dòng)集群
systemctl start minio
systemctl enable minio
查看集群狀態(tài)
systemctl status minio.service -l
三、Nginx反向代理與負(fù)載均衡
3.1 安裝nginx
apt-get install nginx
nginx文件安裝完成之后的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放靜態(tài)文件
/var/log/nginx:存放日志
為了保證安全性,將采用https形式訪問(wèn)minio,下面展示再服務(wù)器本地生成ssl證書(shū),并且集成到nginx中。
3.2 創(chuàng)建SSL證書(shū)
1、創(chuàng)建證書(shū)目錄
[root@localhost ~]# cd /etc/nginx/
[root@localhost nginx]# mkdir ssl
[root@localhost nginx]# cd ssl/
2、生成一個(gè)RSA密鑰
[root@localhost ssl]# openssl genrsa -des3 -out nginx.key 1024 #實(shí)際使用中看服務(wù)器性能,如果足夠好也可以使用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 #確認(rèn)密碼
3、生成一個(gè)證書(shū)請(qǐng)求
[root@localhost ssl]# openssl req -new -key nginx.key -out nginx.csr
Enter pass phrase for nginx.key: #輸入剛剛創(chuàng)建的秘密碼
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 #國(guó)家名稱(chēng)
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 #部門(mén)
Common Name (eg, your name or your server's hostname) []:*.generalstorage.com #注意,此處應(yīng)當(dāng)填寫(xiě)你要部署的域名,如果是單個(gè)則直接添加即可,如果不確定,使用*,表示可以對(duì)所有g(shù)eneralstorage.com的子域名做認(rèn)證
Email Address []:admin@generalstorage.com #以域名結(jié)尾即可
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #是否設(shè)置密碼,可以不寫(xiě)直接回車(chē)
An optional company name []: #其他公司名稱(chēng) 可不寫(xiě)
4、創(chuàng)建不需要輸入密碼的RSA證書(shū),否則每次reload、restart都需要輸入密碼
[root@localhost ssl]# openssl rsa -in nginx.key -out nginx_nopass.key
Enter pass phrase for nginx.key: #之前RSA秘鑰創(chuàng)建時(shí)的密碼
writing RSA key
5、簽發(fā)證書(shū)(由于是測(cè)試自己簽發(fā),實(shí)際應(yīng)該將自己生成的csr文件提交給SSL認(rèn)證機(jī)構(gòu)認(rèn)證)
[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創(chuàng)建時(shí)的密碼
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監(jiān)聽(tīng)端口 配置跳轉(zhuǎn)
}
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證書(shū)其實(shí)是個(gè)公鑰,它會(huì)被發(fā)送到連接服務(wù)器的每個(gè)客戶(hù)端,ssl_certificate_key私鑰是用來(lái)解密的,所以它的權(quán)限要得到保護(hù)但nginx的主進(jìn)程能夠讀取。當(dāng)然私鑰和證書(shū)可以放在一個(gè)證書(shū)文件中,這種方式也只有公鑰證書(shū)才發(fā)送到client。
ssl_session_timeout 客戶(hù)端可以重用會(huì)話緩存中ssl參數(shù)的過(guò)期時(shí)間,內(nèi)網(wǎng)系統(tǒng)默認(rèn)5分鐘太短了,可以設(shè)成30m即30分鐘甚至4h。
ssl_protocols指令用于啟動(dòng)特定的加密協(xié)議,nginx在1.1.13和1.0.12版本后默認(rèn)是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1與TLSv1.2要確保OpenSSL >= 1.0.1 ,SSLv3 現(xiàn)在還有很多地方在用但有不少被攻擊的漏洞。
ssl_ciphers選擇加密套件,不同的瀏覽器所支持的套件(和順序)可能會(huì)不同。這里指定的是OpenSSL庫(kù)能夠識(shí)別的寫(xiě)法,你可以通過(guò) openssl -v cipher ‘RC4:HIGH:!aNULL:!MD5’(后面是你所指定的套件加密算法) 來(lái)看所支持算法。
ssl_prefer_server_ciphers on設(shè)置協(xié)商加密算法時(shí),優(yōu)先使用我們服務(wù)端的加密套件,而不是客戶(hù)端瀏覽器的加密套件。
啟動(dòng)服務(wù)
[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頁(yè)面展示
瀏覽器中輸入:https://test.generalstorage.com/
輸入賬號(hào)/密碼:admin/admin123
標(biāo)簽: 如何搭建Minio集群 搭建Minio集群
猜你喜歡
什么是Minio?如何搭建Minio集群?
2023-01-19 13:51:28
如何修改hosts文件?hosts文件修改方法
2023-01-19 13:51:03
SecureCRT知識(shí)介紹 SecureCRT怎么修改會(huì)話緩存大?。?/p>
2023-01-19 13:50:41
華碩電腦鍵盤(pán)驅(qū)動(dòng)怎么重新安裝?電腦鍵盤(pán)驅(qū)動(dòng)安裝方法
2023-01-19 13:50:18
電腦qq界面隱藏了用哪個(gè)快捷鍵?qq隱藏快捷鍵是什么?
2023-01-19 13:49:57
a2尺寸有多大?開(kāi)本尺寸通常分哪幾種類(lèi)型?
2023-01-19 13:49:36
今日英鎊/美元匯率基本面分析及交易策略(2023年1月19日) 世界熱點(diǎn)
2023-01-19 10:45:33
今熱點(diǎn):【機(jī)構(gòu)調(diào)研記錄】興合基金調(diào)研華東醫(yī)藥
2023-01-19 08:17:34
世界熱議:南上海最大燈會(huì)正式亮燈!阿姨爺叔趕來(lái)打卡直呼年味濃!
2023-01-18 23:08:50
乘聯(lián)會(huì):1月1-15日乘用車(chē)市場(chǎng)零售71.9萬(wàn)輛:世界資訊
2023-01-18 17:52:04
水利部調(diào)度水庫(kù)向珠江下游補(bǔ)水 壓制珠江河口咸潮:全球時(shí)訊
2023-01-18 15:09:36
休眠快捷鍵如何設(shè)置?鍵盤(pán)休眠狀態(tài)設(shè)置技巧
2023-01-18 13:48:08
win7家庭高級(jí)版需什么硬件配置?電腦上運(yùn)行win7需要滿(mǎn)足的7點(diǎn)配置
2023-01-18 13:47:46
測(cè)試網(wǎng)速的三種方法是什么?測(cè)網(wǎng)速命令是什么?
2023-01-18 13:47:25
空壓機(jī)的作用及用途 空壓機(jī)的工作原理
2023-01-18 13:47:07
聯(lián)想z500如何進(jìn)入bios模式?聯(lián)想電腦進(jìn)入bios的步驟
2023-01-18 13:46:45
電腦啟動(dòng)黑屏怎么回事?電腦啟動(dòng)后黑屏解決方法
2023-01-18 13:46:22
網(wǎng)卡驅(qū)動(dòng)裝不上怎么辦?無(wú)線網(wǎng)卡顯示驅(qū)動(dòng)未安裝成功
2023-01-18 13:45:57
鼠標(biāo)不管用了怎么辦?鼠標(biāo)移不動(dòng)是什么原因?
2023-01-18 13:45:32
邁德克斯攝像頭怎么用?邁德克斯攝像頭驅(qū)動(dòng)特色
2023-01-18 13:44:27
耳機(jī)有回聲該怎樣處理?最簡(jiǎn)單的消除手機(jī)回音的方法
2023-01-18 13:44:08
待機(jī)圖片怎么設(shè)置?自定義手機(jī)息屏顯示圖案教程
2023-01-18 13:43:31
電腦突然藍(lán)屏怎么辦?處理電腦藍(lán)屏的正確方法
2023-01-18 13:42:59
DNS是什么意思?DNS怎么設(shè)置?
2023-01-18 13:42:24
4K分辨率有多少像素?4K和超高清一樣嗎?
2023-01-18 13:42:02