前言
分布式存儲(chǔ)服務(wù)一直以來(lái)是中大型項(xiàng)目不可或缺的一部分,一般常用的商用文件服務(wù)有七牛云、阿里云等等,自建的開(kāi)源文件服務(wù)有FastDFS、HDFS等等。但是對(duì)于這些方案有的需要付費(fèi)有些卻太過(guò)于笨重,今天我們就分享一款輕量級(jí)完全可替代生產(chǎn)的高性能分布式儲(chǔ)存服務(wù)Minio。
MinIO簡(jiǎn)介
MinIO 提供高性能、與S3 兼容的對(duì)象存儲(chǔ)系統(tǒng),讓你自己能夠構(gòu)建自己的私有云儲(chǔ)存服務(wù)。
MinIO原生支持 Kubernetes,它可用于每個(gè)獨(dú)立的公共云、每個(gè) Kubernetes 發(fā)行版、私有云和邊緣的對(duì)象存儲(chǔ)套件。
MinIO是軟件定義的,不需要購(gòu)買(mǎi)其他任何硬件,在 GNU AGPL v3 下是 100% 開(kāi)源的。
MinIO優(yōu)勢(shì)
簡(jiǎn)單
簡(jiǎn)單性是百萬(wàn)兆次級(jí)數(shù)據(jù)基礎(chǔ)設(shè)施的基礎(chǔ) - 無(wú)論是在技術(shù)上還是在操作上。MinIO使用和部署非常簡(jiǎn)單,沒(méi)有其他對(duì)象存儲(chǔ)可以讓您在最快的時(shí)間內(nèi)實(shí)現(xiàn)下載到生產(chǎn)環(huán)境的部署
高性能
簡(jiǎn)單性是百萬(wàn)兆次級(jí)數(shù)據(jù)基礎(chǔ)設(shè)施的基礎(chǔ) - 無(wú)論是在技術(shù)上還是在操作上。MinIO使用和部署非常簡(jiǎn)單,沒(méi)有其他對(duì)象存儲(chǔ)可以讓您在最快的時(shí)間內(nèi)實(shí)現(xiàn)下載到生產(chǎn)環(huán)境的部署
kubernetes原生支持
通過(guò)原生 Kubernetes 運(yùn)營(yíng)商集成,MinIO 支持公共云、私有云和邊緣云上所有主要的 Kubernetes 發(fā)行版。
MinIO技術(shù)亮點(diǎn)
主動(dòng)復(fù)制
對(duì)象存儲(chǔ)的主動(dòng)、多站點(diǎn)復(fù)制是任務(wù)關(guān)鍵型生產(chǎn)環(huán)境的關(guān)鍵要求。MinIO是目前唯一提供它的供應(yīng)商。MinIO 提供存儲(chǔ)桶級(jí)粒度,并支持同步和近同步復(fù)制,具體取決于架構(gòu)選擇和數(shù)據(jù)變化率。
加密
在對(duì)象存儲(chǔ)領(lǐng)域,需要強(qiáng)大的加密才能在談判桌上占有一席之地。MinIO 通過(guò)最高級(jí)別的加密以及廣泛的優(yōu)化提供更多功能,幾乎消除了通常與存儲(chǔ)加密操作相關(guān)的開(kāi)銷(xiāo)。
可擴(kuò)展性
縮放是一個(gè)維度概念,但它有一個(gè)真理:簡(jiǎn)單縮放。MinIO 通過(guò)稱為服務(wù)器池的概念進(jìn)行水平擴(kuò)展(橫向擴(kuò)展)。服務(wù)器池是一種結(jié)合了多個(gè)技術(shù)組件的方法。每個(gè)服務(wù)器池都是一組獨(dú)立的節(jié)點(diǎn),具有自己的計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)資源。
Docker部署MinIO集群
為方便展示操作過(guò)程我們選擇docker-compose編排容器,并且直接編排四個(gè)MinIO服務(wù)和一個(gè)Nginx服務(wù),有條件的同學(xué)可以分別部署在不同服務(wù)器上。
Minio目錄樹(shù)
[root@master minio]# tree
.
├── docker-compose-minio.yaml
├── nginx.conf
├── minio1
│ ├── config
│ └── data
├── minio2
│ ├── config
│ └── data
├── minio3
│ ├── config
│ └── data
├── minio4
│ ├── config
│ └── data
├── ssl
│ ├── cacert.pem
│ └── privkey.pem
docker與docker-compose安裝
#安裝docker社區(qū)版
yum install docker-ce
#版本查看
docker version
#docker-compose插件安裝
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#可執(zhí)行權(quán)限
chmod +x /usr/local/bin/docker-compose
#版本查看
docker-compose version
新增nginx配置
nginx.conf創(chuàng)建
vim nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
# include /etc/nginx/conf.d/*.conf;
upstream minio {
server minio1:9000;
server minio2:9000;
server minio3:9000;
server minio4:9000;
}
server {
listen 9000;
listen [::]:9000;
server_name localhost;
#ssl on; ssl配置自行開(kāi)啟
#ssl_certificate /ssl/cacert.pem;
#ssl_certificate_key /ssl/privkey.pem;
# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass http://minio;
}
}
}
編寫(xiě)docker-compose.yml文件
#創(chuàng)建minio數(shù)據(jù)存儲(chǔ)目錄
[root@master minio]# pwd
/app/minio
[root@master minio]# mkdir -p minio1/data minio1/config minio2/data minio2/config minio3/data minio3/config minio4/data minio4/config
增加docker-compose編排文件
vim docker-compose-minio.yaml
version: '3.3'
services:
minio1:
image: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Z
hostname: minio1
container_name: minio1
restart: always
volumes:
- /app/minio/minio1/data:/data
- /app/minio/minio1/config:/root/.minio/ # 映射配置目錄
ports:
- "19001:9000"
- "18001:8000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...4}/data --console-address ":8000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio2:
image: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Z
hostname: minio2
container_name: minio2
restart: always
volumes:
- /app/minio/minio2/data:/data
- /app/minio/minio2/config:/root/.minio/ # 映射配置目錄
ports:
- "19002:9000"
- "18002:8000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...4}/data --console-address ":8000"
healthcheck:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio3:
image: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Z
hostname: minio3
container_name: minio3
restart: always
volumes:
- /app/minio/minio3/data:/data
- /app/minio/minio3/config:/root/.minio/ # 映射配置目錄
ports:
- "19003:9000"
- "18003:8000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...4}/data --console-address ":8000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio4:
image: registry.cn-hangzhou.aliyuncs.com/senfel/minio:RELEASE.2023-07-11T21-29-34Z
hostname: minio4
container_name: minio4
restart: always
volumes:
- /app/minio/minio4/data:/data
- /app/minio/minio4/config:/root/.minio/ # 映射配置目錄
ports:
- "19004:9000"
- "18004:8000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...4}/data --console-address ":8000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
nginx-minio:
image: nginx:1.19.2-alpine
hostname: nginx-minio
restart: always
volumes:
- /app/minio/nginx.conf:/etc/nginx/nginx.conf:ro
- /app/minio/ssl:/ssl
ports:
- "9100:9000"
depends_on:
- minio1
- minio2
- minio3
- minio4
啟動(dòng)MinIO容器并驗(yàn)證
#啟動(dòng)容器
[root@master minio]# docker-compose -f docker-compose-minio.yaml up -d
#查看啟動(dòng)的minio
[root@master minio]# docker ps | grep minio
49f824c8af57 minio/minio “/usr/bin/docker-ent…” 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:18004->8000/tcp, :::18004->8000/tcp, 0.0.0.0:19004->9000/tcp, :::19004->9000/tcp minio4
5bdf40deb4dc minio/minio “/usr/bin/docker-ent…” 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:18002->8000/tcp, :::18002->8000/tcp, 0.0.0.0:19002->9000/tcp, :::19002->9000/tcp minio2
baa7311a31e2 minio/minio “/usr/bin/docker-ent…” 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:18001->8000/tcp, :::18001->8000/tcp, 0.0.0.0:19001->9000/tcp, :::19001->9000/tcp minio1
6ddcbfb7114b minio/minio “/usr/bin/docker-ent…” 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:18003->8000/tcp, :::18003->8000/tcp, 0.0.0.0:19003->9000/tcp, :::19003->9000/tcp minio3
查看啟動(dòng)日志
http://your_hostname:18001~18004/login
分別訪問(wèn) MinIO 的管理界面。跳出登錄頁(yè)面說(shuō)明啟動(dòng)成功
注意事項(xiàng)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-732479.html
對(duì)于MinIO集群,至少需要提供4個(gè)端點(diǎn),并且端點(diǎn)數(shù)量必須為偶數(shù)
不同服務(wù)器上部署節(jié)點(diǎn)時(shí)確保使用的端口號(hào)防火墻已經(jīng)放行文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-732479.html
到了這里,關(guān)于【分布式云儲(chǔ)存】高性能云存儲(chǔ)MinIO簡(jiǎn)介與Docker部署集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!