Docker Compose创建minio集群
Docker Compose创建minio集群
July 18, 2018
Minio是一个简单易用的轻量级对象存储服务,同时它也支持集群环境。使用Minio的docker镜像可以快速地搭建集群环境。
下面是docker-compose.yml文件的示例。分布式的Minio服务至少需要4个节点,所以在docker-compose.yml文件中,至少要配置4个服务。每个服务的command配置必须一样,保证集群环境正常运行。
version: '3'
services:
minio-node1:
image: minio/minio
hostname: minio-node1
ports:
- "29001:9000"
volumes:
- ./node1/data:/data
env_file: ./key.env
command: server http://minio-node1/data http://minio-node2/data http://minio-node3/data http://minio-node4/data
minio-node2:
image: minio/minio
hostname: minio-node2
ports:
- "29002:9000"
volumes:
- ./node2/data:/data
env_file: ./key.env
command: server http://minio-node1/data http://minio-node2/data http://minio-node3/data http://minio-node4/data
minio-node3:
image: minio/minio
hostname: minio-node3
ports:
- "29003:9000"
volumes:
- ./node3/data:/data
env_file: ./key.env
command: server http://minio-node1/data http://minio-node2/data http://minio-node3/data http://minio-node4/data
minio-node4:
image: minio/minio
hostname: minio-node4
ports:
- "29004:9000"
volumes:
- ./node4/data:/data
env_file: ./key.env
command: server http://minio-node1/data http://minio-node2/data http://minio-node3/data http://minio-node4/data
上面的配置中env_file指定的加载环境变量文件key.env,这里是为了设置登录minio的用户名密码。下面的key.env示例:
MINIO_ACCESS_KEY=testkey
MINIO_SECRET_KEY=testpassword
通过上述的docker-compose.yml文件,就可以启动一个minio的集群环境。可以做一些测试,通过浏览器访问 http://localhost:29001 ,新建bucket并上传一个文件,然后在 http://localhost:29002 上面也可以正常访问。同时,可以特地停掉或者启用其中一些服务,用来测试minio集群环境的高可用性。
如果其中某一个节点服务不可用,这就意味着无法向该节点发起请求来操作对象。比如上述的节点1挂掉, 就无法通过浏览器来访问 http://localhost:29001。 从高可用和负载均衡角度来讲,必须通过负载均衡器来转发请求到各个节点,而不是直接访问某个节点的服务。可以在nginx上做个简单的配置来实现。
下面是nginx配置的示例。配置完重启nginx服务后,就可以使用 http://localhost:29000 来访问和操作对象
upstream minio_servers {
server 127.0.0.1:29001;
server 127.0.0.1:29002;
server 127.0.0.1:29003;
server 127.0.0.1:29004;
}
server {
listen 29000;
server_name localhost;
location / {
proxy_set_header Host $http_host;
proxy_pass http://minio_servers;
}
}
最后更新于