Essayez MinIO – Stockage d’objets hautes performances auto-hébergé et conforme à S3



Êtes-vous à la recherche d’une solution de stockage d’objets à déployer directement sur votre propre serveur ?

Si tel est le cas, vous n’êtes pas seul.

Bien qu’il existe de nombreuses plateformes de stockage d’objets basées sur le cloud, comme AWS S3 et d’autres, MinIO offre une alternative intéressante pour ceux qui souhaitent héberger leurs données dans leur propre infrastructure.

MinIO est une solution de stockage d’objets distribuée, open source, largement adoptée et compatible avec l’API S3. Elle est conçue pour répondre aux exigences des entreprises et est reconnue pour ses performances élevées.

MinIO peut être utilisé pour une grande variété d’applications, allant des simples sites web aux charges de travail de distribution de données les plus exigeantes, notamment pour l’analyse et l’apprentissage automatique. Voici quelques cas d’utilisation courants :

  • Stockage de fichiers plats
  • Distribution de données multi-cloud
  • Reprise après sinistre
  • Analyse de données

Cette solution est-elle volumineuse ?

Pas du tout. MinIO a une empreinte d’environ 50 Mo et est compatible avec Kubernetes. Les données et les métadonnées sont écrites sous forme d’objets, ce qui élimine la dépendance à une base de données ou à un logiciel supplémentaire pour le stockage des métadonnées et améliore les performances.

Voici une représentation de l’architecture de MinIO, telle que présentée sur leur site officiel.

Examinons quelques-unes des fonctionnalités remarquables de MinIO :

  • Hautes performances : Comme son nom l’indique, MinIO est capable de lire et d’écrire à des vitesses atteignant environ 170 Go/s.
  • Évolutivité : MinIO prend en charge le clustering, ce qui vous permet de faire évoluer votre stockage en fonction de vos besoins.
  • Conçu pour le cloud : Cette solution est nativement adaptée aux environnements cloud.
  • Protection des données : MinIO utilise la méthode du code d’effacement pour garantir la protection des données.
  • Cryptage multiple : MinIO prend en charge divers algorithmes de cryptage, dont AES-CBC, AES-256-GCM et ChaCha20.
  • Compatibilité KMS : MinIO est compatible avec les principaux systèmes de gestion de clés (KMS).
  • Gestion de l’identité : Il offre des fonctionnalités de gestion de l’identité des applications et des utilisateurs.
  • Notifications d’événements : MinIO peut envoyer des notifications lors d’événements liés aux objets.
  • Fédération : La fédération est prise en charge via etcd et CoreDNS.

MinIO est donc une option solide pour le stockage défini par logiciel. Voyons maintenant comment l’installer.

Installation du serveur MinIO

L’installation est possible sur divers systèmes d’exploitation (Linux, Windows, macOS) ainsi que via Kubernetes. Si vous préférez une compilation à partir des sources, assurez-vous d’avoir Golang installé. Vous trouverez les instructions d’installation sur leur site.

Pour cette démonstration, nous allons effectuer l’installation sur un serveur CentOS hébergé chez Kamatera.

  • Connectez-vous à votre serveur.
  • Créez un répertoire dans le système de fichiers de votre choix, par exemple « minio-serveur ».
  • Naviguez vers ce répertoire et exécutez la commande wget suivante :
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Cela téléchargera le fichier binaire, qui devrait ressembler à ceci :

-rw-r--r--  1 root root 48271360 Oct 18 21:57 minio

Rendez le fichier exécutable grâce à la commande chmod :

chmod 755 minio

Démarrez maintenant le serveur MinIO :

./minio server /data &

« /data » dans la commande ci-dessus indique l’emplacement où les objets seront stockés par MinIO.

Le serveur devrait démarrer rapidement et afficher des informations de démarrage similaires à ceci :

Endpoint:  http://xx.71.141.xx:9000 http://127.0.0.1:9000      
AccessKey: minioadmin 
SecretKey: minioadmin 

Browser Access:
   http://xx.71.141.xx:9000 http://127.0.0.1:9000      

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio http://xx.71.141.xx:9000 minioadmin minioadmin

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'

Vous pouvez accéder à l’interface web de MinIO en utilisant les informations d’identification par défaut : minioadmin:minioadmin.

L’interface est simple et claire, mais la première chose à faire est de changer les informations d’identification par défaut pour des raisons de sécurité. Il n’est pas possible de modifier ces informations via l’interface web, mais vous pouvez le faire en utilisant les variables d’environnement.

Pour changer les informations d’identification par défaut, exportez les variables d’accès et la clé secrète comme ci-dessous et redémarrez le serveur MinIO :

