Ricerca nel sito web

Configurazione del server MinIO per l'utilizzo dell'architettura di archiviazione


Su questa pagina

  1. 1. Come funziona
  2. 2. Fase di installazione
  3. 3. Fase di configurazione
  4. 4. Fase di test

In questo tutorial, spiegherò come configurare un server MinIO per l'utilizzo dell'architettura di archiviazione. Come chiunque non sappia già cos'è MinIO: è un sistema di archiviazione di oggetti distribuito ad alte prestazioni. È definito dal software, funziona su hardware standard del settore ed è open source al 100%. È appositamente costruito per servire gli oggetti come un'architettura a strato singolo per ottenere tutte le funzionalità necessarie senza compromessi. Il risultato è visto come un server di oggetti cloud-native che è allo stesso tempo scalabile e leggero.

Man mano che il mondo dell'ingegneria del cloud sta emergendo sempre più maturo, vengono in mente le cose perché abbiamo bisogno di MinIO in primo luogo?

Tieni presente che se servi la tua soluzione nel cloud, potresti finire per utilizzare l'archiviazione della soluzione come AWS S3, Azure Blob Storage e Alibaba OSS. Lo stesso vale per il concetto se la tua soluzione rimane ancora in sede poiché Minio funge da alternativa all'architettura di archiviazione uguale al servizio di archiviazione cloud fornito.



1. Come funziona

In un concetto semplice, Minio è composto da 2 parti: la parte client e la parte server. Questo concetto include anche una dashboard tramite interfaccia utente Web o browser di file. Ogni client e lato server sono relativamente facili da configurare e se hai familiarità con la CLI (Command Line Interface), lo troverai facile da comprendere.

Tuttavia, quando lo progettiamo a livello di produzione, tutto deve essere distribuito, il che significa che la soluzione fornita deve garantire buone prestazioni su larga scala, crescita autoespandibile e disponibilità elevata pronta. Tenendo conto di ciò, minio ha un proprio concetto chiamato codice di cancellazione distribuito.

Questo concetto è un approccio affidabile per suddividere i dati su più unità e recuperarli, anche quando alcune unità non sono disponibili. Utilizzando questo concetto, puoi perdere la metà delle unità ed essere comunque garantito dei tuoi dati

Per questo tutorial, ti mostrerò come installare e configurare il server MinIO come codice di cancellazione distribuito. Successivamente, daremo una rapida occhiata sul lato client su come utilizzare il servizio MinIO come utente finale.

2. Fase di installazione

Per la fase di installazione, configurerò 2 server come minio cluster per preparare la configurazione del codice di cancellazione distribuito.

Ora elencheremo 4 unità disco che verranno utilizzate per partizionarlo come dispositivo a blocchi per l'utilizzo di minio. Poiché la nostra architettura ha deciso di configurare più server, l'unità minima che deve essere per un server è 2, ma se si utilizza un singolo server, il requisito minimo delle unità è 1. È possibile visualizzare i requisiti dettagliati necessari per la progettazione del codice di cancellazione qui .

Di seguito sono riportati i passaggi:

 [ ~]# fdisk -l 

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a4fd8

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209715199 103808000 8e Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdd: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sde: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-root: 104.1 GB, 104144568320 bytes, 203407360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Come puoi vedere sopra, dalla nostra parte ci sono 4 unità montate nel nostro server con 8 GB di dimensione ciascuna.

Successivamente, creeremo una partizione da ciascuna unità, quindi creeremo una directory dedicata che verrà montata su ciascuna partizione che verrà creata. Di seguito sono riportati i passaggi.

 
[ ~]#

Una volta terminato, ripeti lo stesso processo per creare una partizione sulle unità rimanenti, quindi montala su ciascuna directory che abbiamo creato. Come risultato finale, dovresti finalmente ottenere l'output come di seguito: -

 [ ~]# df -h 
Filesystem Size Used Avail Use% Mounted on
/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

Va bene, come prerequisito sulle unità è fatto per il server 1, ripeti la stessa configurazione sul server 2 come sopra.

3. Fase di configurazione

Ora che entrambe le configurazioni del server sono state completate, continuiamo a installare il servizio minio. Innanzitutto, scarica il pacchetto minio come mostrato di seguito:

 [ ~]# 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
Resolving dl.min.io (dl.min.io)... 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 43831296 (42M) [application/octet-stream]
Saving to: ‘minio’

3% [=> ] 1,335,296 106KB/s eta 6m 33s

