GNU/Linux >> Tutoriels Linux >  >> Linux

Configuration du serveur MinIO pour l'utilisation de l'architecture de stockage

Dans ce tutoriel, j'expliquerai comment configurer un serveur MinIO pour l'utilisation de l'architecture de stockage. Comme tous ceux qui ne savent pas encore ce qu'est MinIO :il s'agit d'un système de stockage d'objets distribué hautes performances. Il est défini par logiciel, fonctionne sur du matériel standard et est 100 % open source. Il est spécialement conçu pour servir les objets en tant qu'architecture monocouche afin d'obtenir toutes les fonctionnalités nécessaires sans compromis. Le résultat est perçu comme un serveur d'objets cloud natif à la fois évolutif et léger.

Alors que le monde de l'ingénierie Cloud devient de plus en plus mature, on se demande pourquoi nous avons besoin de MinIO en premier lieu ?

Tenez compte du fait que si, lorsque vous servez votre solution dans le cloud, vous pouvez finir par utiliser un stockage de solution comme AWS S3, Azure Blob Storage et Alibaba OSS. Il en va de même pour le concept si votre solution reste toujours sur site car Minio sert d'alternative à l'architecture de stockage au même titre que le service de stockage cloud fourni.



1. Comment ça marche

Dans un concept simple, Minio se décline en 2 parties - la partie client et la partie serveur. Ce concept comprend également un tableau de bord via une interface Web ou un navigateur de fichiers. Chaque client et côté serveur sont relativement faciles à configurer et si vous êtes familier avec CLI (Command Line Interface), vous le trouverez facile à saisir.

Pourtant, lorsque nous le concevons au niveau de la production, tout doit être distribué, ce qui signifie que la solution fournie doit garantir de bonnes performances à grande échelle, une croissance auto-expansible et une disponibilité élevée. Compte tenu de cela, minio a son propre concept appelé Distributed Erasure Code .

Ce concept est une approche fiable pour fragmenter les données sur plusieurs disques et les récupérer, même lorsque quelques-uns des disques ne sont pas disponibles. En utilisant ce concept, vous pouvez perdre la moitié des disques et toujours être assuré de vos données

Pour ce tutoriel, je vais vous montrer comment installer et configurer le serveur MinIO en tant que code d'effacement distribué. Après cela, nous examinerons rapidement du côté client comment utiliser le service MinIO en tant qu'utilisateur final.

2. Phase d'installation

Pour la phase d'installation, je vais configurer 2 serveurs en minio cluster pour préparer la configuration du code d'effacement distribué.

Nous allons maintenant lister 4 lecteurs de disque que nous allons utiliser pour le partitionner en tant que périphérique de bloc pour une utilisation minio. Comme notre architecture a décidé de configurer plusieurs serveurs, le lecteur minimum requis pour un serveur est de 2, mais si vous utilisez un seul serveur, l'exigence minimale des lecteurs est de 1. Les exigences détaillées nécessaires à la conception du code d'effacement peuvent être consultées. ici .

Voici les étapes :

 [[email protected] ~]# fdisk -l 

Disque /dev/sda :107,4 Go, 107374182400 octets, 209715200 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille de secteur (logique/physique) :512 octets/512 octets
Taille d'E/S (minimale/optimale) :512 octets/512 octets
Type d'étiquette de disque :dos
Disque identifiant :0x000a4fd8

Démarrage de l'appareil Fin Blocs Id Système
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209715199 103808000 8e Linux LVM

Disque /dev/sdb :8589 Mo, 8589934592 octets, 16777216 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille de secteur (logique/physique) :512 octets / 512 octets
Taille d'E/S (minimale/optimale) :512 octets / 512 octets


Disque /dev/sdc :8 589 Mo, 8589934592 octets, 16777216 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille de secteur (logique/physique) :512 octets / 512 octets
Taille d'E/S (minimale/optimale) :512 octets / 512 octets


Disque /dev/sdd :8589 Mo B, 8589934592 octets, 16777216 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille de secteur (logique/physique) :512 octets / 512 octets
Taille d'E/S (minimale/optimale ) :512 octets / 512 octets


Disque /dev/sde :8589 Mo, 8589934592 octets, 16777216 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille de secteur (logique/physique) :512 octets / 512 octets
Taille d'E/S (minimale/optimale) :512 octets / 512 octets


