Испробајте МинИО – С3-компатибилно складиште објеката високих перформанси које се самостално хостује

Da li ste u potrazi za softverom za skladištenje objekata koji možete hostovati na sopstvenom serveru?

Pretpostavljam da je odgovor potvrdan?

Dostupno je mnoštvo cloud rešenja za skladištenje objekata, kao što su AWS S3 i drugi koje sam ranije spomenuo. Međutim, ako želite da vaši podaci budu hostovani na vašem ličnom serveru, MinIO je izvanredan izbor za vaše data centre.

MinIO je popularan, open-source softver za distribuirano skladištenje objekata, koji je u potpunosti kompatibilan sa S3. Poznat je po svojim visokim performansama i prilagođen je potrebama preduzeća.

MinIO je pogodan za širok spektar primena, od jednostavnih veb aplikacija do složenih distribuiranih sistema za analitiku podataka i mašinsko učenje. Može biti od velike koristi u različitim scenarijima korišćenja:

  • Standardno skladištenje datoteka
  • Distribucija podataka kroz više cloud okruženja
  • Oporavak od katastrofa
  • Analitika podataka

Da li je MinIO zahtevan softver?

Ne, naprotiv, zauzima samo oko 50MB i idealno je prilagođen za Kubernetes. Podatke i metapodatke čuva kao objekte, što eliminiše potrebu za dodatnom bazom podataka ili softverom za skladištenje metapodataka, čime se postižu bolje performanse.

Arhitektura je prikazana na njihovoj zvaničnoj web stranici.

Pogledajmo neke od ključnih karakteristika koje vredi istaći:

  • Visoke performanse – kako i sam naslov govori. Može da čita i piše brzinama od približno 170GB/s. To je zaista impresivno!
  • Skalabilnost – omogućava grupisanje i skaliranje prema vašim potrebama.
  • Cloud-native dizajn
  • Zaštita podataka putem Erasure code metode
  • Podrška za višestruko šifrovanje, uključujući AES-CBC, AES-256-GCM, ChaCha20
  • Kompatibilnost sa standardnim KMS-om
  • Upravljanje identitetom aplikacija i korisnika
  • Notifikacije događaja
  • Federacija korišćenjem etcd i CoreDNS

MinIO je odličan izbor za softverski definisano skladištenje. Sada ćemo razmotriti proces podešavanja.

Instaliranje MinIO servera

Možete ga instalirati na Linux, Windows, macOS, kao i putem Kubernetesa. Želite da ga kompajlirate iz izvora? Naravno, moguće je, pod uslovom da imate instaliran Go.

Za ovu demonstraciju, instaliraću ga na CentOS server koji se nalazi na Kamatera.

  • Prijavite se na server.
  • Napravite direktorijum unutar željenog sistema datoteka, npr. `minio-server`.
  • Pređite u novokreirani direktorijum i pokrenite `wget` komandu ispod:
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Ovo će preuzeti binarnu datoteku koja bi trebalo da izgleda ovako:

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

Učinite datoteku izvršnom pomoću `chmod` komande:

chmod 755 minio

Sada pokrenimo MinIO kao server:

./minio server /data &

`/data` navedeno iznad predstavlja sistem datoteka gde će MinIO skladištiti objekte.

Pokretanje je brzo i trebalo bi da vidite izlaz sličan sledećem:

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'

Pristupite MinIO-u preko pregledača sa podrazumevanim kredencijalima – `minioadmin:minioadmin`.

Interfejs je jasan i pregledan, ali pre svega, moramo promeniti podrazumevane kredencijale jer predstavljaju bezbednosni rizik. Nema opcije za promenu administrativnih kredencijala preko pregledača, već se to radi preko promenljivih okruženja.

Da bismo promenili podrazumevane kredencijale za MinIO, izvešćemo pristupni i tajni ključ kao što je prikazano ispod i ponovo pokrenuti MinIO:

export MINIO_ACCESS_KEY=techblog.co.rs
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Sada više ne bi trebalo da se prikazuje upozorenje o detektovanju podrazumevanih kredencijala.

Pokušajmo da otpremimo neke datoteke:

  • Kliknite na ikonu `+` u donjem desnom uglu i kreirajte `bucket`.
  • Otpremio sam probnu datoteku i odmah je bila vidljiva u pregledaču.

i na serveru:

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

Ako kliknete na dugme za deljenje datoteke u pregledaču, dobićete link za deljenje i opciju za podešavanje isteka.

MinIO klijent

MinIO klijent, odnosno `mc`, je više od običnog `aws-cli` alata, i omogućava vam da upravljate vašim skladištem. Klijent je dostupan za Windows, macOS i Linux.

Za instalaciju na Linux, pokrenite sledeće komande:

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

Pokrenite komandu `mc` da biste videli pomoć za komandu.

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

Pokušajmo da izlistamo datoteku koju smo otpremili preko `mc` komande.

Prvo, moramo da podesimo alias za skladište kojim želimo da upravljamo.

[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ techblog.co.rs geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • `minio` je alias. Možete ga promeniti u šta god želite.
  • Promenite HTTP endpoint u vašu pravu adresu.
  • Promenite pristupni i tajni ključ sa vašim kredencijalima.

Za listanje, koristićemo komandu `ls` kao što je prikazano ispod:

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

Odlično, funkcioniše!

Preko klijenta možete da uradite praktično sve. Osim što možete upravljati MinIO skladištem u cloudu, možete upravljati i GCS, AWS S3, i Azure skladištima.

Pogledajte kratki vodič za klijent za više detalja.

MinIO SDK

U zavisnosti od vašeg tehnološkog steka, možete programski komunicirati sa skladištem objekata koristeći SDK. Podržani su Go, Python, Node.js, .NET, Haskell i Java.

MinIO Gateway

Dodajte MinIO gateway za S3, Azure, NAS, HDFS da biste iskoristili prednosti MinIO pregledača i keširanja diska.

Zaključak

Ako tražite privatno, hibridno ili multi-cloud skladište objekata, MinIO deluje obećavajuće. Isprobajte ga i verovatno ćete ga zavoleti. Za testiranje, možete nabaviti Kamaterin MinIO VM ili ga instalirati na bilo kom cloud serveru.