opened image

MinIO - обзор и установка на Linux сервер

Что под капотом у MinIO?

 

Объем данных, которые ежедневно обрабатывают современные приложение растет в геометрической прогрессии. Фотографии пользователей, резервные копии, документы, медиафайлы и данные аналитических систем требуют надежного и масштабируемого способа хранения. Для решения этой задачи всё чаще используются объектные хранилища, работающие по стандарту S3.

 

S3 или Simple Storage Service - это протокол доступа к объектному хранилищу, изначально разработан компанией Amazon для сервиса Amazon S3. В отличие от традиционных файловых систем, где данные организованы в виде папок и файлов, объектное хранилище сохраняет информацию в виде отдельных объектов. Каждый объект содержит сам файл, уникальный идентификатор и набор метаданных. Такая архитектура упрощает масштабирование, обеспечивает высокую отказоустойчивость и позволяет эффективно работать с большими объемами данных.

 

Данная статья посвящена открытой платформе объектного хранения данных с полной поддержкой S3 API - речь о инструменте MinIO. Проект позволяет развернуть собственное S3-хранилище на сервере, локально или внутри kubernetes-кластера. MinIO отличается простой установкой, высокой производительностью и минимальными требованиями к ресурсам, благодаря чему широко используется как в небольших проектах, так и в корпоративных средах.

 

Одним из наиболее распространенных сценариев использования MinIO является хранение резервных копий. Многие системы резервного копирования поддерживают отправку бэкапов в S3 хранилища. Вместо использования сторонних облачных сервисов Вы можете развернуть собственный сервер с MinIO и хранить резервные копии внутри своей инфраструктуры, сохраняя полный контроль над данными и снижая расходы на облачное хранение.

 

Также, такое решение используют достаточно часто для хранения файлов веб-приложений и сайтов. Например, интернет-магазин может сохранять изображения товаров, документы и пользовательские загрузки не на локальном диске веб-сервера, а в отдельном S3 хранилище. Это упрощает масштабирование проекта, снижает нагрузку на основной сервер и позволяет нескольким приложениям одновременно использовать единое хранилище данных.

 

Установка MinIO

 

Теперь рассмотрим нативную установку на Ваш сервер. Для демонстрации установки мы будем использовать чистый Linux-сервер с ОС Ubuntu 22. Для тестового развёртывания обычно достаточно 2 vCPU, около 4 ГБ оперативной памяти и нескольких гигабайт свободного места на диске. Если вы планируете использовать MinIO для хранения резервных копий или файлов веб-приложений, рекомендуется выбирать VPS или выделенный сервер с SSD-накопителями.

 

Сперва обновим пакеты и систему:

apt update && apt upgrade -y

Установим необходимую утилиту для продолжения скачивания: 

apt install wget -y

MinIO распостраняется как единый бинарный файл, поэтому не требует установки большого количества зависимостей. Установим сам бинарник, перенесем его в ответственную папку и сделаем исполняемым.

wget https://dl.min.io/server/minio/release/linux-amd64/minio 
mv minio /usr/localbin/
chmod +x /usr/local/bin/minio

Создадим системного пользователя для MinIO - это рекомендуется с точки зрения безопасности, чтоб сервис не работал под пользователем root. Также создаем для этого пользователя отдельную папку и даем права на неё.

sudo useradd -r minio-user -s /sbin/nologin 
mkdir /home/minio-user
chown minio-user:minio-user /home/minio-user

Сейчас мы создадим каталог, в котором будут хранится все объекты загруженные в MinIO - создаем отдельную директорию и награждаем правами пользователя MinIO на эту директорию:

mkdir /data
chown minio-user:minio-user /data

Создадим systemd-сервис для удобного администрирования службы MinIO. В новом файле вставляем содержимое ниже: обратите внимание, сразу добавляем параметр “”--console-address “:9001”” в “ExecStart”, чтоб веб-консоль работала на отдельном порту.

vim /etc/systemd/system/minio.service 

Содержимое:

 

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target

[Service]
User=minio-user
Group=minio-user
EnvironmentFile=-/etc/default/minio
ExecStart=/usr/local/bin/minio server /data --console-address ":9001"

Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

 
Настроим учетные данные администратора. Для этого создаем файл по пути /etc/default/minio и указываем:

vim /etc/default/minio

Содержимое:

MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=<Ваш_пароль>

Запускаем наш новосозданный сервис:

systemctl daemon-reload
systemctl enable minio
systemctl start minio

После чего проверяем статус службы через комманду systemctl status minio. Вы должны увидеть у себя в терминале примерно такой вывод:

 

MinIO - обзор и установка на Linux сервер - 1


Теперь, когда данный инструмент установлен Вы можете тестировать работу его API используя 9000 порт, на котором расположен S3 API Endpoint. На порту 9001 находится панель для управления MinIO из браузера. Можете убедится в этой перейдя по ссылке http://IP_сервера:9001 в браузере - ниже скриншот как выглядит эта панель:

 

MinIO - обзор и установка на Linux сервер - 2


Чтоб убедится в работе API endpoint, можете отправить на него запрос со своей машины или с другого сервера используя curl:

curl -I http://IP_СЕРВЕРА:9000/minio/health/live

Если ответ со статусом 200 OK - значит данный API Endpoint готов к работе:

 

MinIO - обзор и установка на Linux сервер - 3

 

Заключение

 

MinIO позволяет быстро развернуть собственное S3-совместимое объектное хранилище на VPS или выделенном сервере. Благодаря совместимости с Amazon S3 API решение подходит для хранения резервных копий, файлов веб-приложений, мультимедиа и других данных. Для небольших проектов достаточно облачного сервера с Linux, а при росте нагрузки систему можно масштабировать на выделенный сервер или кластерную инфраструктуру. Если в данный момент Вы ещё не выбрали подходящий для этих задач сервер, можете присмотреться к нашим дешевым облачным серверам по ссылке.