Disque /dev/mapper /centos-root :104,1 Go, 104144568320 octets, 203407360 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille de secteur (logique/physique) :512 octets / 512 octets
I/ Taille O (minimale/optimale) :512 octets / 512 octets


Disque /dev/mapper/centos-swap :2147 Mo, 2147483648 octets, 4194304 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille de secteur (logique/physique) :512 octets / 512 octets
Taille d'E/S (minimale/optimale) :512 octets / 512 octets

Comme vous pouvez le voir ci-dessus, de notre côté, il y a 4 disques montés dans notre serveur avec une taille de 8 Go chacun.

Ensuite, nous allons créer une partition à partir de chaque lecteur, puis créer un répertoire dédié qui montera sur chaque partition que nous allons créer. Voici les étapes.

 
[[email protected] ~]# fdisk /dev/sdb
Bienvenue dans fdisk (util-linux 2.23.2).

Les modifications resteront uniquement en mémoire jusqu'à ce que vous décidiez de les écrire.
Soyez prudent avant d'utiliser la commande d'écriture.

Le périphérique ne contient pas de table de partition reconnue
Création d'un nouveau label de disque DOS avec l'identifiant de disque 0x4217c4d9.

Commande (m pour l'aide) :p

Disque /dev/sdb :8589 Mo, 8589934592 octets, 16777216 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille de secteur (logique/physique) :512 octets / 512 octets
Taille d'E/S (minimale/optimale) :512 octets / 512 octets
Type d'étiquette de disque :dos
Identifiant de disque :0x4217c4d9

Démarrage de l'appareil Fin Blocs Id Système

Commande (m pour l'aide) :n
Type de partition :
p primary ( 0 principal, 0 étendu, 4 libres)
e étendu
Sélectionner (p par défaut) :p
Numéro de partition (1-4, par défaut 1) :
Premier secteur (2048- 16777215, par défaut 2048) :
Utilisation de la valeur par défaut 2048
Dernier secteur, +secteurs ou +taille{K,M,G} (2048-16777215, par défaut 16777215) :
Utilisation de la valeur par défaut 16777215
La partition 1 de type Linux et de taille 8 Gio est définie

Commande (m pour l'aide) :p

Disque /dev/sdb :8589 Mo, 8589934592 octets, 16777216 secteurs
Unités =secteurs de 1 * 512 =512 octets
Taille du secteur (logique al/physique) :512 octets / 512 octets
Taille d'E/S (minimale/optimale) :512 octets / 512 octets
Type d'étiquette de disque :dos
Identifiant de disque :0x4217c4d9

Device Boot Start End Blocks Id System
/dev/sdb1 2048 16777215 8387584 83 Linux

Commande (m for help):w
La table de partition a été modifiée !

Appel de ioctl() pour relire la table des partitions.
Synchronisation des disques.

Commande (m pour l'aide) :q

[[email protected] ~]# ls /dev/sdb*
/dev/sdb /dev/sdb1
[[email protected] ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=524224 blks
=sectsz =512 attr=2, projid32bit=1
=crc=1 finobt=0, sparse=0
data =bsize=4096 blocks=2096896, imaxpct=25
=sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =journal interne bsize=4096 blocks=2560, version=2
=sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[[email protected] ~]#
[[email protected] ~]# mkdir - p /opt/drive1
[[email protected] ~]# mkdir -p /opt/drive2
[[email protected] ~]# mkdir -p /opt/drive3
[[email protected] ~]# mkdir -p /opt/drive4
[[email protected] ~]#
[[email protected] ~]# mount /dev/sdb1 /opt/drive1
[ [email protected] ~]# df -h
Taille du système de fichiers utilisé % d'utilisation disponible monté sur
/d ev/mapper/centos-root 97G 3.8G 94G 4% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9 G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0
/dev/sdb1 8.0G 33M 8.0G 1% /opt/drive1
[[email protected] ~]#

Une fois cela fait, répétez le même processus pour créer une partition sur les lecteurs restants, puis montez-la dans chaque répertoire que nous avons créé. Comme résultat final, vous devriez enfin obtenir la sortie comme ci-dessous :-

 [[email protected] ~]# mount /dev/sdb1 /opt/drive1 
[[email protected] ~]# mount /dev/sdc1 /opt/drive2
[[email protected] ~]# mount /dev/sdd1 /opt/drive3
[[email protected] ~]# mount /dev/sde1 /opt/drive4
[[email protected] ~]#
[ [email protected] ~]#
[[email protected] ~]# df -h
Taille du système de fichiers utilisé % d'utilisation disponible monté sur
/dev/mapper/centos-root 97G 3,8G 94G 4% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0
/dev/sdb1 8.0G 33M 8.0G 1% /opt/drive1
/dev/sdc1 8.0G 33M 8.0G 1% /opt/drive2
/dev/sdd1 8.0G 33M 8.0G 1% /opt/drive3
/dev/sde1 8.0G 33M 8.0G 1% /opt/drive4

Très bien, comme un prérequis sur les disques est fait pour le serveur 1, répétez la même configuration sur le serveur 2 comme ci-dessus.

3. Phase de configuration

Maintenant que les deux configurations de serveur sont terminées, continuons à installer le service minio. Tout d'abord, téléchargez le package minio comme indiqué ci-dessous :

 [[email protected] ~]# wget https://dl.min.io/server/minio/release/linux-amd64/minio &&chmod +x minio 
--2019-09-29 22 :23:57-- https://dl.min.io/server/minio/release/linux-amd64/minio
Résolution de dl.min.io (dl.min.io)... 178.128.69.202
Connexion à dl.min.io (dl.min.io)|178.128.69.202|:443... connecté.
Requête HTTP envoyée, en attente de réponse... 200 OK
Longueur :43831296 (42M) [application/octet-stream]
Enregistrement vers :'minio'

3% [=> ] 1 335 296 106Ko/s et 6m 33s

Répétez maintenant la même chose que ci-dessus sur le serveur 2.

Comme tout est fait, commençons la configuration de minio. Nous allons définir la MINIO_ACCESS_KEY et MINIO_SECRET_KEY comme accès d'authentification. La configuration est comme ci-dessous :-

 [[email protected] ~]# export MINIO_ACCESS_KEY=shahril &&export MINIO_SECRET_KEY=shahril123 
[[email protected] ~]# ./serveur minio http://10.124.12.{141..142} :9000/opt/drive{1..4}
Attente qu'au moins 4 disques soient en ligne (0s écoulés)

Attente qu'au moins 4 disques soient en ligne (durée écoulée 2s)

En attente de la mise en ligne d'au moins 4 disques (3s écoulées)

En attente de la mise en ligne d'au moins 4 disques (3s écoulées)

Attendre que tous les autres serveurs soient en ligne pour formater les disques.
Statut :8 en ligne, 0 hors ligne.
Endpoint :http://10.124.12.141:9000 http://10.124.12.142:9000
AccessKey :shahril
SecretKey :shahril123

Accès au navigateur :
http://10.124.12.141:9000 http://10.124.12.142:9000

Accès en ligne de commande :https://docs.min.io/docs/minio-client- guide de démarrage rapide
$ mc config host add myminio http://10.124.12.141:9000 shahril shahril123

Object API (compatible Amazon S3) :
Aller :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

Maintenant que la configuration est faite sur le serveur 1, répétez la même étape sur le serveur 2 pour la configuration.

Une fois que tout est fait, nous pouvons procéder au test sur le résultat

4. Phase de test

Comme tout est fait, commençons à voir l'utilisabilité des services minio. Comme indiqué dans la configuration ci-dessus, nous pouvons accéder au tableau de bord de son interface utilisateur via un navigateur. Pour notre exemple, connectons-nous à http://10.124.12.141:9000 avec clé d'accès shahril et la clé secrète shahril123 tel que configuré.

Le résultat sera affiché comme ci-dessous :

Une fois cela fait, il nous redirigera vers le tableau de bord du bucket. Créons maintenant notre premier compartiment.

Cliquez sur l'icône du dossier avec le bouton plus et nommez notre premier seau comme mylove . Exemple comme indiqué ci-dessous :

Une fois cela fait, vous remarquerez qu'un nouveau compartiment est créé et affiché sur le panneau de gauche comme ci-dessous.

Une fois cela fait, vous remarquerez qu'un nouveau compartiment est créé et affiché sur le panneau de gauche comme ci-dessous.

Ensuite, ajoutons tous les fichiers de votre côté local à insérer dans le compartiment

Vous remarquerez que le nouveau fichier a été téléchargé avec succès dans le compartiment, comme indiqué ci-dessous.

Veiller à ce que le concept de distribution soit bien mis en œuvre. Faisons un test simple en accédant au tableau de bord minio via un autre serveur. L'autre URL du serveur est http://10.124.12.142:9000

Comme prévu, le compartiment et les fichiers que nous avons insérés existent également dans l'URL d'autres serveurs, comme indiqué ci-dessus.

Maintenant, faisons un autre test. Cette fois, nous utiliserons un autre poste de travail qui accédera à notre serveur minio à l'aide de la console client appelée mc .

Du côté client, nous allons créer un fichier, puis le télécharger dans le compartiment existant.

Ensuite, comme résultat final, nous nous attendrons à voir à partir du tableau de bord que le nouveau fichier téléchargé depuis le côté client existe automatiquement.

Tout d'abord, ouvrez le poste de travail client et téléchargez le package client minio. Un exemple est illustré ci-dessous :

 [[email protected] ~]# wget https://dl.min.io/client/mc/release/linux-amd64/mc 
--2019-09-30 11:47:38- - https://dl.min.io/client/mc/release/linux-amd64/mc
Résolution de dl.min.io (dl.min.io)... 178.128.69.202
Connexion à dl.min.io (dl.min.io)|178.128.69.202|:443... connecté.
Requête HTTP envoyée, en attente de réponse... 200 OK
Longueur :16592896 (16M) [application/octet-stream]
Enregistrement vers :'mc'

100 %[============================================================================>] 16,592,896 741KB/s en 1m 59s

2019- 09-30 11:49:37 (137 KB/s) - 'mc' enregistré [16592896/16592896]

[[email protected] ~]# chmod +x mc

Effectuez ensuite la configuration côté client pour accéder au compartiment dédié à l'aide de la clé d'accès et du secret de création. Exemple comme ci-dessous :

 [[email protected] ~]# ./mc config host add myminio http://10.124.12.142:9000 shahril shahril123 
mc :Configuration écrite dans `/root/.mc/config.json`. Veuillez mettre à jour vos identifiants d'accès.
mc :`/root/.mc/share` créé avec succès.
mc :le partage initialisé télécharge le fichier `/root/.mc/share/uploads.json`.
mc :le partage initialisé télécharge le fichier `/root/.mc/share/downloads.json`.
Ajout de `myminio` avec succès.

Une fois configuré, vous devriez réussir à voir le contenu à l'intérieur du compartiment existant. Exemple comme ci-dessous :

 [[email protected] ~]# ./mc ls myminio 
[2019-09-30 11:16:25 +08] 0B mylove/

[[email protected] ~]# ./mc ls myminio/mylove/
[2019-09-30 11:16:25 +08] 55KiB moi-même.jpg

Maintenant, créez ou téléchargez n'importe quel fichier existant du côté client dans le compartiment. Exemple comme ci-dessous :-

 [[email protected] ~]# ./mc cp new_file.txt myminio/mylove 
new_file.txt :38 B / 38 B ???????????????? ????????????????????????????????????????????????? 100.00% 1.02 Kio/s 0s
[[email protected] ~]#

[[email protected] ~]# ./mc ls myminio/mylove/
[2019- 09-30 11:16:25 +08] 55KiB moi-même.jpg
[2019-09-30 11:58:16 +08] 38B new_file.txt

Une fois cela fait, comme prévu lorsque vous actualisez du côté du tableau de bord via l'une des URL du serveur, vous devriez voir le nouveau fichier y être affiché comme ci-dessous.

Vous devriez voir le lien complet de l'image lorsque vous cliquez sur l'icône de partage sur votre droite, comme indiqué ci-dessous. Il s'agit du lien unique de chaque objet à l'intérieur du compartiment que vous pouvez utiliser côté application via curl ou API.

Pouces vers le haut! nous avons maintenant installé et configuré avec succès un service de stockage auto-hébergé sur site à l'aide de Minio. Pour plus de détails, vous pouvez consulter sa documentation ici


Linux
  1. Configurer un serveur de messagerie avec Virtualmin pour des e-mails et un stockage illimités

  2. Les partitions de Loopdevice ne s'affichent pas ?

  3. Comprendre la RAM pour votre serveur cloud

  4. Configurer l'envoi de journaux pour MSSQL Server

  5. Le serveur Ubuntu pour les nuls

Installez Ubuntu Server 16.04 pour configurer votre propre serveur multimédia

Configuration de la partition LVM sur le serveur Linux

Configuration de SiteApps pour Joomla

Configuration d'un serveur Hostwinds distant pour les sauvegardes cPanel/WHM

Serveur de surveillance Graylog sur Ubuntu Linux pour la surveillance du serveur/des services

Guide de configuration du serveur SFTP sous Linux