SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Minio
RETOUR D’EXPÉRIENCE
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
La promesse
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, …)
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
Architectures
1. standalone
Architectures
2. multiple drives – erasure coding
Architectures
3. distributed – erasure coding
Architectures
4. Orchestration
L’enthousiasme
Installation
$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
$ chmod +x minio
# That’s it !
Lancer en standalone
$ ./minio server /home/minio/data
Endpoint: http://10.0.2.15:9000 http://127.0.0.1:9000
AccessKey: FN95TCN890ENV2REGU71
SecretKey: jVWpecwAeqnzk4tFM8CfOUJ9iJKxlgGtADOE+GOp
Browser Access:
http://10.0.2.15:9000 http://127.0.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://10.0.2.15:9000 FN95TCN890ENV2REGU71
jVWpecwAeqnzk4tFM8CfOUJ9iJKxlgGtADOE+GOp
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
.NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide
Configurer le client AWS et
lister les buckets
$ aws configure
AWS Access Key ID [None]: FN95TCN890ENV2REGU71
AWS Secret Access Key [None]:
jVWpecwAeqnzk4tFM8CfOUJ9iJKxlgGtADOE+GOp
Default region name [None]:
Default output format [None]:
$ aws --endpoint-url http://localhost:9000 s3 ls
2018-12-03 15:52:30 mybucket
2018-12-03 15:55:07 testbucket
Créer un bucket
uploader un fichier
$ aws --endpoint-url http://localhost:9000 s3 mb s3://otherbucket
make_bucket: otherbucket
$ aws --endpoint-url http://localhost:9000 s3 ls
2018-12-03 15:52:30 mybucket
2018-12-03 15:56:46 otherbucket
2018-12-03 15:55:07 testbucket
$ aws --endpoint-url http://localhost:9000 s3 cp test.txt
s3://mybucket
upload: ./test.txt to s3://mybucket/test.txt
$ aws --endpoint-url http://localhost:9000 s3 ls s3://mybucket
2018-12-03 15:57:22 11 test.txt
Supprimer un bucket
minio@xubuntu18:~$ aws --endpoint-url http://localhost:9000 s3
rb s3://mybucket --force
delete: s3://mybucket/test.txt
remove_bucket: mybucket
Cluster
$ export MINIO_ACCESS_KEY=FN95TCN890ENV2REGU71
$ export MINIO_SECRET_KEY=jVWpecwAeqnzk4tFM8CfOUJ9iJKxlgGtADOE+GO
$ ./minio server --address 127.0.0.1:9001 
http://127.0.0.1:9001/home/minio/data1 
http://127.0.0.1:9002/home/minio/data2 
http://127.0.0.1:9003/home/minio/data3 
http://127.0.0.1:9004/home/minio/data4
La désillusion
*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
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 »
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
Et donc
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

Contenu connexe

Tendances

Practical Elasticsearch - real world use cases
Practical Elasticsearch - real world use casesPractical Elasticsearch - real world use cases
Practical Elasticsearch - real world use casesItamar
 
ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱confluent
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hubVenkat Malladi
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud WorkshopYongSung Yoon
 
Building robust CDC pipeline with Apache Hudi and Debezium
Building robust CDC pipeline with Apache Hudi and DebeziumBuilding robust CDC pipeline with Apache Hudi and Debezium
Building robust CDC pipeline with Apache Hudi and DebeziumTathastu.ai
 
Keeping Up with the ELK Stack: Elasticsearch, Kibana, Beats, and Logstash
Keeping Up with the ELK Stack: Elasticsearch, Kibana, Beats, and LogstashKeeping Up with the ELK Stack: Elasticsearch, Kibana, Beats, and Logstash
Keeping Up with the ELK Stack: Elasticsearch, Kibana, Beats, and LogstashAmazon Web Services
 
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...confluent
 
Credential store using HashiCorp Vault
Credential store using HashiCorp VaultCredential store using HashiCorp Vault
Credential store using HashiCorp VaultMayank Patel
 
Kubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoKubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoOpsta
 
