> For the complete documentation index, see [llms.txt](https://kompendium.cloudlets.zone/kompendium/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kompendium.cloudlets.zone/kompendium/backup/minio-klaster.md).

# MinIO klaster

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

[Minio ](https://minio.io/)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ść.&#x20;

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZIJGE-WV9I0IewpPLW%2F-MZIK0GKtMbWBE42zMt7%2FMinio-cluster-interconnected-storage-instances.png?alt=media\&token=2cc97bd2-e933-4ae4-a833-96c028c4bdd5)

Oprócz tego integracja powszechnie stosowanego w systemach pamięci masowych mechanizmu *kodowania korekcji błędów* (error correction coding) [Reed-Solomon](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction) 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](https://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").&#x20;

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZILKcJZDshs4DJqsOQ%2F-MZIMcleZiCHy0uk9Oac%2FScreenshot%20-%20Cloudlets.Zone%20Panel%20%C2%97%20Mozilla%20Firefo%20\(47\).png?alt=media\&token=91e6641b-14e7-4fb5-87d8-abe59996f81b)

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

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZILKcJZDshs4DJqsOQ%2F-MZIMEsRhACxa3A1Rg93%2Fobraz.png?alt=media\&token=2e3f0f9f-6e1e-407e-9269-de3decb0d698)

* **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.&#x20;

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZISsGSLbAWg9kFmp4z%2F-MZITBH6ENsAQuO94Drg%2Fobraz.png?alt=media\&token=79a8ca09-6c70-400e-a1ca-5c8d0cbc8af0)

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](https://kompendium.cloudlets.zone/aplikacje/minio-klaster#jak-zmienic-poswiadczenia).

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZIW9CkdDiqC4GgFmiK%2F-MZIWx2eH2bCcoRP5gsn%2Fobraz.png?alt=media\&token=0a23b6f5-47cd-4a3e-ad1e-31bffeac1cbc)

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.

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZIchzOhKGCW1P_p-ks%2F-MZIf4gG_G9ZslMsIXFX%2Fobraz.png?alt=media\&token=e7f2b81d-d54c-4e62-b194-698fcf06050a)

{% hint style="info" %}
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.&#x20;
{% endhint %}

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZIh8vdbZqn4yGVU7Xs%2F-MZIh_M0ESY4BGnZumem%2Fobraz.png?alt=media\&token=009ce425-ace5-44c2-a2f5-fc3c7f455815)

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.

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZMnSTLCVtvOp9_Wgvn%2F-MZMoOky7C7XK5LXOw8p%2Fobraz.png?alt=media\&token=ef5efb39-5482-445b-8b91-b50639d80e24)

2\. Modyfikujemy pola `MINIO_ACCESS_KEY` oraz ewentualnie `MINIO_SECRET_KEY`.

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZMqHnJdiE7jTue_q2w%2F-MZMrJz_IUqOysljSujA%2FScreenshot%20-%20Cloudlets.Zone%20Panel%20%C2%97%20Mozilla%20Firefo%20\(56\).png?alt=media\&token=c10ed075-ebe4-4b0c-b1ce-7b4f24bb76bd)

3\. Pamiętaj aby po edycji kliknąć przycisk **Zastosuj.** System potwierdzi przyjęcie zmiany.&#x20;

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZMrY8pvdLnTRBTkmLO%2F-MZMrxBhpogzGRww4yjK%2Fobraz.png?alt=media\&token=d35f843e-6a00-464d-8f36-cde603427dba)

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.

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZMswrlefYb-eTzBHKl%2F-MZMv9DnAZamiAdim0Ds%2FZrzut%20ekranu%202021-04-28%2011.57.07.png?alt=media\&token=7fae4959-dbff-4c89-8447-b0cd4b1b4ce4)

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.&#x20;

1.W tym celu pobierz [klienta Minio](https://min.io/download#/linux) z oficjalnej strony internetowej i zainstaluj.

```bash
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).

{% hint style="warning" %}
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ń!**
{% endhint %}

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

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZIv5xrQ9PzHVU9K_2T%2F-MZIvGdsRzUm9JS-I0GE%2Fobraz.png?alt=media\&token=0d3f7572-7c24-4d33-9d11-624520ca3dcc)

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

&#x20;`./mc mb`` `**`{storage}`**`/`**`{bucket}`**  &#x20;

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

```bash
./mc mb minio-klaster/zasobnik
```

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZIwaCgv9ycguyUr0nV%2F-MZIyPAtV8W1BiN7CzMq%2Fobraz.png?alt=media\&token=5f6a70f0-cb86-44ce-8ae5-b3c44d574df3)

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:

&#x20;`./mc cp`` `**`{upload} {storage}`**`/`**`{bucket}`**&#x20;

```bash
./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.

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZIzrLkJU6YfDjYDqNS%2F-MZJ0mrLpilg1peRR8My%2Fobraz.png?alt=media\&token=82c63ec0-d169-4106-bece-bcfdb7594652)

Plik wylądował na serwerze.

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZJ0rPOyepSf_Hh8V8N%2F-MZJ10SfaoRF_-0JZgpi%2Fobraz.png?alt=media\&token=0c795738-e714-4811-adaa-02e96b32fde6)

{% hint style="info" %}
Więcej informacji o konfiguracji klienta Minio znaleźć można w [oficjalnej dokumentacji](https://docs.min.io/docs/minio-client-complete-guide). Polecamy także [pełną dokumentację ](https://docs.min.io/?ref=ob)projektu MinIO.&#x20;

Minio jest kompatybilny z [AWS CLI](https://docs.minio.io/docs/aws-cli-with-minio) do pracy z usługami przechowywania danych w chmurze AWS S3. Obsługuje także zestaw bibliotek [Java API](https://docs.minio.io/docs/java-client-quickstart-guide) do implementacji niektórych złożonych przepływów danych.
{% endhint %}

## Skalowanie Klastra MinIO

Klaster Minio zużywa mniej niż 1 [cloudlet ](https://kompendium.cloudlets.zone/faq/pytania-i-odpowiedzi#co-to-jest-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](https://kompendium.cloudlets.zone/faq/pytania-i-odpowiedzi#jak-naliczane-sa-oplaty), 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.&#x20;

![](https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWnpSFLdAw8lYDKrSEr%2F-MZJ6ltOhOAaP0ziXE86%2F-MZJ8ILObnBHk9siUdGI%2FZrzut%20ekranu%202021-04-27%2018.22.59.png?alt=media\&token=6ddd064c-06f0-45f5-8124-70fc7b94eb8d)

Klaster Minio zapewnia zaawansowaną ochronę danych przed awariami sprzętu i cichym uszkodzeniem danych dzięki zastosowaniu kodu kasującego ([erasure code](https://docs.min.io/docs/minio-erasure-code-quickstart-guide)) 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.

<figure><img src="https://1972667440-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MWnpSFLdAw8lYDKrSEr%2Fuploads%2FI7Dg7BaG8ZelTeayovPJ%2FChmura%20(4).png?alt=media&amp;token=f8fe7719-9dcc-409a-9749-80824302dc5e" alt=""><figcaption></figcaption></figure>

{% embed url="<https://cloudlets.zone/rejestracja/?utm_campaign=jitsi&utm_medium=kompendium&utm_source=kompendium>" %}
