1.背景
在本地搭建一个稳定的文件服务器,采用集群的方式建设,实现本地化文件存储的安全性和稳定性,此方案可借鉴使用至生产环境。
2.搭建
2.1 地址分配
本次演示2台机器做minio集群,列表地址为:
minio1和minio2主机上分别安装好docker和docker-compose,此处不再做安装演示。
2.2 配置集群
在两台主机上配置本地域名解析,执行以下命令。确保两台主机能够相互ping通。
cat >> /etc/hosts << EOF
10.0.0.204 minio1
10.0.0.205 minio2
EOF创建一个docker-compose.yml文件,放置于项目目录下,比如我把项目目录放置于/opt/minio_group下,执行以下命令:
# 创建项目文件夹
mkdir -p /opt/minio_group
# 进入项目目录,创建docker-compose.yml文件
cd /opt/minio_group
touch docker-compose.yml将以下内容填入docker-compose.yml文件中,在minio1机器上执行:
version: "3"
services:
minio1:
image: minio/minio:RELEASE.2021-06-07T21-40-51Z
container_name: minio-node1
restart: always
extra_hosts:
- "minio1:10.0.0.204"
- "minio2:10.0.0.205"
volumes:
- ./data1:/data1
- ./data2:/data2
ports:
- "9000:9000" # 端口与minio2区分
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...2}/data{1...2}
network_mode: host
healthcheck:
test: ["CMD", "curl", "-f", "http://0.0.0.0:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3执行项目启动:
docker-compose up -d
在minio2机器上执行:
version: "3"
services:
minio2:
image: minio/minio:RELEASE.2021-06-07T21-40-51Z
container_name: minio-node2
restart: always
extra_hosts:
- "minio1:10.0.0.204"
- "minio2:10.0.0.205"
volumes:
- ./data1:/data1
- ./data2:/data2
ports:
- "9000:9000" # 端口与minio2区分
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server http://minio{1...2}/data{1...2}
network_mode: host
healthcheck:
test: ["CMD", "curl", "-f", "http://0.0.0.0:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
注意network_mode: host需要加上,否则可能出现使用容器内部IP导致集群不上线。完成后执行项目启动:
docker-compose up -d
开启后,需要保证防火墙开启状态,且允许转发,且开放9000端口,所有主机执行命令如下:
# 开启转发
firewall-cmd --add-masquerade --permanent
firewall-cmd --add-masquerade
firewall-cmd --reload
# 放行minio 端口
firewall-cmd --add-port=9000/tcp --permanent
firewall-cmd --reload
3.测试集群
使用web登录至minio1平台上,可以看到系统反馈了一个提示:
Server not initialized, please try again则需要确定minio使用的集群地址,是否与实际地址一致(比如容器网络是否用的桥接,而不是host模型)。

处理后,重新登录,系统正常。
往minio-node1平台上创建桶和文件,然后在minio-node2上浏览,发现数据已经正常同步过去了。 

最后
双节点搭建集群,仅建议在测试或小集群上使用,其存储效率可类比于RAID1,每存储一个文件,将存储2份数据,即可容错一个节点故障。
建议在生产环境下,使用4节点以保证容错效果。
评论区