Ê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.