MinIo dla najmniejszych

MinIO — doskonałe rozwiązanie, gdy trzeba łatwo i szybko zorganizować przechowywanie obiektów. Prosta konfiguracja, wiele platform i dobre osiągi przyczyniły się do jego popularności. Dlatego miesiąc temu ogłosiliśmy jego kompatybilność. Veeam Backup & Replication i MinIO. W tym ważną funkcję, jaką jest Immutability. W rzeczywistości MinIO ma cały sekcja w dokumentacji dotyczącej naszej integracji.

Dlatego dzisiaj porozmawiamy o tym, jak:

  • Szybko skonfigurować MinIO.
  • Nieco wolniej skonfigurować MinIO, ale znacznie lepiej.
  • Użyć go jako Archive Tier dla skalowalnego repozytorium Veeam SOBR.

MinIo dla najmniejszych

Kim ty jesteś?

Krótki wstęp dla tych, którzy nie mieli do czynienia z MinIO. To opensource’owe przechowywanie obiektów, zgodne z API Amazon S3. Wydawane na licencji Apache v2 i trzymające się filozofii spartańskiego minimalizmu.

Oznacza to, że nie ma rozbudowanego GUI z pulpitami nawigacyjnymi, wykresami i licznymi menu. MinIO uruchamia swój serwer jedną komendą, na którym można po prostu przechowywać dane, wykorzystując pełnię mocy API S3. Ale trzeba zauważyć, że ta prostota może być złudna, gdy chodzi o zasoby. RAM i CPU są używane doskonale, ale szczegóły będą podane później. A na marginesie, takie maszyny jak FreeNAS i TrueNAS działają na bazie MinIO.

Na tym wstęp można zakończyć.

Konfiguracja MinIO jest bardzo szybka

Jest tak szybka, że omówimy ją dla Windows i Linux. Są też opcje dla Dockera, Kubernetes i nawet macOS, ale zasada w każdym przypadku będzie ta sama.

Zatem w przypadku Windows przechodzimy na oficjalną stronę https://min.io/download#/windows i pobieramy najnowszą wersję. Tam również znajduje się instrukcja uruchomienia:

 minio.exe server F:Data

A tam także link do nieco bardziej szczegółowego Szybkiego przewodnika. Nie ma sensu nie wierzyć w instrukcje, dlatego uruchamiamy i otrzymujemy mniej więcej taką odpowiedź.

MinIo dla najmniejszych
Na tym koniec! Przechowalnia działa i można zacząć z nią pracować. Nie żartowałem, mówiąc, że MinIO to minimalizm i po prostu działa. Jeśli przejdziemy do podanej przy uruchamianiu linki, to maksymalnie dostępne tam funkcje to stworzenie kubła. I możemy zacząć pisać dane.

Dla miłośników Linuksa wszystko pozostaje równie proste. Najprostsza instrukcja:


wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data

Wynik będzie nieodróżnialny od tego, co widzieliśmy wcześniej. 

Konfiguracja MinIO jest nieco bardziej sensowna.

Jak rozumiemy, poprzedni akapit to zabawa dla celów testowych. I, mówiąc szczerze, w testowaniu MinIO mamy bardzo szerokie doświadczenie, z czego absolutnie nie wstydzimy się przyznać. Oczywiście, działa, ale wyciąganie tego dalej niż na testowych stoiskach jest wstydliwe. Dlatego bierzemy pilnik w ręce i zaczynamy dopracowywać.

HTTPS

Pierwszy obowiązkowy krok na drodze do produkcji to szyfrowanie. W sieci jest już milion i tysiąc poradników dotyczących dodawania certyfikatów do MinIO, ale ogólny plan jest taki:

  • Tworzymy certyfikat.
  • W przypadku Windows umieszczamy go w C:Users%User%.miniocerts.
  • W przypadku Linux w ${HOME}/.minio/certs. 
  • Restartujemy serwer.

Banale Let’s Encrypt — jest nudne i opisane wszędzie, więc nasza droga to droga samuraja, dlatego w przypadku Windows pobieramy Cygwin., a w przypadku Linux po prostu sprawdzamy, czy mamy zainstalowany openssl. I robimy trochę konsolowej magii:

  • Tworzymy klucze: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key.
  • Tworzymy certyfikat z klucza: openssl req -new -x509 -days 3650 -key private.key -out public.crt.
  • Kopiujemy private.key i public.crt do powyżej wskazanej folderu.
  • Restartujemy MinIO.

Jeśli wszystko poszło zgodnie z planem, w statusie pojawią się mniej więcej takie linijki.

