Minio és una solució d'emmagatzematge d'objectes d'alt rendiment que proporciona una API compatible amb Amazon Web Services S3 i admet totes les funcions bàsiques de S3
Introducció
MinIO és una solució d'emmagatzematge d'objectes d'alt rendiment que proporciona una API compatible amb Amazon Web Services S3 i admet totes les funcions bàsiques de S3. Minio és un servei que et permet córrer la teva còpia de S3. Minio et permet simular un storage de S3.
Entorn de treball
Crea una màquina Ubuntu amb Windows Subsytem for Linux (WSL):
> connect-wsl minio -new
Instal.la Docker:
$ sudo ./install-docker.sh
Començarem mostrant com funciona MinIO amb el desplegament més senzill: només un ordinador("single-node") i un disc dur ("single-drive").
Crea una carpeta on emmagatzemem les dades:
$ mkdir -p ~/data
Arrenca un contenidor minio:
$ docker run --rm -d \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v ~/data:/data \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=password" \
minio/minio server /data --console-address ":9001"
Amb la comanda docker ps
pots veure que el servei està actiu al port 9000:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
25cce10009ac minio/minio "/usr/bin/docker-ent…" 14 seconds ago Up 14 seconds 0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp minio
Consola
Obre la consola web: http://localhost:9000.
T'has d'autenticar amb les credentials que vas definir a les variables d'entorn al executar l'ordre docker run
: MINIO_ROOT_USER
i MINIO_ROOT_PASSWORD
.
Llegeix el document MinIO Console per entendre com funciona la consola web.
Activitat
1.- Crea un bucket amb el nom "India" i puja algunes fotos de la India:
Client
Ara treballarem amb MinIO mitjançant la línia d'ordres.
D'aquesta manera pots treballar més ràpid amb el servidor i automatizar tasques, com poden ser les còpies de seguretat.
Obre un terminal de Powershell.
Instal.la l’aplicació client amb Scoop:
> scoop install main/minio-client
Per tal de no tenir que repetir cada cop l'adreça URL del servidor pots configurar un alias (mc alias set
):
> mc.exe alias set local http://localhost:9000 admin password
Added `local` successfully.
Ja pots executar ordres amb aquest alias.
Pots mirar el contingut del bucket india
:
> mc.exe ls local/india
[2024-09-06 09:26:04 CEST] 44KiB STANDARD new-delhi.jpg
[2024-09-06 09:26:15 CEST] 77KiB STANDARD taj-majal.webp
O la configuració del clúster:
> mc admin info local
● localhost:9000
Uptime: 1 hour
Version: 2024-08-29T01:40:52Z
Network: 1/1 OK
Drives: 1/1 OK
Pool: 1
┌──────┬───────────────────────┬─────────────────────┬──────────────┐
│ Pool │ Drives Usage │ Erasure stripe size │ Erasure sets │
│ 1st │ 0.2% (total: 956 GiB) │ 1 │ 1 │
└──────┴───────────────────────┴─────────────────────┴──────────────┘
121 KiB Used, 1 Bucket, 2 Objects
1 drive online, 0 drives offline, EC:0l
Tenim 1 node i 1 drive ... i tot correcte 👌
Si necessites ajuda d'una comanda pots fer servir el flag --help
.
Per exemple, com puc crear un bucket amb mc
... típica pregunta d'examen 🤔
> mc mb --help
Un cop que has llegit l'ajuda 😲 ... ja pots crear un bucket amb el nom tanzania
:
> mc mb local/tanzania
Bucket created successfully `local/tanzania`.
Copia alguns objectes al bucket.
Important Han d'estar relacionats amb Tanzània.
En un examen, si les imatges no són de Tanzània és molt probable que el professor et valori molt malament la resposta 😠.
> mc cp .\serengeti.jpg local/tanzania
...oads\serengeti.jpg: 101.80 KiB / 101.80 KiB [==============================================================] 1.69 MiB/s 0sPS
Ves a la consola, entra al bucket i previsualitza ("preview") la imatge.
Fes la catpura de pantalla corresponent (per practicar):
Mira l’espai que ocupa un bucket:
> mc du local/tanzania
406KiB 2 objects tanzania
Llista els continguts del bucket:
> mc ls local/tanzania
[2024-09-06 11:07:37 CEST] 304KiB STANDARD kilimanjaro.webp
[2024-09-06 11:04:58 CEST] 102KiB STANDARD serengeti.jpg
Esborra un objecte:
> mc rm local/tanzania/kilimanjaro.webp
Removed `local/tanzania/kilimanjaro.webp`.
En aquest document tens totes les ordres que pots utilitzar: MinIO Client.
Cluster
MinIO està dissenyat per crear un cluster d'alta disponibilitat i seguretat format per moltes màquines amb "raids" de discos a nivell de software.
Ara simularem un cluster de 4 servidors, on cada servidor gestiona 2 discos: en total estarem creant un raid distribuït de 8 discos.
Entra de nou a la màquina Ubuntu:
> connect-wsl minio
El primer que has de fer és eliminar el servei minio que has creat abans:
$ docker rm -f mino
Clona el projecte minio:
$ git clone --depth 1 https://gitlab.com/xtec/data/minio
Ves a la carpeta minio/docker
on estan els arxius de configuració:
$ cd minio/docker/
Arrenca els contenidors:
$ docker compose up -d
[+] Running 16/16
✔ minio2 Pulled 9.6s
✔ minio4 Pulled 9.6s
✔ nginx Pulled
...
Pots veure que tens 4 contenidors actius que simulen 4 servidors:
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f5febb38a40d nginx:1.19.2-alpine "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp, 0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp docker-nginx-1
0cb9aff8e283 minio/minio:RELEASE.2023-10-16T04-13-43Z "/usr/bin/docker-ent…" 2 minutes ago Up 2 minutes (healthy) 9000-9001/tcp docker-minio4-1
423e2031fe26 minio/minio:RELEASE.2023-10-16T04-13-43Z "/usr/bin/docker-ent…" 2 minutes ago Up 2 minutes (healthy) 9000-9001/tcp docker-minio3-1
ea5e9ef653d2 minio/minio:RELEASE.2023-10-16T04-13-43Z "/usr/bin/docker-ent…" 2 minutes ago Up 2 minutes (healthy) 9000-9001/tcp docker-minio1-1
ae4ec2bc445e minio/minio:RELEASE.2023-10-16T04-13-43Z "/usr/bin/docker-ent…" 2 minutes ago Up 2 minutes (healthy) 9000-9001/tcp docker-minio2-1
Obre la consola http://localhost:9000
Pots veure que els 4 servidors estan "online" i que els 8 discos estan "online":
Pots parar un instancia servidor (o 2 si vols que el clúster només pugui funcionar en mode lectura) i el clúster seguirá operatiu:
$ docker stop docker-minio4-1
Si mires la consola pots veure que apareix que un servidor està caigut.
Com que és un cluster d'alta disponibilitat pot seguir funcionat encara que li falti un servidor.
Prova de pujar, modificar i borrar objectes.
Seguretat
MinIO és un clúster (o super RAID) de desenes o milers de discos que pot oferir un emmagatzematge de petabytes amb moltes opcions de disponibilitat, confidencialitat i integritat dels objectes.
TODO Explicar el més important
- Gestió d'objectes
- Object amb versions
- Retenció d'objectes
- Cicle de vida dels objectes
- Compressió d'objectes
Activitats
Azure
1.- Crea una màquina a Azure:
> New-Azure minio
> Connect-Azure minio
2.- Instal.la Docker i arrenca un contenidor minio.
TODO baixar l'script de boc.xtec.dev TODO hem d'obrir els ports 9000 i 90001
3.- Obre la consola a la IP pública
4.- Xomparteix la IP pública ...
5.- Elimina la màquina d'Azure
> Remove-Azure minio
Isard
En la màquina Linux instal.la el client minio:
$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
$ chmod +x mc
$ sudo mv mc /usr/local/bin/mc
TODO
crea màquina a Isard, arrenca minio i conecta´t amb l'aplicació client des de WSL.