Kubernetes architecture
Kubernetes architectureKubernetes architecture
Kubernetes architectureJanakiram MSV
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBMongoDB
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsBo-Yi Wu
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusSimone Bordet
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHubNishan Bose
 
Hashicorp Vault: Open Source Secrets Management at #OPEN18
Hashicorp Vault: Open Source Secrets Management at #OPEN18Hashicorp Vault: Open Source Secrets Management at #OPEN18
Hashicorp Vault: Open Source Secrets Management at #OPEN18Kangaroot
 
Containers and workload security an overview
Containers and workload security an overview Containers and workload security an overview
Containers and workload security an overview Krishna-Kumar
 

Tendances (20)

Practical Elasticsearch - real world use cases
Practical Elasticsearch - real world use casesPractical Elasticsearch - real world use cases
Practical Elasticsearch - real world use cases
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
github-actions.pdf
github-actions.pdfgithub-actions.pdf
github-actions.pdf
 
ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
Datastores
DatastoresDatastores
Datastores
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud Workshop
 
Building robust CDC pipeline with Apache Hudi and Debezium
Building robust CDC pipeline with Apache Hudi and DebeziumBuilding robust CDC pipeline with Apache Hudi and Debezium
Building robust CDC pipeline with Apache Hudi and Debezium
 
Keeping Up with the ELK Stack: Elasticsearch, Kibana, Beats, and Logstash
Keeping Up with the ELK Stack: Elasticsearch, Kibana, Beats, and LogstashKeeping Up with the ELK Stack: Elasticsearch, Kibana, Beats, and Logstash
Keeping Up with the ELK Stack: Elasticsearch, Kibana, Beats, and Logstash
 
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
 
Credential store using HashiCorp Vault
Credential store using HashiCorp VaultCredential store using HashiCorp Vault
Credential store using HashiCorp Vault
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 
Kubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoKubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with Demo
 
Kubernetes architecture
Kubernetes architectureKubernetes architecture
Kubernetes architecture
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current Status
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHub
 
Hashicorp Vault: Open Source Secrets Management at #OPEN18
Hashicorp Vault: Open Source Secrets Management at #OPEN18Hashicorp Vault: Open Source Secrets Management at #OPEN18
Hashicorp Vault: Open Source Secrets Management at #OPEN18
 
Containers and workload security an overview
Containers and workload security an overview Containers and workload security an overview
Containers and workload security an overview
 

Similaire à Retour d'expérience Minio

Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...sebastienmoreno
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteMicrosoft
 
Continuous cloud costs testing [Fr] - DevoxxFR - 2013-03
Continuous cloud costs testing [Fr] - DevoxxFR - 2013-03Continuous cloud costs testing [Fr] - DevoxxFR - 2013-03
Continuous cloud costs testing [Fr] - DevoxxFR - 2013-03Nicolas Fonrose
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureThomas Conté
 
Open source et microsoft azure reve ou realite ?
Open source et microsoft azure reve ou realite ?Open source et microsoft azure reve ou realite ?
Open source et microsoft azure reve ou realite ?Christophe Villeneuve
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiAZUG FR
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiSamir Arezki ☁
 
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...AZUG FR
 
Biztalk summit - IOT
Biztalk summit - IOTBiztalk summit - IOT
Biztalk summit - IOTCellenza
 
Stockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeStockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeMicrosoft Technet France
 
Les clouds, du buzz à la vraie science
Les clouds, du buzz à la vraie scienceLes clouds, du buzz à la vraie science
Les clouds, du buzz à la vraie scienceFrederic Desprez
 
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Microsoft Technet France
 
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sArnaud MAZIN
 
Comparaison des solutions Paas
Comparaison des solutions PaasComparaison des solutions Paas
Comparaison des solutions Paasyacine sebihi
 
Monter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMonter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMicrosoft Technet France
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...Microsoft
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsNicolas Herbaut
 
Identity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure AD
Identity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure ADIdentity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure AD
Identity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure ADMicrosoft
 