MinIo dla najmniejszych

Włączamy MinIO Erasure Coding.

Najpierw kilka słów o temacie. W skrócie: to programowe zabezpieczenie danych przed uszkodzeniem i utratą. Jak RAID, tylko dużo bardziej niezawodne. Jeśli klasyczny RAID6 może sobie pozwolić na utratę dwóch dysków, to MinIO spokojnie znosi utratę połowy. Bardziej szczegółowo technologia jest opisana w oficjalnym przewodniku.Ale jeśli weźmiemy samą istotę, to to realizacja kodów Reeda-Solomona: wszystkie informacje są przechowywane w postaci bloków danych, do których przypisane są bloki parzystości. I wydaje się, że to już było robione wiele razy, tylko jest jedno ważne „ale”: możemy wyraźnie określić proporcję bloków parzystości do bloków danych dla przechowywanych obiektów.
Chcecie 1:1? Proszę bardzo!
Chcecie 5:2? Żaden problem!

Bardzo ważna funkcja, jeśli używasz jednocześnie kilku węzłów i chcesz znaleźć własny balans między maksymalnym bezpieczeństwem danych a zużytymi zasobami. Z pudełka MinIO używa formuły N/2 (gdzie N to łączna liczba dysków), tj. dzieli twoje dane między N/2 dysków danych i N/2 dysków parzystości. Przetłumaczone na ludzkie: można stracić połowę dysków i odzyskać dane. Ten stosunek jest ustawiany przez Klasa pamięci, pozwalając ci samodzielnie wybrać, co jest ważniejsze: niezawodność czy pojemność.

W przewodniku podano taki przykład: załóżmy, że masz instalację na 16 dyskach i musisz zachować plik o rozmiarze 100 MB. Jeśli używane są ustawienia domyślne (8 dysków na dane, 8 na bloki parzystości), to plik zajmie praktycznie podwójną objętość, tj. 200 MB. Jeśli stosunek dysków wyniesie 10/6, to będzie potrzebne 160 MB. 14/2 — 114 MB.

Inną ważną różnicą w porównaniu do RAID-ów jest to, że w przypadku awarii dysków MinIO będzie działać na poziomie obiektów, odbudowując je jeden po drugim, nie zatrzymując pracy całego systemu. Podczas gdy zwykły RAID będzie musiał odbudować cały wolumen, co zajmie nieprzewidywalną ilość czasu. W pamięci autora szafka dyskowa, która po awarii dwóch dysków musiała być przeliczone przez półtora tygodnia. Było to dość nieprzyjemne.

I ważna uwaga: MinIO dzieli wszystkie dyski dla Erasure Coding na zestawy od 4 do 16 dysków, używając maksymalnie możliwego rozmiaru zestawu. A w przyszłości, jeden element informacji będzie przechowywany tylko w obrębie jednego zestawu.

To wszystko brzmi świetnie, ale jak trudna będzie konfiguracja? Zobaczmy. Bierzemy polecenie do uruchomienia i po prostu wymieniamy dyski, na których należy utworzyć magazyn. Jeśli wszystko zostało zrobione poprawnie, w raporcie zobaczymy liczbę zaangażowanych dysków. I rady, że nie powinno się na jednym hoście dodawać od razu połowy dysków, gdyż to prowadzi do utraty danych.

c:minio>minio.exe server F: G: H: I: J: K:

MinIo dla najmniejszych
Następnie do zarządzania i konfiguracji serwera MinIO potrzebujemy agenta, którego możemy pobrać wszystko tamże z oficjalnej strony.

Aby nie zdrapać palców, za każdym razem wpisując adres i klucze dostępu (i to jest niebezpieczne), wygodnie jest przy pierwszym uruchomieniu od razu stworzyć alias według formuły mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]

mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKE

Można również od razu dodać twój host:

mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEY

A potem stworzymy nierozwijalny bucket za pomocą ładnej komendy

mc mb --debug -l veeamS3/immutable

