Docker部署分布式MinIO存储集群 准备3个节点,每个节点创建4个挂载点,由于集群模式下不能使用根磁盘,这里使用docker卷作为挂载点。 3节点的集群,故障一个节点时不影响对集群的读写操作。
开始安装 所有节点安装docker和docker-compose
1 curl https://www.putianhui.cn/package/script/install_docker.sh
创建docker-compose和data挂载目录
1 mkdir -p /data/minio/{minio-dockerfile,data01,data02,data03,data04}
所有节点配置主机名解析
1 2 3 4 5 cat >> /etc/hosts << EOF 192.168.99.8 minio-1 192.168.99.9 minio-2 192.168.99.10 minio-3 EOF
配置时间同步,关闭防火墙和selinux。
部署minio集群,3个节点每个节点挂载4个目录
minio-1节点执行
1 2 3 4 5 6 7 8 9 10 11 12 13 docker run -d --name minio01 \ --restart=always --net=host \ -e "MINIO_ROOT_USER=admin" \ -e "MINIO_ROOT_PASSWORD=admin123" \ -v /etc/localtime:/etc/localtime \ -v /data/minio/data01:/data1 \ -v /data/minio/data02:/data2 \ -v /data/minio/data03:/data3 \ -v /data/minio/data04:/data4 \ minio/minio:RELEASE.2021-11-24T23-19-33Z.fips server \ --address "192.168.99.8:49000" \ --console-address ":49001" \ http://minio-{1...3}/data{1...4}
minio-2节点执行
1 2 3 4 5 6 7 8 9 10 11 12 13 docker run -d --name minio02 \ --restart=always --net=host \ -e MINIO_ROOT_USER=admin \ -e MINIO_ROOT_PASSWORD=admin123 \ -v /etc/localtime:/etc/localtime \ -v /data/minio/data01:/data1 \ -v /data/minio/data02:/data2 \ -v /data/minio/data03:/data3 \ -v /data/minio/data04:/data4 \ minio/minio:RELEASE.2021-11-24T23-19-33Z.fips server \ --address "192.168.99.9:49000" \ --console-address ":49001" \ http://minio-{1...3}/data{1...4}
minio-3节点执行
1 2 3 4 5 6 7 8 9 10 11 12 13 docker run -d --name minio03 \ --restart=always --net=host \ -e MINIO_ROOT_USER=admin \ -e MINIO_ROOT_PASSWORD=admin123 \ -v /etc/localtime:/etc/localtime \ -v /data/minio/data01:/data1 \ -v /data/minio/data02:/data2 \ -v /data/minio/data03:/data3 \ -v /data/minio/data04:/data4 \ minio/minio:RELEASE.2021-11-24T23-19-33Z.fips server \ --address "192.168.99.10:49000" \ --console-address ":49001" \ http://minio-{1...3}/data{1...4}
说明:docker部署集群模式时必须指定–net=host参数,使用主机网络,使用端口映射无法创建集群。
查看容器运行状态
1 2 [root@survey-cdh01 /] d89139771f1a minio/minio:RELEASE.2021-11-24T23-19-33Z.fips "/usr/bin/docker-ent…" 4 minutes ago Up 4 minutes minio01
客户端查看minio状态,3个节点及每个节点上的Drivers全部在线:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 $ mc config host add minio http://192.168.99.8:49000 admin admin123 $ mc admin info minio ● minio-1:49000 Uptime: 14 minutes Version: 2021-11-24T23:19:33Z Network: 3/3 OK Drives: 4/4 OK ● minio-2:49000 Uptime: 12 minutes Version: 2021-11-24T23:19:33Z Network: 3/3 OK Drives: 4/4 OK ● minio-3:49000 Uptime: 8 minutes Version: 2021-11-24T23:19:33Z Network: 3/3 OK Drives: 4/4 OK 53 MiB Used, 1 Bucket, 4 Objects 12 drives online, 0 drives offline
使用nginx配置minio和minio-console负载均衡器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 upstream minio { server minio-1:49000; server minio-2:49000; server minio-3:49000; } upstream console { ip_hash; server minio-1:49001; server minio-2:49001; server minio-3:49001; } server { listen 80; server_name minio.putianhui.cn; ignore_invalid_headers off; client_max_body_size 0; 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; proxy_http_version 1.1; proxy_set_header Connection "" ; chunked_transfer_encoding off; proxy_pass http://minio; } } server { listen 80; server_name minio-console.putianhui.cn; ignore_invalid_headers off; client_max_body_size 0; 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_set_header X-NginX-Proxy true ; real_ip_header X-Real-IP; proxy_connect_timeout 300; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection "upgrade" ; chunked_transfer_encoding off; proxy_pass http://console; } }
浏览器访问http://minio-console.putianhui.cn
到console页面,账号密码为运行docker时指定的admin/admin123