2. Sébastien Blaisot
@SebBlaisot
@work
Responsable d’ingénieurs légo : Sysadmin, devops, SRE
Team Lead Infra @ Cozycloud – https://cozy.io
A universal drive,
connected to
devices and
applications
Digital services
at home
Automated
data collections
4. Qu’est-ce que c’est
Serveur de stockage objet
Open-source : https://github.com/minio/minio
Écrit en go
Haute performance
Distribué
Designé pour être utilisé
à grande échelle
en environnement virtualisé (VM, docker, …)
5. Fonctionnalités
API compatible Amazon S3*
Protection des données
Bitrot détection
Erasure coding (par défaut k=m=n/2)
Haute dispo (cluster) jusque 16 serveurs
Read quorum N/2
Write quorum N/2+1
Chiffrement coté client ou serveur
Nombreux backends de stockage
Disque / FS
Externe (NAS, GCS, Azure, DC/OS) - Gateway S3
19. *Amazon S3 compatibility restrictions
List of Amazon S3 Bucket API's not supported on Minio
BucketACL (Use bucket policies instead)
BucketCORS (CORS enabled by default on all buckets for all HTTP verbs)
BucketLifecycle (Not required for Minio erasure coded backend)
BucketReplication (Use mc mirror instead)
BucketVersions, BucketVersioning (Use s3git)
BucketWebsite (Use caddy or nginx)
BucketAnalytics, BucketMetrics, BucketLogging (Use bucket notification APIs)
BucketRequestPayment
BucketTagging
List of Amazon S3 Object API's not supported on Minio
ObjectACL (Use bucket policies instead)
ObjectTorrent
ObjectVersions
20. Quelques limitations – 1/2
Pas de multi tenant. Si besoin de plusieurs tenants (clients), déployer
plusieurs minio.
Le chiffrement coté serveur doit être demandé explicitement par le
client qui fournit les clés de chiffrement
Topologie figée, pas de rebalance
Quand c’est plein, dommage…
« Minio is different by design »
21. Quelques limitations – 2/2
Pas d’auto-réparation
Si un serveur est « absent » lors d’un mouvement d’objet, il faut
manuellement lancer une réparation sur l’objet quand le serveur revient
Recursive healing possible mais très lent
Bug au remplacement d’un serveur : corrigé
Rolling upgrades problématiques
« Rolling upgrade is not possible since minio requires under distributed
setup all servers to be of same version.”
Un commit recent pour améliorer la situation : semantic versioning
Mais toujours pas ça… le cluster est splitté en deux, avec 2 versions en
parallèle
23. En résumé
Parfait pour du prototypage rapide / du dev
Une bonne solution pour des environnements virtuels orchestrés
(docker / kubernetes)
Des vrais risques d’exploitabilité à long terme
Pas adapté pour du massive-scale on-prem