minio的集群搭建。
1.通过docker-compose的方式搭建集群。
官方中文文档:https://docs.min.io/cn/deploy-minio-on-docker-compose.html
version: '3.0'
services:
minio1:
image: minio/minio
volumes:
- ./data1-1:/data1
- ./data1-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
volumes:
- ./data2-1:/data1
- ./data2-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
volumes:
- ./data3-1:/data1
- ./data3-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
volumes:
- ./data4-1:/data1
- ./data4-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
这种是在单机上跑,我查了很久资料,也尝试了很多次。确实只能单机跑。即时我在另一台机子暴露端口配置一样,run的时候也把加进去了,都不得行。会报一个错。
登陆进去就会弹这个。
然后看日志,我这里当时配置的是8089端口跟上面端口不一样,但是报错是这个。
无论我怎么配置,始终是报这个错。内网之间也是能通的,同样报错。
所以也就无法初始化,无法使用。由此我得出结论。docker-compose部署的这种方式,仅限于单机多硬盘的模式。
可以用docker跑多个容器起来,每个容器挂载不同的硬盘。对外只开一个nginx就ok了。
但我的业务场景是多台机器部署。
所以最终我还是没有使用docker-compose来部署。当然如果你只有一台机器部署的话 上面的方式就很适合。如果只有一块硬盘就留一个就好了。
2. 不用docker-compose的方式部署集群。
1.现在有机器 192.168.0.238 和192.168.0.239 两台机器。我们分别在每台机器上创建目录 /home/minio
2.下载minio官方下载地址 https://dl.min.io/server/minio/release/linux-amd64/minio
这里下载很慢80kb/s ,,还是有点大。所以我用的这个工具下,多线程下载还是比较快。
3.下载完后上传到 两台机器的 /home/minio 目录里面,然后在两台机器的这个目录里面创建data1 和 data2 用来存放数据,当然如果你有4台机器 也可以每个机器创建1个目录来放。
我这里创建2个目录是因为minio集群最少要4个server 所以我创建2个目录模拟。
然后编写如下shell。run.sh
#!/bin/bash
export MINIO_ACCESS_KEY=admin
export MINIO_SECRET_KEY=admin123
./minio server --config-dir ./ \
--address "0.0.0.0:8089" \
http://192.168.0.238:8089/home/minio/data1 http://192.168.0.238:8089/home/minio/data2 \
http://192.168.0.239:8089/home/minio/data1 http://192.168.0.239:8089/home/minio/data2 > minio_server.log
两台机器都是一样一样的。然后运行起来即可。
像这样,两台机器的minio目录都会有这个日志。打开是这样就对了。
然后分别登陆上去,创建一个文件夹,上传一个文件,去另一个地址进去看是不是同样也生成了对应的文件夹和文件。
配置好nginx,就完成了。
这里还还可以做成开机自启。
vim /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
[Service]
WorkingDirectory=/home/minio/
ExecStart=/home/minio/run.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
修改权限
chmod +x /usr/lib/systemd/system/minio.service && chmod +x /home/minio/minio && chmod +x/home/minio/run.sh
systemctl daemon-reload
systemctl enable minio
systemctl start minio
启动就好了。