https://github.com/vutrandn94/minio-multi-node-multi-drive
Deploy MinIO: Multi-Node Multi-Drive (using docker, docker-compose)
https://github.com/vutrandn94/minio-multi-node-multi-drive
docker docker-compose minio
Last synced: about 2 months ago
JSON representation
Deploy MinIO: Multi-Node Multi-Drive (using docker, docker-compose)
- Host: GitHub
- URL: https://github.com/vutrandn94/minio-multi-node-multi-drive
- Owner: vutrandn94
- Created: 2025-01-08T04:15:07.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-06T08:47:47.000Z (over 1 year ago)
- Last Synced: 2025-02-06T09:37:23.338Z (over 1 year ago)
- Topics: docker, docker-compose, minio
- Homepage:
- Size: 5.86 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MinIO multi-node multi-drive
Deploy MinIO: Multi-Node Multi-Drive
## Requirement
- Format disk XFS for high performance
- Minimum: 4 nodes (4 servers), 8 drive (2 drive per server) <=> Default server failures tolerance: 2 server failures in total (If reached 2 server failures, MinIO can switch to read-only mode or stop working to ensure data security)
- Deployment environment: Docker
- Deployment tools: Docker Compose
## Information about the servers deploying the lab
| Hostname | IP Address |
| :--- | :--- |
| minio01 | 172.31.40.231 |
| minio02 | 172.31.44.99 |
| minio03 | 172.31.36.91 |
| minio04 | 172.31.40.139 |
## Deploy
**Default minio admin user & password (Change if necessary)**
| Default Root User | Default Root Password |
| :--- | :--- |
| root | Enjoyd@y |
**Default container Timezone (Modify to appropriate timezone)**
| Default container Timezone |
| :--- |
| Asia/Ho_Chi_Minh |
**Default docker volume mount path**
| Default volume mount path |
| :--- |
| /mnt/data-0 |
| /mnt/data-1 |
**Default MinIO docker image**
| Default MinIO docker image |
| :--- |
| quay.io/minio/minio:RELEASE.2025-01-20T14-49-07Z |
**Setting hosts file (Set on all nodes)**
```
## MINIO
172.31.40.231 minio01
172.31.44.99 minio02
172.31.36.91 minio03
172.31.40.139 minio04
```
**docker-compose.yml in minio1 (Config in node "minio1")**
```
services:
minio01:
image: 'quay.io/minio/minio:RELEASE.2025-01-20T14-49-07Z'
restart: always
environment:
MINIO_ROOT_USER: "root"
MINIO_ROOT_PASSWORD: "Enjoyd@y"
TZ: "Asia/Ho_Chi_Minh"
command: server --console-address ":9001" http://minio0{1...4}/mnt/data-{0...1}
ports:
- 9000:9000
- 9001:9001
volumes:
- /mnt/data-0:/mnt/data-0
- /mnt/data-1:/mnt/data-1
networks:
- minio-net
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 1m
timeout: 10s
retries: 3
start_period: 1m
networks:
minio-net:
driver: bridge
```
**docker-compose.yml in minio2 (Config in node "minio2")**
```
services:
minio02:
image: 'quay.io/minio/minio:RELEASE.2025-01-20T14-49-07Z'
restart: always
environment:
MINIO_ROOT_USER: "root"
MINIO_ROOT_PASSWORD: "Enjoyd@y"
TZ: "Asia/Ho_Chi_Minh"
command: server --console-address ":9001" http://minio0{1...4}/mnt/data-{0...1}
ports:
- 9000:9000
- 9001:9001
volumes:
- /mnt/data-0:/mnt/data-0
- /mnt/data-1:/mnt/data-1
networks:
- minio-net
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 1m
timeout: 10s
retries: 3
start_period: 1m
networks:
minio-net:
driver: bridge
```
**docker-compose.yml in minio3 (Config in node "minio3")**
```
services:
minio03:
image: 'quay.io/minio/minio:RELEASE.2025-01-20T14-49-07Z'
restart: always
environment:
MINIO_ROOT_USER: "root"
MINIO_ROOT_PASSWORD: "Enjoyd@y"
TZ: "Asia/Ho_Chi_Minh"
command: server --console-address ":9001" http://minio0{1...4}/mnt/data-{0...1}
ports:
- 9000:9000
- 9001:9001
volumes:
- /mnt/data-0:/mnt/data-0
- /mnt/data-1:/mnt/data-1
networks:
- minio-net
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 1m
timeout: 10s
retries: 3
start_period: 1m
networks:
minio-net:
driver: bridge
```
**docker-compose.yml in minio4 (Config in node "minio4")**
```
services:
minio04:
image: 'quay.io/minio/minio:RELEASE.2025-01-20T14-49-07Z'
restart: always
environment:
MINIO_ROOT_USER: "root"
MINIO_ROOT_PASSWORD: "Enjoyd@y"
TZ: "Asia/Ho_Chi_Minh"
command: server --console-address ":9001" http://minio0{1...4}/mnt/data-{0...1}
ports:
- 9000:9000
- 9001:9001
volumes:
- /mnt/data-0:/mnt/data-0
- /mnt/data-1:/mnt/data-1
networks:
- minio-net
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 1m
timeout: 10s
retries: 3
start_period: 1m
networks:
minio-net:
driver: bridge
```
**Deploy service (Execute on all nodes)**
```
# docker-compose up -d
```
**Access MinioUI http://:9001 or config Nginx / HAProxy to loadbalance for MinIO nodes**
>[!NOTE]
> Reference: https://github.com/vutrandn94/nginx-proxy-minio-cluster