MinIO klaster

Obiektowa pamięć masowa, w pełni kompatybilna z Amazon S3

Minio to ekonomiczna obiektowa pamięć masowa, w pełni kompatybilna z Amazon S3 (Simple Storage Service ). To rozwiązanie najlepiej nadaje się do przechowywania nieustrukturyzowanych danych, takich jak: zdjęcia, filmy, pliki dziennika, itp. Ma szeroki zakres zastosowań, bo może realizować archiwizację danych, można go użyć do analizy dużych zbiorów danych lub do tworzenia kopii zapasowych i odtwarzania awaryjnego. Minio implementuje architekturę mikroprzechowywania (microstorage architecture) w celu utworzenia klastra (poprzez udostępnienie dużej liczby małych, połączonych ze sobą instancji pamięci masowej), dzięki czemu zapewnienia łatwą skalowalność oraz wysoką dostępność.

Oprócz tego integracja powszechnie stosowanego w systemach pamięci masowych mechanizmu kodowania korekcji błędów (error correction coding) Reed-Solomon pozwala na zachowanie operatywności klastra i zapewnia pełne przywrócenie danych nawet w przypadku awarii połowy dostępnych instancji Minio.

Poniżej przedstawiamy przewodnik krok po kroku, w jaki sposób takie klastrowe rozwiązanie pamięci masowej można zainstalować na Cloudlets.Zone. Pokażemy również, jak zarządzać Minio, zarówno poprzez przyjazny dla użytkownika interfejs sieciowy, jak i przez dedykowaną aplikację konsolową.

Instalacja klastra MinIO

1.Z poziomu Panelu Usługi Cloudlets.Zone wybierz Marketplace w górnym menu i wyszukaj Minio (grupa: "Menadżer repozytorium i plików").

2. Określ wymagane parametry dla tworzonego klastra, wypełniając następujące pola:

  • Liczba węzłów - wybierz wymagany rozmiar klastra, spośród predefiniowanych opcji 1 (środowiska testowe), 4, 8 lub 16 węzłów Minio (środowiska produkcyjne). Dla każdego węzła utworzony zostanie osobny kontener, a każdy kontener rozdystrybuowany zostanie między dostępne serwery sprzętowe, celem uzyskania wysokiej dostępności.

  • Środowisko - wpisz preferowaną nazwę klastra Minio, która wraz z domeną platformy będzie stanowić wewnętrzną nazwę środowiska [{nazwa-klastra}.node.cloudlets.zone]

  • Nazwa wyświetlana - opcjonalnie dodaj łatwą nazwę, która będzie wyświetlana w Panelu Usługi.

Gdy wszystko będzie gotowe, kliknij instaluj.

3. Poczekaj kilka minut, aż platforma automatycznie utworzy i skonfiguruje klaster. Po zakończeniu tej operacji system poinformuje Cię o pomyślnej instalacji, wyświetlając komunikat w Panelu Usługi.

Poza tym, otrzymasz maile ze szczegółami instalacji oraz poświadczeniami. Możesz też od razu kliknąć link wyświetlony w oknie powiadomień, aby uzyskać szybkie przekierowanie do Panelu Administracyjnego Minio.

4. Po przejściu do strony startowej środowiska Minio otworzy się okno, w którym należy wpisać klucz dostępu i klucz tajny (Access Key & Secret Key). Zmiana kluczy nie jest możliwa z poziomu Panelu aplikacji. Zobacz jak zmienić poświadczenia.

5. Teraz możesz już zarządzać swoimi plikami za pomocą przyjaznego interfejsu. Na przykład użyj przycisku + w prawym dolnym rogu, aby utworzyć nowy zasobnik i przesłać potrzebne pliki do magazynu.

Domyślna konfiguracja zakłada, że połączenie z klastrem Minio jest ustanawiane za pośrednictwem Shared Load Balancer. Ten element infrastruktury ma ograniczenie rozmiaru przesyłanego pliku do 512 MB. Aby operować z większymi plikami, należy dołączyć publiczny adres IP do co najmniej jednego z węzłów klastra. Dodanie publicznego adresu IP zapewni dodatkowe możliwości. Na przykład, umożliwi użycie własnej nazwy domeny oraz dołączenie własnego certyfikatu SSL.

To tyle! Twój niezawodny klaster pamięci masowej jest gotowy do pracy :)

Jak zmienić poświadczenia?

  1. Jeśli zechcesz zmienić wygenerowany przez platformę klucz tajny i klucz dostępu (Access Key & Secret Key) należy to zrobić z poziomu Panelu Usługi Cloudlets.Zone klikając "Zmienne" (Zmienne środowiskowe) w menu serwera aplikacji.

2. Modyfikujemy pola MINIO_ACCESS_KEY oraz ewentualnie MINIO_SECRET_KEY.

