Wypróbuj MinIO — samoobsługową obiektową pamięć masową zgodną z S3 o wysokiej wydajności

Szukasz oprogramowania obiektowej pamięci masowej do hostowania na swoim serwerze?

Chyba tak?

Istnieje wiele magazynów obiektowych opartych na chmurze, takich jak AWS S3 i inne, o których tutaj wspomniałem. Jeśli jednak potrzebujesz hostować swoje dane na swoim serwerze, MinIO może pomóc w Twoich centrach danych.

MiniIO to popularne, rozproszone oprogramowanie do przechowywania obiektów o otwartym kodzie źródłowym, kompatybilne z S3. Jest gotowy do pracy w przedsiębiorstwie i znany ze swojej wysokiej wydajności.

Możesz używać MinIO od prostej aplikacji internetowej do dużych obciążeń dystrybucji danych dla aplikacji analitycznych i uczenia maszynowego. Może pomóc w wielu przypadkach użycia.

  • Standardowe przechowywanie plików płaskich
  • Dystrybucja danych w wielu chmurach
  • Odzyskiwanie po awarii
  • Analityka danych

Czy to nieporęczne oprogramowanie?

Nie, to tylko około ~ 50 MB i przyjazne dla Kubernetes. Zapisuje dane i metadane jako obiekt. Eliminuje to zależność od posiadania dodatkowej bazy danych lub oprogramowania do przechowywania metadanych i poprawia wydajność.

Poniższa architektura z ich oficjalnej strony.

Przyjrzyjmy się niektórym cechom, na które warto zwrócić uwagę.

  • Wysoka wydajność – mówi tytuł. Jest w stanie odczytywać/zapisywać z prędkością ~170 GB/s. To dużo!
  • Skalowalność — postaw na klastrowanie i skaluj według potrzeb
  • Natywne w chmurze
  • Ochrona danych metodą Erasure code
  • Obsługiwane wiele szyfrowań, w tym AES-CBC, AES-256-GCM, ChaCha20
  • Kompatybilny z popularnymi KMS
  • Aplikacja i tożsamość użytkownika
  • Powiadomienie o wydarzeniu
  • Federacja przy użyciu etcd i CoreDNS

MinIO to dobry wybór dla pamięci masowej definiowanej programowo. Przyjrzyjmy się, jak to skonfigurować.

Instalacja serwera MinIO

Możesz zainstalować w systemach Linux, Windows, macOS i przez Kubernetes. Wolisz budować ze źródła? Jasne, możesz to zrobić, jeśli masz zainstalowany Golang.

Na potrzeby tej demonstracji zainstaluję na CentOS, na którym jest hostowany Kamatera.

  • Zaloguj się do serwera
  • Utwórz folder w żądanym systemie plików. Może minio-serwer
  • Przejdź do nowo utworzonego folderu i uruchom poniższe polecenie wget
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Pobiera plik binarny i powinien wyglądać tak.

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

Ustaw plik jako wykonywalny za pomocą polecenia chmod

chmod 755 minio

Uruchommy MinIO jako serwer.

./minio server /data &

Wspomniany powyżej /data to system plików, w którym MinIO będzie przechowywać obiekty.

Uruchamianie jest szybkie i powinieneś zobaczyć informacje o starcie, jak poniżej.

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'

Przejdźmy do MinIO w przeglądarce z domyślnymi poświadczeniami – minioadmin:minioadmin

Interfejs jest bardzo schludny i przejrzysty, ale przede wszystkim zmieńmy domyślne dane uwierzytelniające, ponieważ naraża to na ryzyko. Nie ma opcji zmiany poświadczeń administratora za pomocą przeglądarki, ale zmienne środowiskowe.

Aby zmienić domyślne dane uwierzytelniające MinIO, wyeksportujemy dostęp i tajny klucz, jak poniżej, i uruchomimy MinIO.

export MINIO_ACCESS_KEY=newsblog.pl
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Teraz nie powinien narzekać na domyślne ostrzeżenie o wykryciu poświadczeń.

Spróbujmy przesłać kilka plików.

  • Kliknij ikonę + w prawym dolnym rogu i utwórz wiadro
  • Przesłałem plik testowy i od razu widoczny w przeglądarce

i na serwerze

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

Jeśli klikniesz przycisk udostępniania plików w przeglądarce, otrzymasz link do udostępniania i opcję ustawienia wygaśnięcia.

Klient MinIO

Klient MinIO to więcej niż aws-cli, które pozwala zarządzać pamięcią masową. Klient jest dostępny dla systemów Windows, macOS i Linux.

Aby zainstalować w systemie Linux, uruchom następujące polecenie.

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

Uruchom polecenie mc, aby wyświetlić pomoc dotyczącą polecenia.

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

Spróbujmy wyświetlić listę plików, które przesłałem za pomocą polecenia mc.

Najpierw musimy ustawić alias magazynu, którym chcemy administrować.

[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ newsblog.pl geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • minio to pseudonim. Możesz to zmienić na cokolwiek chcesz.
  • Zmień punkt końcowy HTTP na swój prawdziwy
  • Zmień dostęp i tajny klucz ze swoim

i, aby wyświetlić listę, użyje polecenia ls jak poniżej.

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

Świetny. to działa!

Przez klienta możesz zrobić dosłownie wszystko. Nie tylko możesz zarządzać pamięcią masową w chmurze MinIO, ale także GCS, AWS S3, Azure.

Sprawdź to skrócona instrukcja obsługi klienta po więcej szczegółów.

Pakiet MinIO SDK

W zależności od stosu aplikacji można programowo wchodzić w interakcje z obiektową pamięcią masową za pomocą zestawu SDK. Obsługuje Go, Python, Node.js, .NET, Haskell i Javę.

Bramka MinIO

Dodaj bramę MiniIO do S3, Azure, NAS, HDFS, aby korzystać z przeglądarki MinIO i buforowania dysku.

Wniosek

Jeśli szukasz prywatnej, hybrydowej lub wielochmurowej obiektowej pamięci masowej, MinIO wygląda obiecująco. Spróbuj, a zakochasz się w nim. Aby przetestować rzeczy, możesz dostać Maszyna wirtualna MinIO firmy Kamatera lub zainstaluj się na dowolnym serwerze Cloud.