Similaire à Retour d'expérience Minio (20)

Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Continuous cloud costs testing [Fr] - DevoxxFR - 2013-03
Continuous cloud costs testing [Fr] - DevoxxFR - 2013-03Continuous cloud costs testing [Fr] - DevoxxFR - 2013-03
Continuous cloud costs testing [Fr] - DevoxxFR - 2013-03
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Open source et microsoft azure reve ou realite ?
Open source et microsoft azure reve ou realite ?Open source et microsoft azure reve ou realite ?
Open source et microsoft azure reve ou realite ?
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
 
Biztalk summit - IOT
Biztalk summit - IOTBiztalk summit - IOT
Biztalk summit - IOT
 
LyonJUG-2023-v1.0.pdf
LyonJUG-2023-v1.0.pdfLyonJUG-2023-v1.0.pdf
LyonJUG-2023-v1.0.pdf
 
Stockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeStockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le monde
 
Les clouds, du buzz à la vraie science
Les clouds, du buzz à la vraie scienceLes clouds, du buzz à la vraie science
Les clouds, du buzz à la vraie science
 
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...
 
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
 
Comparaison des solutions Paas
Comparaison des solutions PaasComparaison des solutions Paas
Comparaison des solutions Paas
 
Monter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMonter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows Azure
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIs
 
Identity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure AD
Identity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure ADIdentity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure AD
Identity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure AD
 

Retour d'expérience Minio

  • 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
  • 7. Architectures 2. multiple drives – erasure coding
  • 12.
  • 13. Lancer en standalone $ ./minio server /home/minio/data Endpoint: http://10.0.2.15:9000 http://127.0.0.1:9000 AccessKey: FN95TCN890ENV2REGU71 SecretKey: jVWpecwAeqnzk4tFM8CfOUJ9iJKxlgGtADOE+GOp Browser Access: http://10.0.2.15:9000 http://127.0.0.1:9000 Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide $ mc config host add myminio http://10.0.2.15:9000 FN95TCN890ENV2REGU71 jVWpecwAeqnzk4tFM8CfOUJ9iJKxlgGtADOE+GOp Object API (Amazon S3 compatible): Go: https://docs.minio.io/docs/golang-client-quickstart-guide Java: https://docs.minio.io/docs/java-client-quickstart-guide Python: https://docs.minio.io/docs/python-client-quickstart-guide JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide .NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide
  • 14. Configurer le client AWS et lister les buckets $ aws configure AWS Access Key ID [None]: FN95TCN890ENV2REGU71 AWS Secret Access Key [None]: jVWpecwAeqnzk4tFM8CfOUJ9iJKxlgGtADOE+GOp Default region name [None]: Default output format [None]: $ aws --endpoint-url http://localhost:9000 s3 ls 2018-12-03 15:52:30 mybucket 2018-12-03 15:55:07 testbucket
  • 15. Créer un bucket uploader un fichier $ aws --endpoint-url http://localhost:9000 s3 mb s3://otherbucket make_bucket: otherbucket $ aws --endpoint-url http://localhost:9000 s3 ls 2018-12-03 15:52:30 mybucket 2018-12-03 15:56:46 otherbucket 2018-12-03 15:55:07 testbucket $ aws --endpoint-url http://localhost:9000 s3 cp test.txt s3://mybucket upload: ./test.txt to s3://mybucket/test.txt $ aws --endpoint-url http://localhost:9000 s3 ls s3://mybucket 2018-12-03 15:57:22 11 test.txt
  • 16. Supprimer un bucket minio@xubuntu18:~$ aws --endpoint-url http://localhost:9000 s3 rb s3://mybucket --force delete: s3://mybucket/test.txt remove_bucket: mybucket
  • 17. Cluster $ export MINIO_ACCESS_KEY=FN95TCN890ENV2REGU71 $ export MINIO_SECRET_KEY=jVWpecwAeqnzk4tFM8CfOUJ9iJKxlgGtADOE+GO $ ./minio server --address 127.0.0.1:9001 http://127.0.0.1:9001/home/minio/data1 http://127.0.0.1:9002/home/minio/data2 http://127.0.0.1:9003/home/minio/data3 http://127.0.0.1:9004/home/minio/data4
  • 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