GNU/Linux >> Linux Esercitazione >  >> Linux

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

In questo tutorial, spiegherò come configurare un server MinIO per l'utilizzo dell'architettura di archiviazione. Come chiunque non sappia già cosa sia MinIO:è un sistema di storage ad 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 nativo per il cloud che è allo stesso tempo scalabile e leggero.

Poiché 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 lo storage della soluzione come AWS S3, Azure Blob Storage e Alibaba OSS. Lo stesso vale per il concetto se la tua soluzione rimane ancora in locale poiché Minio funge da alternativa all'architettura di archiviazione come il servizio di archiviazione cloud fornito.



1. Come funziona

In un concetto semplice, Minio è disponibile in 2 parti:la parte client e la parte server. Questo concetto include anche una dashboard tramite web-ui o file-browser. Ogni lato client e server è relativamente facile da configurare e se hai familiarità con CLI (Command Line Interface), lo troverai facile da capire.

Tuttavia, quando lo progettiamo in un livello di produzione, tutto deve essere distribuito, il che significa che la soluzione fornita deve garantire prestazioni ottimali su larga scala, crescita auto-espandibile e disponibilità elevata. Tenuto conto di ciò, minio ha il suo concetto chiamato Codice di cancellazione distribuito .

Questo concetto è un approccio affidabile ai dati shard su più unità e li recupera, anche quando alcune unità non sono disponibili. Utilizzando questo concetto, puoi perdere la metà delle unità e avere comunque la garanzia 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 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 partizionare come dispositivo a blocchi per l'utilizzo di minio. Poiché la nostra architettura ha deciso di configurare più server, l'unità minima necessaria per un server è 2, tuttavia 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:

 [[email protected] ~]# 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 una dimensione di 8 GB 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.

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

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x4217c4d9.

Command (m for help): p

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 label type: dos
Disk identifier: 0x4217c4d9

Device Boot Start End Blocks Id System

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-16777215, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215):
Using default value 16777215
Partition 1 of type Linux and of size 8 GiB is set

Command (m for help): p

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 label type: dos
Disk identifier: 0x4217c4d9

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

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Command (m for help): 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 =internal log 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
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
[[email protected] ~]#

Una volta terminato, ripeti la stessa procedura 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:-

 [[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
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, poiché un prerequisito per le unità è stato eseguito per il server 1, ripetere 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:

 [[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
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 la MINIO_ACCESS_KEY e MINIO_SECRET_KEY come accesso di autenticazione. La configurazione è come di seguito:-

 [[email protected] ~]# export MINIO_ACCESS_KEY=shahril && export MINIO_SECRET_KEY=shahril123 
[[email protected] ~]# ./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 è fatta sul server 1, ripeti lo stesso passaggio sul server 2 per la configurazione.

Una volta fatto tutto, possiamo procedere al test sul risultato

4. Fase di test

Come 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 chiave di accesso shahril e chiave segreta shahril123 come configurato.

Il risultato verrà mostrato come di seguito:

Una volta terminato, ci reindirizzerà al dashboard del bucket. Ora creiamo il nostro primo bucket.

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

Una volta terminato, noterai che un nuovo bucket viene creato e mostrato nel pannello di sinistra come nell'immagine sottostante.

Una volta terminato, noterai che un nuovo bucket viene creato e mostrato nel pannello di sinistra come nell'immagine sottostante.

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.

Per garantire che il concetto di distribuito sia ben implementato. Facciamo un semplice test accedendo alla dashboard di 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 altro test. Questa volta utilizzeremo un'altra workstation che accederà al nostro minio server utilizzando la console client chiamata mc .

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

Quindi, come risultato finale, ci aspetteremo 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:

 [[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
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: 16592896 (16M) [application/octet-stream]
Saving to: ‘mc’

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

2019-09-30 11:49:37 (137 KB/s) - ‘mc’ saved [16592896/16592896]

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

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

 [[email protected] ~]# ./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:

 [[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 myself.jpg

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

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

[[email protected] ~]# ./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 terminato, come previsto quando aggiorni dal lato dashboard tramite uno qualsiasi degli URL del server, dovresti vedere che il nuovo file viene mostrato lì come illustrato 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 ogni oggetto all'interno del bucket che puoi utilizzare sul lato applicazione tramite curl o API.

Pollice su! ora abbiamo impostato e configurato correttamente un servizio di archiviazione self-hosted in locale utilizzando Minio. Per maggiori dettagli puoi controllare la sua documentazione qui


Linux
  1. Configura il server di posta elettronica con Virtualmin per e-mail e spazio di archiviazione illimitati

  2. Le partizioni del dispositivo loop non vengono visualizzate?

  3. Capire la RAM per il tuo server cloud

  4. Trova tutti i dispositivi di archiviazione collegati a una macchina Linux

  5. Comando Linux per attendere che un server SSH sia attivo

Installa Ubuntu Server 16.04 per configurare il tuo server multimediale

Configurazione della partizione LVM su server Linux

Configurazione di SiteApps per Joomla

Configurazione di un server Hostwinds remoto per backup cPanel/WHM

Graylog Monitoring Server su Ubuntu Linux per Monitoring Server/Services

Guida per la configurazione del server SFTP in Linux