Ora ripeti lo stesso come sopra sul server 2.

Quando tutto è fatto, iniziamo la configurazione di minio. Definiremo MINIO_ACCESS_KEY e MINIO_SECRET_KEY come accesso di autenticazione. La configurazione è come di seguito: -

 [ ~]# ./minio server http://10.124.12.{141..142}:9000/opt/drive{1..4} 
Waiting for a minimum of 4 disks to come online (elapsed 0s)

Waiting for a minimum of 4 disks to come online (elapsed 2s)

Waiting for a minimum of 4 disks to come online (elapsed 3s)

Waiting for a minimum of 4 disks to come online (elapsed 3s)

Waiting for all other servers to be online to format the disks.
Status: 8 Online, 0 Offline.
Endpoint: http://10.124.12.141:9000 http://10.124.12.142:9000
AccessKey: shahril
SecretKey: shahril123

Browser Access:
http://10.124.12.141:9000 http://10.124.12.142:9000

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://10.124.12.141:9000 shahril shahril123

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

Ora la configurazione è stata eseguita sul server 1, ripetere lo stesso passaggio sul server 2 per la configurazione.

Una volta fatto tutto, possiamo procedere al test sul risultato

4. Fase di test

Mentre tutto è fatto, iniziamo a vedere l'usabilità dei servizi minio. Come mostrato nella configurazione sopra, possiamo accedere alla dashboard della sua UI tramite browser. Per il nostro esempio, accediamo a http://10.124.12.141:9000 con la chiave di accesso shahril e la chiave segreta shahril123 come configurato.

Il risultato verrà mostrato come di seguito:

Una volta fatto, ci reindirizzerà alla dashboard del bucket. Ora creiamo il nostro primo bucket.

Fai clic sulla cartella dell'icona con il pulsante più e chiama il nostro primo secchio mylove. Esempio come mostrato di seguito:

Una volta fatto, noterai che un nuovo bucket viene creato e mostrato sul pannello di sinistra come sotto lo screenshot.

Una volta fatto, noterai che un nuovo bucket viene creato e mostrato sul pannello di sinistra come sotto lo screenshot.

Successivamente, aggiungiamo tutti i file dal tuo lato locale da inserire nel bucket

Noterai che il nuovo file è stato caricato correttamente nel bucket come mostrato di seguito.

Garantire che il concetto di distribuito sia ben implementato. Facciamo un semplice test accedendo alla dashboard minio tramite un altro server. L'altro URL del server è http://10.124.12.142:9000

Come previsto, il bucket e i file che abbiamo inserito esistono anche nell'URL di altri server, come mostrato sopra.

Ora, facciamo un'altra prova. Questa volta utilizzeremo un'altra workstation che accederà al nostro server minio utilizzando la console client chiamata mc.

Dal lato client, creeremo un file e lo caricheremo nel bucket esistente.

Quindi, come risultato finale, ci aspettiamo di vedere dalla dashboard che il nuovo file caricato dal lato client esiste automaticamente.

Innanzitutto, apri la workstation client e scarica il pacchetto client minio. Un esempio è mostrato di seguito:

 [ ~]# chmod +x mc 

Quindi, esegui la configurazione dal lato client per accedere al bucket dedicato utilizzando Crea chiave di accesso e segreto. Esempio come di seguito:

 [ ~]# ./mc config host add myminio http://10.124.12.142:9000 shahril shahril123 
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
Added `myminio` successfully.

Una volta configurato, dovresti riuscire a vedere il contenuto all'interno del bucket esistente. Esempio come di seguito:

 [ ~]# ./mc ls myminio/mylove/ 
[2019-09-30 11:16:25 +08] 55KiB myself.jpg

Ora, crea o carica qualsiasi file esistente dal lato client nel bucket. Esempio come di seguito: -

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

Una volta fatto, come previsto quando aggiorni dal lato dashboard tramite uno qualsiasi degli URL del server, dovresti vedere il nuovo file mostrato lì come di seguito.

Dovresti vedere il link completo dell'immagine quando fai clic sull'icona di condivisione sul lato destro come mostrato di seguito. Questo è il collegamento univoco di ciascun oggetto all'interno del bucket che puoi utilizzare sul lato dell'applicazione tramite curl o API.

Pollice su! ora abbiamo installato e configurato correttamente un servizio di archiviazione self-hosted on-premise utilizzando Minio. Per maggiori dettagli è possibile controllare la sua documentazione qui