🌐 Triển Khai MinIO Federation
📋 Tổng Quan
MinIO Federation cho phép tổng hợp dung lượng từ nhiều cụm MinIO độc lập thành một hệ thống lưu trữ thống nhất. Ví dụ:
- Cụm HN: 500GB
- Cụm HCM: 500GB
- Cụm DN: 500GB => Tổng dung lượng khả dụng: 1.5TB
🏗️ Kiến Trúc Hệ Thống
💻 Yêu Cầu Hệ Thống
Phần Cứng (Cho Mỗi Node)
Thành phần | Tối thiểu | Khuyến nghị |
---|---|---|
CPU | 2 cores | 4+ cores |
RAM | 4GB | 8GB+ |
Disk | 100GB SSD | 500GB+ SSD |
Network | 1Gbps | 10Gbps |
Phần Mềm
# Kiểm tra phiên bản OS
lsb_release -a
# Output cần >= Ubuntu 20.04
# Kiểm tra Docker version
docker --version
# Output cần >= 20.10.x
# Kiểm tra Docker Compose version
docker-compose --version
# Output cần >= 2.x
🚀 Triển Khai
1. Chuẩn Bị Môi Trường
Thực hiện trên tất cả các node:
# Cài đặt dependencies
sudo apt update
sudo apt install -y docker.io docker-compose
# Tạo thư mục lưu trữ
sudo mkdir -p /mnt/data/minio /mnt/data/config
sudo chown -R 1000:1000 /mnt/data/
2. Triển Khai MinIO Server
Tạo file docker-compose.yml
trên mỗi node:
version: "3.7"
services:
minio:
image: quay.io/minio/minio:latest
container_name: minio
ports:
- "9000:9000" # API port
- "9001:9001" # Console port
environment:
MINIO_ROOT_USER: "admin"
MINIO_ROOT_PASSWORD: "StrongPassword123" # Thay đổi mật khẩu này
MINIO_SITE_NAME: "${SITE_NAME:-minio-site-1}" # Unique cho mỗi site
MINIO_SITE_REGION: "${SITE_REGION:-hanoi}" # Region của site
volumes:
- /mnt/data/minio:/data
- /mnt/data/config:/root/.minio
command: server /data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
restart: unless-stopped
3. Khởi Động Dịch Vụ
# Khởi động MinIO
docker-compose up -d
# Kiểm tra logs
docker-compose logs -f
# Kiểm tra container status
docker ps
4. Cấu Hình Federation
a. Trên Federation Console (192.168.1.100)
- Truy cập console:
http://192.168.1.100:9001
- Đăng nhập với thông tin:
- Username: admin
- Password: StrongPassword123
b. Thêm Các Cụm Vào Federation
Trong Console, điều hướng đến:
- Settings > Federation
- Click "Add Site"
- Nhập thông tin cho từng cụm:
# Cluster Hà Nội
Name: minio-hanoi
Endpoint: http://192.168.1.11:9000
Access Key: admin
Secret Key: StrongPassword123
# Cluster HCM
Name: minio-hcm
Endpoint: http://192.168.2.11:9000
Access Key: admin
Secret Key: StrongPassword123
# Cluster Đà Nẵng
Name: minio-danang
Endpoint: http://192.168.3.11:9000
Access Key: admin
Secret Key: StrongPassword123
5. Cấu Hình Storage Pool
a. Tạo Storage Pool Configuration
Tạo file cấu hình pool /etc/minio/federation/storage-pool.json
:
{
"version": "1",
"pools": [
{
"name": "large-storage-pool",
"servers": [
"minio-hanoi",
"minio-hcm",
"minio-danang"
],
"capacity": "1.5TB",
"quota": {
"enabled": true,
"max_size": "1.5TB"
}
}
]
}
b. Áp Dụng Cấu Hình Pool
# Áp dụng cấu hình pool
mc admin config set minio-fed federation storage_pool=/etc/minio/federation/storage-pool.json
# Restart service để áp dụng thay đổi
mc admin service restart minio-fed
🚀 Sử Dụng Storage Pool
1. Tạo và Sử Dụng Bucket
# Tạo bucket mới với storage pool
mc mb --pool large-storage-pool minio-fed/large-bucket
# Upload file - MinIO sẽ tự động phân bố dữ liệu
mc cp large-file.zip minio-fed/large-bucket/
# Upload nhiều file
mc cp --recursive media-folder/ minio-fed/large-bucket/
tip
Với cấu hình này:
- Tổng dung lượng khả dụng là 1.5TB
- MinIO tự động phân bố dữ liệu giữa các cụm
- Không cần quan tâm file được lưu ở cụm nào
- Hỗ trợ tự động cân bằng tải
2. Kiểm Tra Sử Dụng
# Xem thông tin bucket
mc ls minio-fed/large-bucket
# Kiểm tra dung lượng đã sử dụng
mc du minio-fed/large-bucket
# Xem phân bố dữ liệu
mc admin info minio-fed --json | jq '.info.backend.usage'
📊 Monitoring Dung Lượng
1. Theo Dõi Sử Dụng
# Kiểm tra tổng dung lượng đã sử dụng
mc admin info minio-fed
# Kiểm tra chi tiết từng cụm
mc admin cluster info minio-fed
2. Cảnh Báo Dung Lượng
# Thiết lập cảnh báo khi đạt 80% dung lượng
mc admin policy create minio-fed storage-alert \
--threshold-percent=80 \
--threshold-action="webhook,slack" \
--webhook-endpoint="http://alert.example.com/storage"