mc:  PUT /immutable/ HTTP/1.1
Host: 172.17.32.52:9000
User-Agent: MinIO (windows; amd64) minio-go/v7.0.5 mc/2020-08-08T02:33:58Z
Content-Length: 0
Authorization: AWS4-HMAC-SHA256 Credential=minioadmin/20200819/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-bucket-object-lock-enabled;x-amz-content-sha256;x-amz-date, Signature=**REDACTED**
X-Amz-Bucket-Object-Lock-Enabled: true
X-Amz-Content-Sha256: UNSIGNED-PAYLOAD
X-Amz-Date: 20200819T092241Z
Accept-Encoding: gzip
mc:  HTTP/1.1 200 OK
Content-Length: 0
Accept-Ranges: bytes
Content-Security-Policy: block-all-mixed-content
Date: Wed, 19 Aug 2020 09:22:42 GMT
Location: /immutable
Server: MinIO/RELEASE.2020-08-16T18-39-38Z
Vary: Origin
X-Amz-Request-Id: 162CA0F9A3A3AEA0
X-Xss-Protection: 1; mode=block
mc:  Response Time:  253.0017ms

—debug pozwala zobaczyć nie tylko końcową wiadomość, ale również bardziej szczegółowe informacje. 

-l oznacza —with-lock, co oznacza nierozwijalny

Jeśli teraz wrócimy do interfejsu webowego, nasz nowy bucket się tam pojawi.

MinIo dla najmniejszych
Na ten moment to wszystko. Stworzyliśmy zabezpieczone przechowalnię i jesteśmy gotowi do integracji z Veeam.

Można również upewnić się, że wszystko działa doskonale:

c:minio>mc admin info veeamS3

● 172.17.32.52:9000
   Uptime: 32 minutes
   Version: 2020-08-16T18:39:38Z
   Network: 1/1 OK
   Drives: 6/6 OK
0 B Used, 1 Bucket, 0 Objects
6 drives online, 0 drives offline

MinIO i Veeam

Uwaga! Jeśli z jakiegoś niewiarygodnego powodu chcesz pracować przez HTTP, to w lokalizacji HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication stwórz klucz DWORD SOBRArchiveS3DisableTLS. Ustaw jego wartość na 1 i pamiętaj, że zdecydowanie nie akceptujemy tego zachowania i nikomu go nie polecamy.

Uwaga jeszcze raz! Jeśli z powodu jakiegoś nieporozumienia nadal używasz Windows 2008 R2, to podczas próby podłączenia MinIO do Veeam prawdopodobnie otrzymasz mniej więcej taki błąd: Failed to establish connection to Amazon S3 endpoint. Można to naprawić oficjalną łatką od Microsoft.

Cóż, przygotowania zakończone, otwórzmy interfejs VBR i przejdźmy do zakładki Backup Infrastructure, gdzie uruchomimy kreator dodawania nowego repozytorium.

MinIo dla najmniejszych
Oczywiście interesuje nas przechowywanie obiektów, a dokładniej zgodne z S3. W otwartym kreatorze podajemy nazwę, przechodzimy przez kroki z podaniem adresu i danych logowania. Jeśli jest to konieczne, nie zapominajmy podać bramy, przez którą będą kierowane żądania do przechowalni.

MinIo dla najmniejszych
Następnie wybieramy bucket, folder i zaznaczamy opcję Make recent backups immutable. Lub nie zaznaczamy. Ale ponieważ stworzyliśmy przechowalnię z obsługą tej funkcji, byłoby grzechem nie skorzystać.

MinIo dla najmniejszych
Next > Finish i cieszmy się wynikiem.

Teraz musimy dodać go do repozytorium SOBR jako Capacity Tier. W tym celu możemy stworzyć nowy lub edytować istniejący. Interesuje nas krok Capacity Tier.

MinIo dla najmniejszych
Tutaj musimy wybrać, według jakiego scenariusza będziemy działać. Wszystkie opcje są dość dobrze opisane w innym artykuł, więc nie będę się powtarzać.

A po zakończeniu pracy kreatora zadania dotyczące kopiowania lub przenoszenia kopii zapasowych zostaną automatycznie uruchomione. Jednak jeśli nie planujesz od razu obciążać wszystkich systemów, koniecznie ustaw odpowiednie interwały pracy przyciskiem Window.

MinIo dla najmniejszych
I, oczywiście, można stworzyć osobne zadania Backup Copy. Niektórzy uważają, że to nawet wygodniejsze, ponieważ są one nieco bardziej przejrzyste i przewidywalne dla użytkownika, który nie chce zagłębiać się w szczegóły działania capacity tier. A szczegółów tam jest sporo, więc jeszcze raz polecam odpowiedni artykuł pod linkiem powyżej.

I na koniec — odpowiedź na podchwytliwe pytanie: co się stanie, jeśli spróbujesz usunąć kopię zapasową z Immutable storage?

Oto odpowiedź:

MinIo dla najmniejszych
Na tym to wszystko na dzisiaj. Zgodnie z tradycją, oto lista przydatnych tematów na ten temat:

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster