最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Minio基本介紹及如何搭建Minio集群

 更新時間:2022年06月14日 10:37:49   作者:網絡技術聯盟站  
MinIO主要采用Golang語言實現,客戶端與存儲服務器之間采用http/https通信協議,本文重點給大家介紹什么是Minio?如何搭建Minio集群?感興趣的朋友一起看看吧

一、Minio介紹

1.1 Minio簡介

MinIO 是高性能的對象存儲,是為海量數據存儲、人工智能、大數據分析而設計的,它完全兼容Amazon S3接口,單個對象最大可達5TB,適合存儲海量圖片、視頻、日志文件、備份數據和容器/虛擬機鏡像等。MinIO主要采用Golang語言實現,,客戶端與存儲服務器之間采用http/https通信協議。

1.2 部署方式:

  • 單機部署
  • 分布式部署

1.3 Minio官網

1、首頁

https://min.io/

2、下載

https://min.io/download

3、中文文檔

http://docs.minio.org.cn/docs/

二、Minio集群

2.1 Minio集群原理

MinIO分布式集群是指在多個服務器節(jié)點均部署MinIO服務,并將其組建為分布式存儲集群,對外提供標準S3接口以進行統(tǒng)一訪問。

MinIO集群采用去中心化無共享架構,各節(jié)點間為對等關系,連接至任一節(jié)點均可實現對集群的訪問。在我們的方案中還選擇了Nginx的輪詢實現各個節(jié)點的負載均衡。

數據對象在MinIO集群中進行存儲時,先進行糾刪分片,后打散存儲在各硬盤上。具體為:

  • MinIO自動在集群內生成若干糾刪組,每個糾刪組包含一組硬盤,其數量通常為4至16塊;
  • 對數據對象進行分片,默認策略是得到相同數量的數據分片和校驗分片;
  • 而后通過哈希算法計算出該數據對象對應的糾刪組,并將數據和校驗分片存儲至糾刪組內的硬盤上。

假設某MinIO集群內糾刪組包含4塊硬盤,某數據對象名為MyObject,其隸屬存儲桶名為MyBucket,哈希計算得到對應的糾刪組為Disk 14。那么在Disk 14的數據路徑下,都會生成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 的基本對象,如文件、字節(jié)流,Anything...

3、Bucket

用來存儲 Object 的邏輯空間。每個 Bucket 之間的數據是相互隔離的。

4、Drive

部署 Minio 時設置的磁盤,Minio 中所有的對象數據都會存儲在 Drive 里。

5、Set

一組 Drive 的集合,分布式部署根據集群規(guī)模自動劃分一個或多個 Set ,每個 Set 中的 Drive 分布在不同位置。一個對象存儲在一個 Set 上。

2.3 糾刪碼

糾刪碼是一種恢復丟失和損壞數據的數學算法,目前,糾刪碼技術在分布式存儲系統(tǒng)中的應用主要有三類,陣列糾刪碼(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),用于分布存放桶數據。一個糾刪組中的一定數量的磁盤發(fā)生的故障(故障磁盤的數量小于等于校驗盤的數量),通過糾刪碼校驗算法可以恢復出正確的數據。

2.4 Minio集群搭建

有兩臺服務器:

  • 192.168.3.17
  • 192.168.3.18

1、在每臺服務器上創(chuàng)建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

集群節(jié)點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 \

集群節(jié)點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、創(chuàng)建Minio.server,將minio加入系統(tǒng)服務

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

查看集群狀態(tài)

systemctl status minio.service -l

三、Nginx反向代理與負載均衡

3.1 安裝nginx

apt-get install nginx

nginx文件安裝完成之后的文件位置:

  • /usr/sbin/nginx:主程序
  • /etc/nginx:存放配置文件
  • /usr/share/nginx:存放靜態(tài)文件
  • /var/log/nginx:存放日志

為了保證安全性,將采用https形式訪問minio,下面展示再服務器本地生成ssl證書,并且集成到nginx中。

3.2 創(chuàng)建SSL證書

1、創(chuàng)建證書目錄

