2023-06-26 18:20:26來源:大數(shù)據(jù)與云原生技術(shù)分享
MinIO是一個(gè)開源的對象存儲(chǔ)服務(wù)器,它兼容Amazon S3(Simple Storage Service)API。它被設(shè)計(jì)用于構(gòu)建分布式存儲(chǔ)架構(gòu),提供高可用性、高性能和可擴(kuò)展的對象存儲(chǔ)解決方案。
下面是MinIO的一些主要特點(diǎn)和功能:
對象存儲(chǔ):MinIO以對象為基本存儲(chǔ)單元,可以存儲(chǔ)和管理任意大小的文件、數(shù)據(jù)對象。它提供了標(biāo)準(zhǔn)的對象存儲(chǔ)操作,如上傳、下載、刪除和元數(shù)據(jù)管理。分布式架構(gòu):MinIO采用分布式架構(gòu),可以在多個(gè)節(jié)點(diǎn)上部署,并將數(shù)據(jù)分布和復(fù)制在不同的節(jié)點(diǎn)上。這提供了高可用性和數(shù)據(jù)冗余,確保數(shù)據(jù)的持久性和可靠性。高性能:MinIO通過并行處理和分布式架構(gòu)實(shí)現(xiàn)高性能的數(shù)據(jù)存取。它利用現(xiàn)代硬件和網(wǎng)絡(luò)技術(shù),充分利用多核處理器和高帶寬網(wǎng)絡(luò),以實(shí)現(xiàn)快速的數(shù)據(jù)傳輸和處理。水平擴(kuò)展:MinIO可以水平擴(kuò)展,通過添加更多的節(jié)點(diǎn)來增加存儲(chǔ)容量和吞吐量。它支持自動(dòng)數(shù)據(jù)分片和負(fù)載均衡,確保數(shù)據(jù)在各個(gè)節(jié)點(diǎn)上均勻分布和訪問的負(fù)載均衡。數(shù)據(jù)保護(hù):MinIO提供了多種數(shù)據(jù)保護(hù)機(jī)制,包括數(shù)據(jù)冗余、故障轉(zhuǎn)移和數(shù)據(jù)校驗(yàn)。它可以在不同的節(jié)點(diǎn)之間復(fù)制數(shù)據(jù),以應(yīng)對節(jié)點(diǎn)故障和數(shù)據(jù)損壞的情況。安全性:MinIO支持?jǐn)?shù)據(jù)加密和訪問控制,保護(hù)存儲(chǔ)在其中的數(shù)據(jù)的安全性和隱私性。它提供了傳輸層加密(TLS/SSL)和服務(wù)器端加密選項(xiàng),以及身份驗(yàn)證和訪問控制機(jī)制。總的來說,MinIO是一個(gè)開源的高性能對象存儲(chǔ)服務(wù)器,適用于構(gòu)建分布式存儲(chǔ)系統(tǒng)。它具有高可用性、可擴(kuò)展性和數(shù)據(jù)保護(hù)機(jī)制,兼容Amazon S3 API,使其與現(xiàn)有的S3生態(tài)系統(tǒng)和工具集成無縫。MinIO在大數(shù)據(jù)、云計(jì)算和容器化環(huán)境中廣泛應(yīng)用,為應(yīng)用程序提供了可靠、高效的對象存儲(chǔ)服務(wù)。
(相關(guān)資料圖)
這里主要側(cè)重使用docker快速部署環(huán)境,想了解更多,可以參考我以下幾篇文章:
高性能分布式對象存儲(chǔ)——MinIO(環(huán)境部署)高性能分布式對象存儲(chǔ)——MinIO實(shí)戰(zhàn)操作(MinIO擴(kuò)容)【云原生】Minio on k8s 講解與實(shí)戰(zhàn)操作【云原生】鏡像倉庫Harbor對接MinIO對象存儲(chǔ)官方文檔:https://docs.min.io/中文文檔:http://docs.minio.org.cn/docs/
二、MinIO 與 Ceph 對比MinIO和Ceph都是流行的開源存儲(chǔ)解決方案,它們在對象存儲(chǔ)領(lǐng)域有不同的特點(diǎn)和適用場景。下面是MinIO和Ceph的對比:
1)架構(gòu)設(shè)計(jì)對比MinIO:MinIO采用分布式架構(gòu),以水平擴(kuò)展為基礎(chǔ)。它通過多個(gè)獨(dú)立的MinIO節(jié)點(diǎn)組成集群,每個(gè)節(jié)點(diǎn)都是獨(dú)立的對象存儲(chǔ)服務(wù)器。MinIO專注于提供簡單、輕量級的對象存儲(chǔ)服務(wù),適用于小型到中等規(guī)模的部署。Ceph:Ceph是一個(gè)分布式存儲(chǔ)系統(tǒng),由對象存儲(chǔ)、塊存儲(chǔ)和文件系統(tǒng)組成。它使用RADOS(Reliable Autonomic Distributed Object Store)作為底層存儲(chǔ)系統(tǒng),提供高可用性和數(shù)據(jù)冗余。Ceph適用于大規(guī)模的企業(yè)級部署,具有復(fù)雜的架構(gòu)和豐富的功能。2)數(shù)據(jù)一致性對比MinIO:MinIO在默認(rèn)配置下提供最終一致性,即寫入操作返回成功后,數(shù)據(jù)可能會(huì)有一定的時(shí)間窗口內(nèi)的延遲才能完全一致。這適用于許多應(yīng)用場景,如數(shù)據(jù)備份、存檔等。Ceph:Ceph提供強(qiáng)一致性,即寫入操作在返回成功后,數(shù)據(jù)即刻就達(dá)到一致性。這對于需要強(qiáng)一致性保證的應(yīng)用場景非常重要,如數(shù)據(jù)庫和事務(wù)處理。3)部署和管理對比MinIO:MinIO的部署和管理相對簡單,可以通過單個(gè)二進(jìn)制文件或容器進(jìn)行快速安裝和配置。它提供了直觀的管理界面和易于使用的API,使得管理和監(jiān)控變得簡單。Ceph:Ceph的部署和管理相對復(fù)雜,涉及多個(gè)組件和配置。它需要更多的時(shí)間和專業(yè)知識來設(shè)置和維護(hù),需要熟悉Ceph的架構(gòu)和配置。4)生態(tài)系統(tǒng)和兼容性對比MinIO:MinIO與Amazon S3 API兼容,這意味著現(xiàn)有的S3工具和應(yīng)用程序可以無縫地與MinIO集成。它還有一個(gè)活躍的社區(qū),提供了各種客戶端庫和插件,擴(kuò)展了其功能和兼容性。Ceph:Ceph具有廣泛的生態(tài)系統(tǒng)和豐富的功能集。它可以與多個(gè)協(xié)議和接口(如RADOS、RBD、CephFS)進(jìn)行集成,提供塊存儲(chǔ)、文件系統(tǒng)和對象存儲(chǔ)的全面解決方案。綜上所述,MinIO適用于簡單、輕量級的對象存儲(chǔ)需求,注重高性能和易用性。它適合中小規(guī)模部署,并且與Amazon S3兼容,易于與現(xiàn)有的S3生態(tài)系統(tǒng)集成。
Ceph則適用于大規(guī)模、復(fù)雜的企業(yè)級存儲(chǔ)需求。它提供強(qiáng)一致性和豐富的功能集,適合需要高可用性、數(shù)據(jù)冗余和復(fù)雜數(shù)據(jù)操作的場景。Ceph的部署和管理相對復(fù)雜,需要更多的配置和管理工作。選擇MinIO還是Ceph取決于具體的需求和場景。如果你需要一個(gè)簡單、易用、高性能的對象存儲(chǔ)解決方案,并與S3兼容,那么MinIO是一個(gè)不錯(cuò)的選擇。如果你需要一個(gè)功能強(qiáng)大、可擴(kuò)展、支持塊存儲(chǔ)和文件系統(tǒng)的分布式存儲(chǔ)系統(tǒng),且具備強(qiáng)一致性的要求,那么Ceph是更適合的選擇。無論選擇MinIO還是Ceph,都需要仔細(xì)評估其與特定應(yīng)用和環(huán)境的兼容性、性能需求、管理復(fù)雜性和可擴(kuò)展性,以確保選擇的解決方案能夠滿足實(shí)際需求并提供可靠的存儲(chǔ)服務(wù)。
三、前期準(zhǔn)備1)部署 docker# 安裝yum-config-manager配置工具yum -y install yum-utils# 建議使用阿里云yum源:(推薦)#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安裝docker-ce版本yum install -y docker-ce# 啟動(dòng)并開機(jī)啟動(dòng)systemctl enable --now dockerdocker --version
2)部署 docker-composecurl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composedocker-compose --version
四、創(chuàng)建網(wǎng)絡(luò)# 創(chuàng)建,注意不能使用hadoop_network,要不然啟動(dòng)hs2服務(wù)的時(shí)候會(huì)有問題!??!docker network create hadoop-network# 查看docker network ls
五、MinIO 編排部署1)下載 MinIO 安裝包wget https://dl.min.io/server/minio/release/linux-amd64/minio
2)配置這里部署的是偽集群,但是需要的磁盤還是那么多,下面就是掛載磁盤的步驟:
### 1、格式化mkfs.ext4 /dev/sdbmkfs.ext4 /dev/sdcmkfs.ext4 /dev/sddmkfs.ext4 /dev/sdemkfs.ext4 /dev/sdfmkfs.ext4 /dev/sdgmkfs.ext4 /dev/sdhmkfs.ext4 /dev/sdimkfs.ext4 /dev/sdjmkfs.ext4 /dev/sdkmkfs.ext4 /dev/sdlmkfs.ext4 /dev/sdm### 2、創(chuàng)建掛載目錄mkdir /opt/apache/docker-compose-minio/data/minio-node{1..3}/data{1..4}### 3、掛載# minio-node1mount /dev/sdb /opt/apache/docker-compose-minio/data/minio-node1/data1mount /dev/sdc /opt/apache/docker-compose-minio/data/minio-node1/data2mount /dev/sdd /opt/apache/docker-compose-minio/data/minio-node1/data3mount /dev/sde /opt/apache/docker-compose-minio/data/minio-node1/data4# minio-node2mount /dev/sdf /opt/apache/docker-compose-minio/data/minio-node2/data1mount /dev/sdg /opt/apache/docker-compose-minio/data/minio-node2/data2mount /dev/sdh /opt/apache/docker-compose-minio/data/minio-node2/data3mount /dev/sdi /opt/apache/docker-compose-minio/data/minio-node2/data4# minio-node3mount /dev/sdj /opt/apache/docker-compose-minio/data/minio-node3/data1mount /dev/sdk /opt/apache/docker-compose-minio/data/minio-node3/data2mount /dev/sdl /opt/apache/docker-compose-minio/data/minio-node3/data3mount /dev/sdm /opt/apache/docker-compose-minio/data/minio-node3/data4### 4、持久化配置# minio-node1echo "/dev/sdb /opt/apache/docker-compose-minio/data/minio-node1/data1 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sdc /opt/apache/docker-compose-minio/data/minio-node1/data2 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sdd /opt/apache/docker-compose-minio/data/minio-node1/data3 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sde /opt/apache/docker-compose-minio/data/minio-node1/data4 ext4 defaults 0 0" >> /etc/fstab# minio-node2echo "/dev/sdf /opt/apache/docker-compose-minio/data/minio-node2/data1 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sdg /opt/apache/docker-compose-minio/data/minio-node2/data2 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sdh /opt/apache/docker-compose-minio/data/minio-node2/data3 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sdi /opt/apache/docker-compose-minio/data/minio-node1/data4 ext4 defaults 0 0" >> /etc/fstab# minio-node3echo "/dev/sdj /opt/apache/docker-compose-minio/data/minio-node3/data1 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sdk /opt/apache/docker-compose-minio/data/minio-node3/data2 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sdl /opt/apache/docker-compose-minio/data/minio-node3/data3 ext4 defaults 0 0" >> /etc/fstabecho "/dev/sdm /opt/apache/docker-compose-minio/data/minio-node3/data4 ext4 defaults 0 0" >> /etc/fstab
3)啟動(dòng)腳本 bootstrap.sh#!/bin/bashsource /etc/profile# 在三臺機(jī)器上都執(zhí)行該文件,即以分布式的方式啟動(dòng)了MINIO# --address "0.0.0.0:9000" 掛載9001端口為api端口(如Java客戶端)訪問的端口# --console-address ":9000" 掛載9000端口為web端口;/opt/apache/minio/minio server --address 0.0.0.0:9000 --console-address 0.0.0.0:9001 --config-dir /etc/minio \http://minio-node1/opt/apache/minio/data/export1 \http://minio-node1/opt/apache/minio/data/export2 \http://minio-node1/opt/apache/minio/data/export3 \http://minio-node1/opt/apache/minio/data/export4 \http://minio-node2/opt/apache/minio/data/export1 \http://minio-node2/opt/apache/minio/data/export2 \http://minio-node2/opt/apache/minio/data/export3 \http://minio-node2/opt/apache/minio/data/export4 \http://minio-node3/opt/apache/minio/data/export1 \http://minio-node3/opt/apache/minio/data/export2 \http://minio-node3/opt/apache/minio/data/export3 \http://minio-node3/opt/apache/minio/data/export4 >/opt/apache/minio/logs/minio_server.log &tail -f /opt/apache/minio/logs/minio_server.log
Minio默認(rèn)9000端口,在配置文件中加入–address “127.0.0.1:9029” 可更改端口
MINIO_ACCESS_KEY:用戶名,長度最小是5個(gè)字符MINIO_SECRET_KEY:密碼,密碼不能設(shè)置過于簡單,不然minio會(huì)啟動(dòng)失敗,長度最小是8個(gè)字符–config-dir:指定集群配置文件目錄–address:api的端口,默認(rèn)是9000--console-address:web端口,默認(rèn)隨機(jī)4)構(gòu)建鏡像 Dockerfile【溫馨提示】磁盤大小必須>1G,這里我添加的是4*2G的盤
FROM registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/centos-jdk:7.7.1908# 創(chuàng)建日志存儲(chǔ)目錄RUN mkdir -p /opt/apache/minio/logs# 分別在三個(gè)節(jié)點(diǎn)上創(chuàng)建存儲(chǔ)目錄RUN mkdir -p /opt/apache/minio/data/export{1..3}# 創(chuàng)建配置目錄RUN mkdir -p /etc/minio# 賬號密碼ENV MINIO_ROOT_USER=adminENV MINIO_ROOT_PASSWORD=admin123456# copy minioCOPY minio /opt/apache/minio/# copy minio client mcCOPY mc /opt/apache/minio/RUN ln -s /opt/apache/minio/mc /usr/local/sbin/mc# copy bootstrap.shCOPY bootstrap.sh /opt/apache/RUN chmod +x /opt/apache/bootstrap.shWORKDIR /opt/apache
開始構(gòu)建鏡像
docker build -t registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619 . --no-cache --progress=plain# 為了方便小伙伴下載即可使用,我這里將鏡像文件推送到阿里云的鏡像倉庫docker push registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619### 參數(shù)解釋# -t:指定鏡像名稱# . :當(dāng)前目錄Dockerfile# -f:指定Dockerfile路徑# --no-cache:不緩存
5)編排 docker-compose.yamlversion: "3"services: minio-node1: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619 container_name: minio-node1 hostname: minio-node1 restart: always privileged: true env_file: - .env expose: - "${MinIO_PORT}" ports: - "${MinIO_HTTP_PORT}" volumes: - /opt/apache/docker-compose-minio/data/minio-node1/data1:/opt/apache/minio/data/export1 - /opt/apache/docker-compose-minio/data/minio-node1/data2:/opt/apache/minio/data/export2 - /opt/apache/docker-compose-minio/data/minio-node1/data3:/opt/apache/minio/data/export3 - /opt/apache/docker-compose-minio/data/minio-node1/data4:/opt/apache/minio/data/export4 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :${MinIO_PORT} || exit 1"] interval: 10s timeout: 10s retries: 5 minio-node2: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619 container_name: minio-node2 hostname: minio-node2 restart: always privileged: true env_file: - .env expose: - "${MinIO_PORT}" ports: - "${MinIO_HTTP_PORT}" volumes: - /opt/apache/docker-compose-minio/data/minio-node2/data1:/opt/apache/minio/data/export1 - /opt/apache/docker-compose-minio/data/minio-node2/data2:/opt/apache/minio/data/export2 - /opt/apache/docker-compose-minio/data/minio-node2/data3:/opt/apache/minio/data/export3 - /opt/apache/docker-compose-minio/data/minio-node2/data4:/opt/apache/minio/data/export4 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :${MinIO_PORT} || exit 1"] interval: 10s timeout: 10s retries: 5 minio-node3: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619 container_name: minio-node3 hostname: minio-node3 restart: always privileged: true env_file: - .env expose: - "${MinIO_PORT}" ports: - "${MinIO_HTTP_PORT}" volumes: - /opt/apache/docker-compose-minio/data/minio-node3/data1:/opt/apache/minio/data/export1 - /opt/apache/docker-compose-minio/data/minio-node3/data2:/opt/apache/minio/data/export2 - /opt/apache/docker-compose-minio/data/minio-node3/data3:/opt/apache/minio/data/export3 - /opt/apache/docker-compose-minio/data/minio-node3/data4:/opt/apache/minio/data/export4 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :${MinIO_PORT} || exit 1"] interval: 10s timeout: 10s retries: 5# 連接外部網(wǎng)絡(luò)networks: hadoop-network: external: true
.env文件內(nèi)容
MinIO_PORT=9000MinIO_HTTP_PORT=9001
6)開始部署# --project-name指定項(xiàng)目名稱,默認(rèn)是當(dāng)前目錄名稱docker-compose -f docker-compose.yaml up -d# 查看docker-compose -f docker-compose.yaml ps# 卸載docker-compose -f docker-compose.yaml down
7)簡單測試驗(yàn)證# 登錄容器內(nèi)測試docker exec -it minio-node1 bash# 登錄,密文輸入(推薦)[root@minio-node1 apache]# mc config host add minio http://localhost:9000Enter Access Key: adminEnter Secret Key: 輸入密碼Added `minio` successfully.# 查看集群信息mc admin info minio
8)web 訪問http://ip:port
docker-compose -f docker-compose.yaml ps
賬號/密碼:admin/admin123456
關(guān)鍵詞:
一、概述MinIO是一個(gè)開源的對象存儲(chǔ)服務(wù)器,它兼容AmazonS3(SimpleSto
一:背景1 講故事前段時(shí)間有個(gè)朋友找到我,說他們的程序有偶發(fā)崩潰的情
疫情之下,餐飲行業(yè)經(jīng)受了,改革開放以來最嚴(yán)峻的寒冬。作為餐飲門店,
1、調(diào)節(jié)臺式電腦屏幕亮度的方法:工具材料臺式機(jī)電腦方法步驟①在電腦
大家好,我是漁夫子。代碼重構(gòu)是在不改變外部功能的情況下對現(xiàn)有代碼進(jìn)
拉鏈表是一種常用的數(shù)據(jù)結(jié)構(gòu),通常用于記錄歷史數(shù)據(jù)的變化。在實(shí)際項(xiàng)目
原始需求是如果系統(tǒng)的密碼被修改,或者創(chuàng)建了新用戶,就告警出來。本質(zhì)
sync Condsync Cond是Golang標(biāo)準(zhǔn)庫提供的一個(gè)基于互斥鎖 讀寫鎖實(shí)現(xiàn)的
哈嘍,大家好,我是了不起。首先,Swagger這個(gè)工具能夠自動(dòng)生成API接口
杭州亞運(yùn)會(huì)已進(jìn)入100天倒計(jì)時(shí),代表中國參加亞運(yùn)的“電競國家隊(duì)”終于
一場時(shí)隔26年的“世紀(jì)大和解”將長安馬自達(dá)送上了熱搜。6月25日晚間,
Jmeter錄制腳本原理腳本錄制時(shí),Jmeter作為代理網(wǎng)關(guān),通過監(jiān)聽某個(gè)端口
大家好,我是前端西瓜哥,今天我們來了解WebGL的紋理對象(Texture)紋
Python是一門非常流行的編程語言,擁有豐富的第三方庫和工具,這些庫和
一、商業(yè)圈1 小米汽車售價(jià)曝光!起售不到15萬,續(xù)航800km日前媒體獲取