MinIo для найменших

MinIO – чудове рішення, коли треба легко та просто організувати об'єктне сховище. Елементарне налаштування, безліч платформ і хороша продуктивність зробили свою справу на ниві народного кохання. Тож у нас не було іншого шляху, як місяць тому заявити про сумісність Veeam Backup & Replication та MinIO. Включно з такою важливою функцією, як Immutability. Насправді у MinIO є цілий розділ у документації, присвячений нашій інтеграції.

Тому сьогодні ми поговоримо про те, як:

  • Налаштувати MinIO дуже швидко.
  • Налаштувати MinIO трохи менш швидко, але значно якісніше.
  • Використовувати його як Archive Tier для репозиторія Veeam SOBR, що масштабується.

MinIo для найменших

Що ти?

Коротка вступна для тих, хто не стикався з MinIO. Це опенсорсне об'єктне сховище, сумісне з Amazon S3 API. Випускається під ліцензією Apache v2 та дотримується філософії спартанського мінімалізму.

Тобто у нього немає розлогого GUI з дашбордами, графіками та численними меню. MinIO просто запускає свій сервер однією командою, на якому можна просто зберігати дані, використовуючи всю потужність S3 API. Але треба зауважити, що ця простота може бути оманлива, коли мова заходить про використовувані ресурси. RAM і CPU поглинаються відмінно, але про причини буде нижче. І, до речі, такі комбайни, як FreeNAS і TrueNAS під капотом використовують саме MinIO.

На цьому вступ можна і закінчувати.

Налаштування MinIO дуже швидко

Налаштування його настільки швидке, що ми розглянемо його для Windows та Linux. Є варіанти і для докера, і для кубернетису, і навіть для макосі, але скрізь буде однаковий.

Отже, у випадку Windows йдемо на офіційний сайт https://min.io/download#/windows і качаємо останню версію. Там же спостерігаємо інструкцію із запуску:

 minio.exe server F:Data

І там же посилання на трохи більш розгорнутий Короткий посібник. Інструкції не вірити немає сенсу, тому запускаємо і отримуємо приблизно таку відповідь.

MinIo для найменших
На цьому все! Сховище працює, і можна починати з ним працювати. Я не жартував, коли казав, що MinIO це мінімалізм і просто працює. Якщо пройти по запропонованому запуску посилання, то максимум доступних там функцій - це створити бакет. І можна розпочинати писати дані.

Для любителів лінуксів все залишається не менш простим. Найпростіша інструкція:


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

Результат буде відмінним від баченого раніше. 

Налаштування MinIO трохи більш осмислене

Як ми розуміємо, попередній абзац — це пустощі для тестових цілей. І, скажемо чесно, саме для тестування MinIO у нас використовується дуже широко, в чому нам зовсім не соромно зізнатися. Звичайно, воно працює, але далі за тестові стенди виносити таке соромно. Тому беремо в руки напилок і починаємо доводити до ладу.

HTTPS

Перший обов'язковий крок на шляху до продакшену – шифрування. У мережі вже є мільйон та тисяча мануалів з додавання сертифікатів до MiniIO, але загальний план у них такий:

  • Створюємо сертифікат
  • У випадку Windows кладемо його в C:Users%User%.miniocerts
  • У випадку Linux ${HOME}/.minio/certs 
  • Перезапускаємо сервер

Банальний Let's Encrypt - це нудно і описано скрізь, так що наш шлях - це шлях самурая, тому у випадку Windows завантажуємо Cygwin, А у випадку Linux просто перевіряємо, що у нас встановлений openssl. І робимо трохи консольної магії:

  • Створюємо ключі: openssl ecparam-genkey-name prime256v1 | openssl ec -out private.key
  • Створюємо сертифікат за ключом: openssl req -new -x509 -days 3650 -key private.key -out public.crt
  • Копіюємо private.key і public.crt в папку, вказану вище
  • Перезапускаємо MinIO

Якщо все пройшло як слід, то в статусі з'являться приблизно такі рядки.

MinIo для найменших

Включаємо MinIO Erasure Coding

Спочатку пара слів про сабжу. У двох словах: це програмний захист даних від пошкодження та втрати. Як рейд, лише набагато надійніше. Якщо класичний RAID6 може дозволити собі втратити два диски, MinIO спокійно переживає втрату половини. Більш детально технологія описана в офіційному гайді. Але якщо взяти саму суть, це реалізація кодів Ріда-Соломона: вся інформація зберігається як блоків даних, яких є блоки парності. І начебто це вже було зроблено багато разів, тільки є важливе «але»: ми можемо явно вказувати співвідношення блоків парності до блоків даних для об'єктів, що зберігаються.
Бажаєте 1:1? Будь ласка!
Хочете 5:2? Без проблем!

Дуже важлива функція, якщо ви використовуєте відразу кілька нід і хочете знайти свій власний баланс між максимальною безпекою даних та витраченими ресурсами. З коробки MinIO використовує формулу N/2 (де N — загальна кількість дисків), тобто. ділить ваші дані між N/2 дисками даних та N/2 дисками парності. Перекладаючи на людську: можна втратити половину дисків та відновити дані. Це співвідношення задається через Клас зберігання, дозволяючи вам самостійно вибрати, що важливіше: надійність чи ємність.

У гайді наведено такий приклад: припустимо, що у вас інсталяція на 16 дисків і вам потрібно зберегти файл розміром 100 Мб. Якщо застосовуються параметри за умовчанням (8 дисків під дані, 8 під блоки парності), то файл у результаті займе майже подвійний обсяг тобто. 200 Мб. Якщо відношення дисків буде 10/6, знадобиться 160 Мб. 14/2 - 114 Мб.

Інша важлива відмінність від рейдів: у разі випадання дисків MinIO працюватиме на рівні об'єктів, відновлюючи один за одним, не зупиняючи роботу всієї системи. У той час, як звичайний рейд буде змушений відновлювати весь volume, що займе непередбачувану кількість часу. На пам'яті автора дискова полиця, яка після випадання двох дисків пішла на перерахунок на півтора тижні. Було дуже неприємно.

І, важливе зауваження: MinIO ділить всі диски Erasure Coding на сети від 4х до 16ти дисків, використовуючи максимально можливий розмір сету. І надалі, один елемент інформації зберігатиметься лише в межах одного сету.

Звучить все це дуже здорово, але наскільки складним буде налаштування? Давайте подивимося. Беремо команду для запуску та просто перераховуємо диски, на яких потрібно створити сховище. Якщо все зроблено правильно, то в репорті побачимо кількість задіяних дисків. І порада, що не варто на один хост додавати відразу половину дисків, бо це до втрати даних.

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

MinIo для найменших
Далі для управління і налаштування сервера MinIO нам знадобиться агент, завантажити який можна все там же з офіційного сайту.

Щоб не прати пальці, щоразу набираючи адресу та ключі доступу (та й небезпечно це), зручно при першому запуску відразу створити або за формулою mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]

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

Або ж можна відразу додати ваш хост:

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

А потім створимо immutable бакет гарною командою

mc mb --debug -l veeamS3/immutable 

mc: <DEBUG> 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: <DEBUG> 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: <DEBUG> Response Time:  253.0017ms

-debug дозволяє бачити непросто підсумкове повідомлення, а більш розгорнуту інформацію. 

-l означає -with-lock, що означає immutable

Якщо тепер повернутися до веб-інтерфейсу, то там з'явиться наш новий бакет.

MinIo для найменших
На даний момент це все. Ми створили захищене сховище та готові переходити до інтеграції з Veeam.

Можна ще переконатися, що все працює на відмінно:

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 та Veeam

Увага! Якщо з якоїсь з неймовірних причин ви хочете працювати через HTTP, то за адресою HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication створіть DWORD ключ SOBRArchiveS3DisableTLS. Виставте його значення 1 і пам'ятайте, що ми таку поведінку рішуче не схвалюємо і нікому не радимо.

Увага ще раз! Якщо через якесь непорозуміння ви продовжуєте використовувати Windows 2008 R2, то при спробі підключити MinIO до Veeam ви отримаєте приблизно таку помилку: Failed to establish connection to Amazon S3 endpoint. Лікується це офіційним патчем від Microsoft.

Ну що ж, з приготуванням закінчено, відкриємо інтерфейс VBR і перейдемо на вкладку Backup Infrastructure, де викличемо майстер додавання нового репозиторію.

MinIo для найменших
Само собою цікавить нас Object storage, а саме S3 Compatible. У візарді, що відкрився, задаємо ім'я, проходимо кроки із зазначенням адреси та облікового запису. Якщо потрібно, то не забуваємо вказати гейт, через який будуть проксуватись запити до сховища.

MinIo для найменших
Після чого вибираємо бакет, папку та ставимо галочку Make recent backups immutable. Або не ставимо. Але якщо ми зробили сховище з підтримкою цієї функції, то гріх буде не скористатися.

MinIo для найменших
Next > Finish та насолоджуємося результатом.

Тепер треба додати його до SOBR репозиторію як Capacity Tier. Для цього або створюємо новий, або редагуємо існуючий. Нас цікавить крок Capacity Tier.

MinIo для найменших
Тут нам треба вибрати, за яким сценарієм ми працюватимемо. Всі варіанти досить добре описані в іншій статті, так що не повторюватимуся

А після завершення роботи майстра будуть автоматично запущені завдання копіювання або перенесення бекапів. Але якщо ваші плани не входить так відразу видати навантаження на всі системи, то обов'язково задайте допустимі інтервали для роботи по кнопці Window.

MinIo для найменших
І, ясна річ, можна зробити окремі Backup Copy завдання. Деякі вважають, що так навіть зручніше, тому що вони дещо прозоріші і передбачувані для користувача, що не бажає вникати в подробиці роботи капасити тиру. А подробиць там вистачає, тож ще раз рекомендую відповідну статтю за посиланням вище.

І насамкінець — відповідь на підступне питання: що ж буде, якщо все ж таки взяти і спробувати видалити бекап з Immutable сторожа?

Ось відповідь:

MinIo для найменших
На цьому сьогодні все. За вірною традицією, ловіть список корисних топіків на тему:

Джерело: habr.com

Додати коментар або відгук