7.7 KiB
7.7 KiB
MinIO Installation Recommendation for Calypso Appliance
Executive Summary
Rekomendasi: Native Installation ✅
Untuk Calypso appliance, native installation MinIO lebih sesuai daripada Docker karena:
- Konsistensi dengan komponen lain (semua native)
- Performa lebih baik (tanpa overhead container)
- Integrasi lebih mudah dengan ZFS dan systemd
- Sesuai dengan filosofi appliance (minimal dependencies)
Analisis Arsitektur Calypso
Komponen yang Sudah Terinstall (Semuanya Native)
| Komponen | Installation Method | Service Management |
|---|---|---|
| ZFS | Native (kernel modules) | systemd (zfs-zed.service) |
| SCST | Native (kernel modules) | systemd (scst.service) |
| NFS | Native (nfs-kernel-server) | systemd (nfs-server.service) |
| SMB | Native (Samba) | systemd (smbd.service, nmbd.service) |
| ClamAV | Native (clamav-daemon) | systemd (clamav-daemon.service) |
| MHVTL | Native (kernel modules) | systemd (mhvtl.target) |
| Bacula | Native (bacula packages) | systemd (bacula-*.service) |
| PostgreSQL | Native (postgresql-16) | systemd (postgresql.service) |
| Calypso API | Native (Go binary) | systemd (calypso-api.service) |
Kesimpulan: Semua komponen menggunakan native installation dan dikelola melalui systemd.
Perbandingan: Native vs Docker
Native Installation ✅ RECOMMENDED
Pros:
- ✅ Konsistensi: Semua komponen lain native, MinIO juga native
- ✅ Performa: Tidak ada overhead container, akses langsung ke ZFS
- ✅ Integrasi: Lebih mudah integrasi dengan ZFS datasets sebagai storage backend
- ✅ Monitoring: Logs langsung ke journald, metrics mudah diakses
- ✅ Resource: Lebih efisien (tidak perlu Docker daemon)
- ✅ Security: Sesuai dengan security model appliance (systemd security hardening)
- ✅ Management: Dikelola melalui systemd seperti komponen lain
- ✅ Dependencies: MinIO binary standalone, tidak perlu Docker runtime
Cons:
- ⚠️ Update: Perlu download binary baru dan restart service
- ⚠️ Dependencies: Perlu manage MinIO binary sendiri
Mitigation:
- Update bisa diotomasi dengan script
- MinIO binary bisa disimpan di
/opt/calypso/bin/seperti komponen lain
Docker Installation ❌ NOT RECOMMENDED
Pros:
- ✅ Isolasi yang lebih baik
- ✅ Update lebih mudah (pull image baru)
- ✅ Tidak perlu manage dependencies
Cons:
- ❌ Inkonsistensi: Semua komponen lain native, Docker akan jadi exception
- ❌ Overhead: Docker daemon memakan resource (~50-100MB RAM)
- ❌ Kompleksitas: Tambahan layer management (Docker + systemd)
- ❌ Integrasi: Lebih sulit integrasi dengan ZFS (perlu volume mapping)
- ❌ Performance: Overhead container, terutama untuk I/O intensive workload
- ❌ Security: Tambahan attack surface (Docker daemon)
- ❌ Monitoring: Logs perlu di-forward dari container ke journald
- ❌ Dependencies: Perlu install Docker (tidak sesuai filosofi minimal dependencies)
Rekomendasi Implementasi
Native Installation Setup
1. Binary Location
/opt/calypso/bin/minio
2. Configuration Location
/opt/calypso/conf/minio/
├── config.json
└── minio.env
3. Data Location (ZFS Dataset)
/opt/calypso/data/pool/<pool-name>/object/
4. Systemd Service
[Unit]
Description=MinIO Object Storage
After=network.target zfs.target
Wants=zfs.target
[Service]
Type=simple
User=calypso
Group=calypso
WorkingDirectory=/opt/calypso
ExecStart=/opt/calypso/bin/minio server /opt/calypso/data/pool/%i/object --config-dir /opt/calypso/conf/minio
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=minio
# Security
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/calypso/data /opt/calypso/conf/minio /var/log/calypso
# Resource limits
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
5. Integration dengan ZFS
- MinIO storage backend menggunakan ZFS dataset
- Dataset dibuat di pool yang sudah ada
- Mount point:
/opt/calypso/data/pool/<pool-name>/object/ - Manfaatkan ZFS features: compression, snapshots, replication
Arsitektur yang Disarankan
┌─────────────────────────────────────┐
│ Calypso Appliance │
├─────────────────────────────────────┤
│ │
│ ┌──────────────────────────────┐ │
│ │ Calypso API (Go) │ │
│ │ Port: 8080 │ │
│ └───────────┬──────────────────┘ │
│ │ │
│ ┌───────────▼──────────────────┐ │
│ │ MinIO (Native Binary) │ │
│ │ Port: 9000, 9001 │ │
│ │ Storage: ZFS Dataset │ │
│ └───────────┬──────────────────┘ │
│ │ │
│ ┌───────────▼──────────────────┐ │
│ │ ZFS Pool │ │
│ │ Dataset: object/ │ │
│ └──────────────────────────────┘ │
│ │
└─────────────────────────────────────┘
Installation Steps (Native)
1. Download MinIO Binary
# Download latest MinIO binary
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /opt/calypso/bin/
sudo chown calypso:calypso /opt/calypso/bin/minio
2. Create ZFS Dataset for Object Storage
# Create dataset in existing pool
sudo zfs create <pool-name>/object
sudo zfs set mountpoint=/opt/calypso/data/pool/<pool-name>/object <pool-name>/object
sudo chown -R calypso:calypso /opt/calypso/data/pool/<pool-name>/object
3. Create Configuration Directory
sudo mkdir -p /opt/calypso/conf/minio
sudo chown calypso:calypso /opt/calypso/conf/minio
4. Create Systemd Service
sudo cp /src/calypso/deploy/systemd/minio.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable minio.service
sudo systemctl start minio.service
5. Integration dengan Calypso API
- Backend API mengelola MinIO melalui MinIO Admin API atau Go SDK
- Configuration disimpan di database Calypso
- UI untuk manage buckets, policies, users
Kesimpulan
Native Installation adalah pilihan terbaik untuk Calypso appliance karena:
- ✅ Konsistensi: Semua komponen lain native
- ✅ Performa: Optimal untuk I/O intensive workload
- ✅ Integrasi: Seamless dengan ZFS dan systemd
- ✅ Filosofi: Sesuai dengan "appliance-first" dan "minimal dependencies"
- ✅ Management: Unified management melalui systemd
- ✅ Security: Sesuai dengan security model appliance
Docker Installation tidak direkomendasikan karena:
- ❌ Menambah kompleksitas tanpa benefit yang signifikan
- ❌ Inkonsisten dengan arsitektur yang ada
- ❌ Overhead yang tidak perlu untuk appliance
Next Steps
- ✅ Implementasi native MinIO installation
- ✅ Create systemd service file
- ✅ Integrasi dengan ZFS dataset
- ✅ Backend API integration
- ✅ Frontend UI untuk MinIO management
Date
2026-01-09