Vyzkoušejte MinIO – Self-hosted S3-Compliant High Performance Object Storage

Potřebujete softwarové řešení pro ukládání objektů, které byste hostovali na vlastním serveru?

Předpokládám, že ano.

Existuje mnoho cloudových úložišť objektů, například AWS S3 a další, které jsem již zmínil. Nicméně, pokud chcete mít svá data uložena na vlastním serveru, může vám MinIO pomoci ve vašem datovém centru.

MinIO je oblíbený software s otevřeným zdrojovým kódem pro distribuované ukládání objektů, který je kompatibilní s S3. Je známý pro svou připravenost pro podnikové využití a vysoký výkon.

MinIO můžete využít pro širokou škálu aplikací, od jednoduchých webových aplikací až po náročné úlohy distribuce dat pro analytické aplikace a aplikace strojového učení. Jeho využití je velmi rozmanité.

  • Standardní ukládání souborů
  • Multi-cloudová distribuce dat
  • Obnova po havárii
  • Analýza dat

Je to objemný software?

Naopak, jeho velikost je pouze kolem 50 MB a je plně kompatibilní s Kubernetes. Data a metadata zapisuje jako objekty, což eliminuje závislost na externí databázi nebo dalším softwaru pro ukládání metadat a zlepšuje celkový výkon.

Níže je uvedena architektura z oficiálních stránek.

Pojďme se podívat na některé z jeho pozoruhodných vlastností:

  • Vysoký výkon – jak již název napovídá. Je schopen dosahovat rychlosti čtení/zápisu kolem 170 GB/s. To je opravdu úctyhodné!
  • Škálovatelnost – umožňuje shlukování a škálování dle potřeby
  • Cloud-nativní přístup
  • Ochrana dat pomocí metody Erasure coding
  • Podpora více typů šifrování, včetně AES-CBC, AES-256-GCM, ChaCha20
  • Kompatibilita s běžnými KMS (Key Management Systems)
  • Správa identit aplikací a uživatelů
  • Upozornění na události
  • Federace pomocí etcd a CoreDNS

MinIO je velmi dobrá volba pro softwarově definované úložiště. Prozkoumejme, jak jej nastavit.

Instalace serveru MinIO

Můžete si jej nainstalovat na systémy Linux, Windows, macOS a také prostřednictvím Kubernetes. Dáváte přednost sestavení ze zdrojového kódu? Samozřejmě, můžete to udělat, pokud máte nainstalovaný Golang.

Pro tuto ukázku provedu instalaci na CentOS, který hostuji u Kamatera.

  • Přihlaste se na server
  • Vytvořte složku v libovolném systému souborů, například „miniserver“
  • Přejděte do této složky a spusťte níže uvedený příkaz wget
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Tímto se stáhne binární soubor, který by měl vypadat přibližně takto:

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

Udělejte soubor spustitelným pomocí příkazu chmod:

chmod 755 minio

Nyní můžeme spustit MinIO jako server.

./minio server /data &

Parametr „/data“ výše udává umístění souborového systému, kam bude MinIO ukládat objekty.

Spuštění by mělo proběhnout rychle a měli byste vidět výstup s informacemi podobnými následujícímu:

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'

Přistupme k MinIO v prohlížeči pomocí výchozích přihlašovacích údajů – minioadmin:minioadmin

Uživatelské rozhraní je velmi elegantní a přehledné, ale nejprve si změníme výchozí přihlašovací údaje, protože představují bezpečnostní riziko. Změna přihlašovacích údajů administrátora prostřednictvím prohlížeče není možná, je nutné použít proměnné prostředí.

Pro změnu výchozích přihlašovacích údajů MinIO exportujeme přístupový a tajný klíč, jak je ukázáno níže, a spustíme MinIO.

export MINIO_ACCESS_KEY=etechblog.cz
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Nyní by se již nemělo objevovat varování ohledně výchozích přihlašovacích údajů.

Zkusme nahrát nějaké soubory.

  • Klikněte na ikonu „+“ v pravém dolním rohu a vytvořte nový bucket (úložiště).
  • Nahrál jsem testovací soubor a okamžitě se objevil v prohlížeči.

A 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]#

Pokud v prohlížeči kliknete na tlačítko pro sdílení souboru, zobrazí se odkaz pro sdílení a možnost nastavit dobu platnosti.

Klient MinIO

Klient MinIO je více než jen aws-cli, umožňuje vám spravovat úložiště. Klient je k dispozici pro Windows, macOS a Linux.

Pro instalaci na Linux spusťte následující:

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

Spuštěním příkazu `mc` zobrazíte nápovědu k příkazům:

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

Zkusme vypsat soubor, který jsem nahrál pomocí příkazu `mc`.

Nejprve musíme nastavit alias pro úložiště, které chceme spravovat.

[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ etechblog.cz geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • `minio` je alias, můžete ho změnit na cokoliv chcete.
  • Změňte HTTP koncový bod na váš skutečný.
  • Změňte přístupový a tajný klíč pomocí vašich vlastních údajů.

Pro výpis obsahu použijte příkaz `ls`, jak je ukázáno níže.

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

Skvělé, funguje to!

Prostřednictvím klienta můžete dělat prakticky všechno. Nejen spravovat cloudové úložiště MinIO, ale také GCS, AWS S3, Azure.

Podívejte se na tento průvodce rychlým startem klienta pro více podrobností.

MiniIO SDK

V závislosti na vašem aplikačním stacku můžete s úložištěm objektů pracovat programově pomocí SDK (Software Development Kit). Jsou podporovány jazyky Go, Python, Node.js, .NET, Haskell a Java.

Brána MinIO

Přidejte bránu MiniIO do S3, Azure, NAS, HDFS a využívejte výhody prohlížeče MinIO a diskové mezipaměti.

Závěr

Pokud hledáte privátní, hybridní nebo multi-cloudové úložiště objektů, pak MinIO se jeví jako slibné řešení. Vyzkoušejte ho a věřím, že si ho oblíbíte. Pro otestování si můžete pořídit MiniIO VM od společnosti Kamatera nebo si ho sami nainstalovat na jakýkoliv cloudový server.