[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:                             #輸入剛剛創(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                      #國家名稱
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、創(chuàng)建不需要輸入密碼的RSA證書,否則每次reload、restart都需要輸入密碼

[root@localhost ssl]# openssl rsa -in nginx.key -out nginx_nopass.key
Enter pass phrase for nginx.key:        #之前RSA秘鑰創(chuàng)建時的密碼
writing RSA key

5、簽發(fā)證書(由于是測試自己簽發(fā),實際應該將自己生成的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創(chuàng)建時的密碼

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)聽端口 配置跳轉
}
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證書其實是個公鑰,它會被發(fā)送到連接服務器的每個客戶端,ssl_certificate_key私鑰是用來解密的,所以它的權限要得到保護但nginx的主進程能夠讀取。當然私鑰和證書可以放在一個證書文件中,這種方式也只有公鑰證書才發(fā)送到client。
  • ssl_session_timeout 客戶端可以重用會話緩存中ssl參數的過期時間,內網系統(tǒng)默認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設置協商加密算法時,優(yōu)先使用我們服務端的加密套件,而不是客戶端瀏覽器的加密套件。

啟動服務

[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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • go處理線程之間的交互示例代碼

    go處理線程之間的交互示例代碼

    Go語言以goroutine為核心實現并發(fā)編程,其中線程間交互主要通過Channels、WaitGroup、Mutex和Select實現,Channels提供goroutine間的數據傳遞,本文給大家介紹go處理線程之間的交互示例代碼,感興趣的朋友一起看看吧
    2024-10-10
  • Golang中切片長度和容量的區(qū)別示例詳解

    Golang中切片長度和容量的區(qū)別示例詳解

    切片長度與容量在Go中很常見,切片長度是切片中可用元素的數量,而切片容量是從切片中第一個元素開始計算的底層數組中的元素數量,這篇文章主要給大家介紹了關于Golang中切片長度和容量區(qū)別的相關資料,需要的朋友可以參考下
    2024-01-01
  • 詳解 Go 語言中 Map 類型和 Slice 類型的傳遞

    詳解 Go 語言中 Map 類型和 Slice 類型的傳遞

    這篇文章主要介紹了詳解 Go 語言中 Map 類型和 Slice 類型的傳遞的相關資料,需要的朋友可以參考下
    2017-09-09
  • Go語言擴展原語之Semaphore的用法詳解

    Go語言擴展原語之Semaphore的用法詳解

    Go語言的擴展包中提供了帶權重的信號量?semaphore.Weighted,讓我們可以按照不同的權重管理資源的訪問,下面小編就來和大家聊聊它們的具體用法吧
    2023-07-07
  • golang并發(fā)工具MapReduce降低服務響應時間

    golang并發(fā)工具MapReduce降低服務響應時間

    這篇文章主要為大家介紹了golang并發(fā)使用MapReduce降低服務響應時間實踐使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Go學習筆記之map的聲明和初始化

    Go學習筆記之map的聲明和初始化

    map底層是由哈希表實現的,Go使用鏈地址法來解決鍵沖突,下面這篇文章主要給大家介紹了關于Go學習筆記之map的聲明和初始化的相關資料,需要的朋友可以參考下
    2022-11-11
  • goland?導入github包報紅問題解決

    goland?導入github包報紅問題解決

    本文主要介紹了Go項目在GoLand中導入依賴標紅問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • 淺談golang slice 切片原理

    淺談golang slice 切片原理

    這篇文章主要介紹了淺談golang slice 切片原理,詳細的介紹了golang slice 切片的概念和原理,具有一定的參考價值,有興趣的可以了解一下
    2017-11-11
  • 利用rpm打包上線部署golang代碼的方法教程

    利用rpm打包上線部署golang代碼的方法教程

    RPM是RPM Package Manager(RPM軟件包管理器)的縮寫,這篇文章主要給大家介紹了關于利用rpm打包上線部署golang代碼的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • Go逃逸分析示例詳解

    Go逃逸分析示例詳解

    這篇文章主要為大家介紹了Go逃逸分析示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08

最新評論

温宿县| 乐至县| 建宁县| 南漳县| 延寿县| 民丰县| 衡水市| 油尖旺区| 罗定市| 广灵县| 府谷县| 台前县| 邵阳县| 开原市| 册亨县| 定兴县| 隆回县| 乡城县| 唐山市| 乌拉特前旗| 嫩江县| 马关县| 彰化县| 漳州市| 安福县| 南溪县| 梧州市| 凤山市| 吴忠市| 东乡| 万源市| 凤凰县| 石阡县| 叙永县| 怀集县| 师宗县| 盈江县| 吉木萨尔县| 砚山县| 莱西市| 涟水县|