Încercați MinIO – Stocare de obiecte de înaltă performanță compatibilă cu S3 cu auto-găzduire

Ești în căutarea unei soluții de stocare a obiectelor pe care să o poți găzdui pe serverul tău propriu?

Presupun că răspunsul este afirmativ.

Există o multitudine de servicii de stocare a obiectelor în cloud, cum ar fi AWS S3 și altele, pe care le-am menționat anterior. Totuși, dacă ai nevoie să păstrezi datele pe propriul server, MinIO poate fi soluția ideală pentru centrele tale de date.

MinIO este un software de stocare a obiectelor distribuit, open-source, renumit și compatibil cu S3. Este conceput pentru mediul enterprise și se remarcă prin performanțele sale superioare.

MinIO poate fi utilizat într-o gamă variată de scenarii, de la aplicații web simple, până la sarcini complexe de distribuție a datelor pentru aplicații de analiză și învățare automată. Iată câteva exemple de utilizare:

  • Stocare standard pentru fișiere simple
  • Distribuirea datelor în medii multi-cloud
  • Soluții de recuperare în caz de dezastru
  • Analiza datelor

Este un software complex?

Nu, dimensiunea sa este de aproximativ 50 MB și este compatibil cu Kubernetes. Stochează datele și metadatele sub formă de obiecte, eliminând necesitatea unei baze de date separate sau a unui alt software pentru metadate, ceea ce duce la o performanță îmbunătățită.

Arhitectura MinIO, prezentată pe site-ul lor oficial, este simplă și eficientă.

Haide să analizăm câteva dintre caracteristicile sale notabile:

  • Performanță înaltă – după cum sugerează și numele, este capabil să atingă viteze de citire/scriere de aproximativ 170 GB/s. Aceasta este o performanță remarcabilă!
  • Scalabilitate – permite gruparea și scalarea în funcție de necesități.
  • Nativ cloud – este conceput pentru a funcționa optim în medii cloud.
  • Protecția datelor – utilizează metoda codului de ștergere pentru siguranța datelor.
  • Criptare multiplă – suportă algoritmi de criptare precum AES-CBC, AES-256-GCM, ChaCha20.
  • Compatibilitate cu KMS – este compatibil cu sistemele de gestionare a cheilor (KMS) uzuale.
  • Autentificare și autorizare – oferă mecanisme de autentificare și identitate pentru utilizatori și aplicații.
  • Notificări evenimente – poate genera notificări la anumite evenimente.
  • Federație – utilizează etcd și CoreDNS pentru federație.

MinIO reprezintă o alegere excelentă pentru stocarea definită de software. Să explorăm cum se configurează.

Instalarea Serverului MinIO

Poți instala MinIO pe Linux, Windows, macOS și prin Kubernetes. Daca preferi, poti face compilarea din surse, cu conditia sa ai Golang instalat.

Pentru această demonstrație, voi efectua instalarea pe CentOS, găzduit de Kamatera.

  • Conectează-te la server.
  • Creează un director în sistemul de fișiere dorit, de exemplu, „minio-server”.
  • Navighează la directorul creat și rulează comanda wget de mai jos:
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Această comandă va descărca un fișier binar. Acesta ar trebui să arate similar cu:

-rw-r--r--  1 root root 48271360 Oct 18 21:57 minio

Transformă fișierul în executabil cu comanda chmod:

chmod 755 minio

Acum, pornește serverul MinIO:

./minio server /data &

„/data” reprezintă directorul în care MinIO va stoca obiectele.

Pornirea este rapidă și ar trebui să vezi informații similare cu cele de mai jos:

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'

Accesează MinIO prin browser folosind datele implicite de autentificare – minioadmin:minioadmin.

Interfața este intuitivă și ordonată, dar este important să schimbi datele implicite de autentificare, deoarece acestea reprezintă un risc de securitate. Nu există opțiune de a modifica datele de administrator prin intermediul browser-ului, ci prin variabile de mediu.

Pentru a schimba datele de autentificare, vom exporta cheia de acces și cheia secretă și vom porni MinIO:

export MINIO_ACCESS_KEY=tipstrick.ro
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Acum, nu ar trebui să mai apară avertismentul cu privire la acreditările implicite.

Să testăm încărcarea câtorva fișiere:

  • Apasă pictograma „+” din dreapta jos și creează un „bucket”.
  • Am încărcat un fișier de test și acesta este vizibil imediat în browser.

În server, vei observa:

[[email protected] geekflare]# ls -ltr
total 4
-rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt
[[email protected] geekflare]#

Dacă dai click pe butonul de partajare a fișierelor, vei primi un link partajabil și opțiunea de a seta data de expirare.

Clientul MinIO

Clientul MinIO este mai mult decât un simplu „aws-cli”, oferind posibilitatea de a gestiona spațiul de stocare. Clientul este disponibil pentru Windows, macOS și Linux.

Pentru a-l instala pe Linux, rulează comenzile:

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 755 mc

Rulează comanda mc pentru a vedea informații despre utilizare:

[[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] ~]#

Să încercăm să listăm fișierul încărcat anterior folosind comanda mc.

Înainte de toate, trebuie să configurăm aliasul pentru spațiul de stocare pe care dorim să-l administrăm.

[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ tipstrick.ro geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • „minio” este numele aliasului. Poți să-l modifici după cum dorești.
  • Înlocuiește punctul final HTTP cu cel corect.
  • Înlocuiește cheia de acces și cheia secretă cu datele tale.

Pentru a lista, vom folosi comanda ls:

[[email protected] ~]# ./mc ls --recursive minio
[2020-10-19 11:09:06 UTC]    11B tipstrick.ro/MinIO-Test.txt
[[email protected] ~]#

Excelent. Funcționează!

Poți realiza aproape orice prin intermediul clientului, nu doar gestionarea stocării MinIO, ci și a GCS, AWS S3, Azure.

Consultă acest ghid de pornire rapidă pentru client pentru mai multe detalii.

SDK MinIO

În funcție de stiva ta de aplicații, poți interacționa cu stocarea de obiecte prin cod, folosind SDK-ul. Acesta este disponibil pentru Go, Python, Node.js, .NET, Haskell și Java.

Gateway MinIO

Adăugând gateway-ul MinIO la S3, Azure, NAS, HDFS, vei beneficia de browser-ul MinIO și de stocarea în cache pe disc.

Concluzie

Dacă ai nevoie de o soluție de stocare a obiectelor privată, hibridă sau multi-cloud, MinIO pare a fi o alegere promițătoare. Încearcă-l și vei vedea că este o soluție excelentă. Pentru a testa, poți obține o mașină virtuală MinIO de la Kamatera sau poți instala MinIO pe orice server cloud.