搭建分布式集群
- 使用docker-compose
中文文档:https://docs.min.io/cn/deploy-minio-on-docker-compose.html
Docker Compose允许定义和运行单主机,多容器Docker应用程序。
使用Compose,您可以使用Compose文件来配置MinIO服务。 然后,使用单个命令,您可以通过你的配置创建并启动所有分布式MinIO实例。 分布式MinIO实例将部署在同一主机上的多个容器中。 这是建立基于分布式MinIO的开发,测试和分期环境的好方法。
环境准备:docker,docker-compose
获取docker镜像
- 可以从docker官方网站获取最新镜像:https://hub.docker.com/r/minio/minio/
- 此处我已经下载好了,获取minio.tar包,导入镜像
docker load -i minio.tar
docker images minio/minio:1.1
获取docker-compose.yaml文件
version: '2.3'
services:
minio1:
image: minio/minio:1.1
volumes:
- /export/data/minio/minio1-1:/data1
- /export/data/minio/minio1-2:/data2
ports:
- "9001:9000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio2:
image: minio/minio:1.1
volumes:
- /export/data/minio/minio2-1:/data1
- /export/data/minio/minio2-2:/data2
ports:
- "9002:9000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio3:
image: minio/minio:1.1
volumes:
- /export/data/minio/minio3-1:/data1
- /export/data/minio/minio3-2:/data2
ports:
- "9003:9000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio4:
image: minio/minio:1.1
volumes:
- /export/data/minio/minio4-1:/data1
- /export/data/minio/minio4-2:/data2
ports:
- "9004:9000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
#volumes:
# data1-1: /export/data/minio/minio1
# data1-2: /export/data/minio/minio1-2
# data2-1: /export/data/minio/minio2
# data2-2: /export/data/minio/minio2-2
# data3-1: /export/data/minio/minio3
# data3-2: /export/data/minio/minio3-2
# data4-1: /export/data/minio/minio4
# data4-2: /export/data/minio/minio4-2
参数的简单解释:
启动
docker-compose up
会发现运行了四个容器
测试
登陆
http://{ip}:9001/minio/login 账号密码为docker-compose中写的
创建桶,上传文件,无问题证明可用
- 二进制分布式部署
此处我们使用了4台机器,每台机器上一块盘
盘的路径为:/export/data
获取包
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
增加执行权限
文件所在目录/export/software/minio
chmod +x minio
依次执行以下命令
export MINIO_ACCESS_KEY=MinIO
export MINIO_SECRET_KEY=zzAdmin2020
/export/software/minio/minio server --compat http://192.168.1.1/export/data/ http://192.168.1.2/export/data/ http://192.168.1.3/export/data/ http://192.168.1.4/export/data > minio_server.log 2>&1 &
四台机器都要执行上述命令
最后日志中出现:
Status: 4 Online, 0 Offline.
部署无问题
登录测试:
默认为9000端口,随意找一个机器登录9000端口创建桶,上传文件无问题证明好使
- nginx代理
我们可以通过nginx实现负载均衡
nginx配置如下:
upstream minio_server {
server 192.168.8.1:9000;
server 192.168.8.2:9000;
server 192.168.8.3:9000;
server 192.168.8.4:9000;
}
server {
listen 80;
server_name minio.com;
location / {
proxy_set_header Host $http_host;
client_body_buffer_size 10M;
client_max_body_size 1024M;
proxy_buffers 1024 4k;
proxy_read_timeout 300;
proxy_pass http://minio_server;
}
}