Розглядаєте можливість використання власного серверного рішення для зберігання об’єктів?
Ймовірно, так.
Сьогодні існує велика кількість хмарних сховищ, таких як AWS S3 та інші. Проте, якщо ваше завдання – розмістити дані безпосередньо на сервері, MinIO стане вашим надійним помічником у власних дата-центрах.
MinIO – це розповсюджене програмне забезпечення з відкритим вихідним кодом для розподіленого зберігання об’єктів, сумісне з S3. Воно позиціонується як рішення корпоративного рівня, відоме своєю вражаючою продуктивністю.
MinIO знайде застосування як у простих веб-застосунках, так і у великих системах обробки даних для аналітики та машинного навчання. Його функціонал покриває широкий спектр сценаріїв використання:
- Стандартне сховище для файлів у плоскій структурі
- Розподіл даних між різними хмарними середовищами
- Аварійне відновлення даних
- Аналіз даних
Чи є це програмне забезпечення важким і ресурсомістким?
Зовсім ні. Його розмір становить лише близько 50 МБ, що робить його ідеальним для використання з Kubernetes. MinIO зберігає дані та метадані як об’єкти, усуваючи необхідність у додатковій базі даних або спеціалізованому програмному забезпеченні для керування метаданими, що позитивно впливає на продуктивність.
Нижче наведена архітектура системи, взята з офіційного сайту.
Давайте розглянемо деякі з ключових особливостей MinIO.
- Висока продуктивність – це його візитна картка. Здатний забезпечувати швидкість читання/запису до ~170 ГБ/с. Вражаюче, чи не так?
- Масштабованість – можливість кластеризації та масштабування у міру потреби
- Орієнтованість на хмарні технології
- Захист даних за допомогою методу Erasure code
- Підтримка декількох методів шифрування, включаючи AES-CBC, AES-256-GCM, ChaCha20
- Сумісність з KMS
- Аутентифікація додатків та користувачів
- Сповіщення про події
- Об’єднання з etcd та CoreDNS
MinIO – це відмінний вибір для програмно-визначеного сховища. Давайте розглянемо процес його встановлення.
Інсталяція сервера MinIO
Ви можете встановити MinIO на Linux, Windows, macOS, а також використовувати Kubernetes. Якщо ви бажаєте зібрати його з вихідного коду, то за наявності встановленого Golang, це також можливо.
У цьому прикладі я встановлю MinIO на CentOS, який розміщено на Kamatera.
- Увійдіть на сервер.
- Створіть каталог у необхідній файловій системі, наприклад, “minio-server”.
- Перейдіть до створеного каталогу та виконайте команду wget:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
Після цього буде завантажено бінарний файл, який буде виглядати приблизно так:
-rw-r--r-- 1 root root 48271360 Oct 18 21:57 minio
Зробіть файл виконуваним за допомогою команди chmod:
chmod 755 minio
Тепер запустимо MinIO як сервер:
./minio server /data &
Параметр `/data` вказує на файлову систему, де MinIO буде зберігати об’єкти.
Запуск відбувається досить швидко, і ви побачите інформацію про запуск, подібну до наступної:
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'
Спробуємо отримати доступ до MinIO через браузер, використовуючи облікові дані за замовчуванням: `minioadmin:minioadmin`.
Інтерфейс користувача виглядає досить лаконічно та зрозуміло, але насамперед нам потрібно змінити облікові дані адміністратора за замовчуванням, оскільки це становить загрозу безпеці. Зміна облікових даних адміністратора через браузер неможлива, для цього необхідно використовувати змінні середовища.
Для зміни облікових даних MinIO за замовчуванням необхідно експортувати змінні `MINIO_ACCESS_KEY` та `MINIO_SECRET_KEY`, як показано нижче, та перезапустити MinIO:
export MINIO_ACCESS_KEY=techukraine.net export MINIO_SECRET_KEY=geekpassword ./minio server /data &
Після цього ви не повинні бачити попередження про виявлення облікових даних за замовчуванням.
Спробуємо завантажити кілька файлів.
- Натисніть на значок “+” у нижньому правому куті та створіть відро (bucket).
- Я завантажив тестовий файл, і він одразу з’явився у браузері.
І на сервері:
[[email protected] geekflare]# ls -ltr total 4 -rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt [[email protected] geekflare]#
При натисканні на кнопку “Поділитися файлом” у веб-інтерфейсі, ви отримаєте посилання для спільного доступу та зможете встановити термін його дії.
Клієнт MinIO
Клієнт MinIO – це потужний інструмент на кшталт `aws-cli`, що дозволяє керувати вашим сховищем. Клієнт доступний для Windows, macOS та Linux.
Щоб встановити його в Linux, виконайте наступні команди:
wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod 755 mc
Виконайте команду `mc`, щоб переглянути довідку по командам:
[[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] ~]#
Спробуємо переглянути список файлів, які я завантажив, за допомогою команди `mc`.
Спочатку нам потрібно встановити псевдонім для сховища, яким ми хочемо керувати:
[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ techukraine.net geekpassword Added `minio` successfully. [[email protected] ~]#
- `minio` – це псевдонім, ви можете змінити його на будь-який зручний для вас.
- Замініть HTTP-кінцеву точку на вашу.
- Замініть ключ доступу та секретний ключ на ваші.
Для отримання списку використаємо команду `ls`, як показано нижче:
[[email protected] ~]# ./mc ls --recursive minio [2020-10-19 11:09:06 UTC] 11B techukraine.net/MinIO-Test.txt [[email protected] ~]#
Чудово, все працює!
За допомогою клієнта можна робити практично все. Ви можете керувати не лише хмарним сховищем MinIO, але й GCS, AWS S3, Azure.
Детальнішу інформацію ви можете знайти у цьому короткому посібнику по клієнту.
MinIO SDK
Залежно від вашого технологічного стеку, ви можете програмно взаємодіяти зі сховищем об’єктів, використовуючи SDK. MinIO підтримує Go, Python, Node.js, .NET, Haskell та Java.
Шлюз MinIO
Використовуйте шлюз MinIO з S3, Azure, NAS, HDFS, щоб використовувати переваги браузера MinIO та кешування на диску.
Висновок
Якщо ви шукаєте приватне, гібридне або мультихмарне сховище об’єктів, MinIO є дуже перспективним варіантом. Спробуйте, і ви будете вражені. Для тестування ви можете скористатися MinIO VM на Kamatera або встановити його самостійно на будь-якому хмарному сервері.