export MINIO_ACCESS_KEY=toptips.fr
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Vous ne devriez plus voir l’avertissement concernant les informations d’identification par défaut au démarrage.

Faisons un essai en téléchargeant quelques fichiers :

  • Cliquez sur l’icône « + » en bas à droite et créez un bucket.
  • Téléchargez un fichier de test, et il devrait apparaître immédiatement dans le navigateur.

Sur le serveur, les fichiers téléchargés sont visibles comme ceci :

[[email protected] geekflare]# ls -ltr
total 4
-rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt
[[email protected] geekflare]#

En cliquant sur le bouton de partage d’un fichier, vous obtiendrez un lien partageable avec la possibilité de définir une date d’expiration.

Client MinIO

Le client MinIO est un outil puissant qui va au-delà d’un simple équivalent d’aws-cli pour la gestion du stockage. Il est disponible pour Windows, macOS et Linux.

Pour l’installer sur Linux, exécutez ces commandes :

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 755 mc

Exécutez la commande ‘mc’ pour voir l’aide de la commande :

[[email protected] ~]# ./mc
NAME:
  mc - MinIO Client for cloud storage and filesystems.

USAGE:
  mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]

COMMANDS:
  alias      set, remove and list aliases in configuration file
  ls         list buckets and objects
  mb         make a bucket
  rb         remove a bucket
  cp         copy objects
  mirror     synchronize object(s) to a remote site
  cat        display object contents
  head       display first 'n' lines of an object
  pipe       stream STDIN to an object
  share      generate URL for temporary access to an object
  find       search for objects
  sql        run sql queries on objects
  stat       show object metadata
  mv         move objects
  tree       list buckets and objects in a tree format
  du         summarize disk usage recursively
  retention  set retention for object(s)
  legalhold  manage legal hold for object(s)
  diff       list differences in object name, size, and date between two buckets
  rm         remove objects
  version    manage bucket versioning
  ilm        manage bucket lifecycle
  encrypt    manage bucket encryption config
  event      manage object notifications
  watch      listen for object notification events
  undo       undo PUT/DELETE operations
  policy     manage anonymous access to buckets and objects
  tag        manage tags for bucket and object(s)
  replicate  configure server side bucket replication
  admin      manage MinIO servers
  update     update mc to latest release
  
GLOBAL FLAGS:
  --autocompletion              install auto-completion for your shell
  --config-dir value, -C value  path to configuration folder (default: "/root/.mc")
  --quiet, -q                   disable progress bar display
  --no-color                    disable color theme
  --json                        enable JSON lines formatted output
  --debug                       enable debug output
  --insecure                    disable SSL certificate verification
  --help, -h                    show help
  --version, -v                 print the version
  
TIP:
  Use 'mc --autocompletion' to enable shell autocompletion

VERSION:
  RELEASE.2020-10-03T02-54-56Z
[[email protected] ~]#

Essayons de lister le fichier que nous avons téléchargé via la commande mc. Pour cela, nous devons d’abord définir un alias pour le stockage que nous voulons gérer.

[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ toptips.fr geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • ‘minio’ est le nom de l’alias, vous pouvez le modifier à votre guise.
  • Remplacez le point de terminaison HTTP par le vôtre.
  • Utilisez votre clé d’accès et votre clé secrète.

Pour lister les fichiers, utilisez la commande ‘ls’ comme suit :

[[email protected] ~]# ./mc ls --recursive minio 
[2020-10-19 11:09:06 UTC]    11B toptips.fr/MinIO-Test.txt
[[email protected] ~]#

Parfait, ça fonctionne !

Vous pouvez effectuer pratiquement toutes les opérations via le client. En plus de gérer le stockage MinIO, vous pouvez également gérer GCS, AWS S3, Azure, etc.

Consultez ce guide de démarrage rapide du client pour plus de détails.

SDK MinIO

En fonction de votre pile d’applications, vous pouvez interagir avec le stockage d’objets de manière programmatique à l’aide du SDK. Il prend en charge Go, Python, Node.js, .NET, Haskell et Java.

Passerelle MinIO

La passerelle MinIO permet d’ajouter une interface à S3, Azure, NAS, HDFS pour profiter du navigateur MinIO et de la mise en cache sur disque.

Conclusion

Si vous êtes à la recherche d’une solution de stockage d’objets privée, hybride ou multi-cloud, MinIO est une option prometteuse. Essayez-la et vous l’adopterez peut-être. Pour faire des tests, vous pouvez utiliser une machine virtuelle MinIO de Kamatera ou l’installer sur n’importe quel serveur cloud.