3. Pamiętaj aby po edycji kliknąć przycisk Zastosuj. System potwierdzi przyjęcie zmiany.

4. Aby nowe poświadczenia zaczęły obowiązywać należy jeszcze zrestartować kontenery MinIO. Użyj opcji "Uruchom ponownie kontenery". Restart można przeprowadzić sekwencyjnie.

Po restarcie zaczną obowiązywać nowe poświadczenia.

Instalacja klienta MinIO

Aby zarządzać danymi za pośrednictwem terminala, trzeba uzyskać dostęp do swojego klastra pamięci masowej Minio za pośrednictwem dedykowanego klienta konsoli.

1.W tym celu pobierz klienta Minio z oficjalnej strony internetowej i zainstaluj.

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

2. Utwórz alias lokalny dla magazynu Minio za pomocą następującego polecenia:

./mc config host add {storage} {cluster_domain} {access_key} {secret_key}

  • {storage} - lokalny alias dla Twojego klastra Minio (np. super-minio)

  • {cluster_domain} - nazwa domeny Twojego klastra pamięci masowej Minio (w naszym przypadku: https://minio-klaster.node.cloudlets.zone) lub jego publiczny adres IP (w następującym formacie: http://212.127.94.60).

  • {access_key} i {secret_key} - odpowiednie poświadczenia dostępu do klastra (klucze znajdziesz w mailu z poświadczeniami).

Poniżej przykład jako kontynuacja prezentacji naszego środowiska demonstracyjnego. Pamiętaj by podstawić własne dane w polach: aliasu i domeny oraz użyć własnych poświadczeń!

./mc config host add minio-klaster https://minio-klaster.node.cloudlets.zone 9CCfjQk991 HcckywIoQ8

2. Następnie utworzyć należy nowy zasobnik, w którym będą przechowywane Twoje dane.

./mc mb {storage}/{bucket}

Zastąp symbol zastępczy {bucket} preferowaną nazwą (np. pojemnik). W naszym środowisku demonstracyjnym będzie to:

./mc mb minio-klaster/zasobnik

3. Teraz już możesz przesłać dowolny plik lub folder (po prostu dodaj odpowiednią flagę -r ) na swój serwer magazynu, używając następującego polecenia:

./mc cp {upload} {storage}/{bucket}

./mc cp ~/tmp/Raport_Best_in_Cloud.pdf minio-klaster/zasobnik

W tym przypadku symbol zastępczy {upload} to ścieżka do folderu (pliku), który powinien zostać przesłany. W naszym przykładzie przesłaliśmy plik Raport_Best_in_Cloud.pdf z folderu tmp na komputerze do repozytorium klastra Minio.

Plik wylądował na serwerze.

Więcej informacji o konfiguracji klienta Minio znaleźć można w oficjalnej dokumentacji. Polecamy także pełną dokumentację projektu MinIO.

Minio jest kompatybilny z AWS CLI do pracy z usługami przechowywania danych w chmurze AWS S3. Obsługuje także zestaw bibliotek Java API do implementacji niektórych złożonych przepływów danych.

Skalowanie Klastra MinIO

Klaster Minio zużywa mniej niż 1 cloudlet na węzeł w trybie bezczynności (co odpowiada 128 MiB pamięci RAM i 400 MHz procesora). Domyślna instalacja Minio ma ustawiony limit skalowania pionowego na 16 cloudletów (tj. 2 GiB pamięci RAM i 6,4 GHz procesora). Limit można zwiększy, bo każdy kontener na platformie Cloudlets.Zone można salować do 256 Cloudletów. W efekcie, jesteśmy w stanie obsłużyć bardzo duże piki ruchu. Warto zwrócić uwagę, że stosujemy rozliczenia za rzeczywiste użycie, a nie za limity, czyli opłata naliczona zostanie tylko za użyte zasoby.

W naszym przykładzie zastosowaliśmy instalację klastrową z 4 węzłami Minio. W tym przypadku, sumaryczne użycie pamięci RAM w trybie bezczynności (bez podłączonych klientów) wyniosło ok. 700 MiB.

Klaster Minio zapewnia zaawansowaną ochronę danych przed awariami sprzętu i cichym uszkodzeniem danych dzięki zastosowaniu kodu kasującego (erasure code) i sum kontrolnych. W efekcie, dostęp do danych będzie możliwy nawet w przypadku awarii połowy instancji klastra!

Oczywiście, wszystko ma swoją cenę. Aby zapewnić taki poziom nadmiarowości, tylko 50% całkowitej przestrzeni dyskowej klastra jest dostępne do użytku. Na przykład, jeśli hostujesz 4 węzły Minio z limitem 100 GB na kontener (wymaganą ilość można również dostosować za pomocą kreatora topologii), Twój klaster pamięci S3 będzie w stanie przechowywać 50% * 4 * 100 GB, co odpowiada 200 GB danych.