В этой статье рассматривается пример развёртывания MinIO в качестве объектного хранилища S3 для программного комплекса ELMA365. Статья охватывает развёртывание MinIO в конфигурации с одним узлом и одним диском (SNSD). Развёртывание SNSD не обеспечивает дополнительной надёжности или доступности, помимо того, что реализовано в базовом томе хранилища (RAID, LVM, ZFS и т. д.). Вы также можете ознакомиться с руководством в официальной документации MinIO.
начало внимание
В рамках статьи используется имя бакета s3elma365
, пользователь elma365user
и пароль SecretPassword
.
При настройке задайте эти данные согласно политике безопасности, принятой в вашей организации.
конец внимание
Установка состоит из нескольких этапов:
- Подготовка диска.
- Установка MinIO.
- Установка MinIO Client.
- Создание пользователя и группы minio-user.
- Создание файла сервиса для systemd.
- Создание файла окружения для MinIO.
- Запуск сервиса MinIO.
- Настройка подключения к MinIO.
- Создание бакета.
- Настройка CORS.
- Подключение к MinIO.
Шаг 1: Подготовка диска
- Создайте каталог для монтирования диска:
sudo mkdir -p /var/lib/minio/data1
Чтобы обеспечить лучшую производительность, рекомендуется использовать файловую систему XFS. Для примера подключаемого диска выбрать диск /dev/sdb.
- Подготовьте на диске файловую систему XFS:
sudo mkfs.xfs /dev/sdb -L DISK1
- Добавьте точку монтирования диска в файле
/etc/fstab
:
LABEL=DISK1 /var/lib/minio/data1 xfs defaults,noatime 0 2
- Проверьте монтирование ранее подготовленного диска:
sudo mount -av
Шаг 2: Установка MinIO
Загрузите последний стабильный binary-файл MinIO и установите его в систему:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
Шаг 3: Установка MinIO Client
Загрузите последний стабильный binary-файл MinIO Client и установите его в систему:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
Шаг 4: Создание пользователя и группы minio-user
- Cоздайте пользователя и группу minio-user:
sudo groupadd -r minio-user
sudo useradd -M -r -g minio-user minio-user
sudo chown minio-user:minio-user /var/lib/minio/data1
- Создайте директории для хранения TLS-сертификатов, выполнив команду:
sudo mkdir -p /etc/minio/certs/CAs
- Задайте разрешения на доступ к каталогам, предназначенным для использования в MinIO:
sudo chown -R minio-user:minio-user /etc/minio
sudo chown -R minio-user:minio-user /var/lib/minio
Шаг 5: Создание файла сервиса для systemd
- Загрузите официальный файл сервиса MinIO:
sudo curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
- Проверьте содержимое
minio.service
перед его использованием и переместите этот файл в каталог конфигурацииsystemd
:
sudo mv minio.service /etc/systemd/system
начало внимание
На этом шаге не запускайте minio.service
.
конец внимание
Шаг 6: Создание файла окружения для MinIO
Создайте файл окружения в /etc/default/minio
. Служба MinIO использует этот файл в качестве источника всех переменных окружения, используемых MinIO и файлом minio.service
.
Пример файла окружения в /etc/default/minio
:
# Set the hosts and volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
# The following example covers four MinIO hosts
# with4 drives each at the specified hostname and drive locations.
# The command includes the port that each MinIO server listens on
# (default 9000)
MINIO_VOLUMES="/var/lib/minio/data1/minio"
# Set all MinIO server options
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces. The default behavior is dynamic
# port selection.
MINIO_OPTS="--certs-dir /etc/minio/certs --console-address :9001"
MINIO_REGION="ru-central-1"
# Set the root username. This user has unrestricted permissions to
# perform S3 and administrative API operations on any resource in the
# deployment.
# Defer to your organizations requirements for superadmin user name.
MINIO_ROOT_USER=elma365user
# Set the root password
# Use a long, random, unique string that meets your organizations
# requirements for passwords.
MINIO_ROOT_PASSWORD=SecretPassword
# Set to the URL of the load balancer for the MinIO deployment
# This value *must* match across all MinIO servers. If you do
# not have a load balancer, set this value to to any *one* of the
# MinIO hosts in the deployment as a temporary measure.
# MINIO_SERVER_URL="https://minio.example:9000"
Где:
MINIO_VOLUMES
— каталог, в котором будут размещаться загруженные в S3 файлы;MINIO_ROOT_USER
— имя пользователя-администратора MinIO;MINIO_ROOT_PASSWORD
— пароль, рекомендуется использовать не менее 16 символов.
Настройка включения TLS/SSL в MinIO
Подробнее о настройке TLS/SSL в MinIO читайте в официальной документации MinIO. |
Шаг 7: Запуск сервиса MinIO
- Выполните следующие команды, чтобы запустить службу MinIO:
sudo systemctl daemon-reload
sudo systemctl enable minio.service
sudo systemctl start minio.service
- Убедитесь в том, что сервис minio запустился и работает без ошибок:
sudo systemctl status minio.service
journalctl -f -u minio.service
Шаг 8: Настройка подключения к MinIO
Создайте alias
для minio:
/usr/local/bin/mc alias set minio http://minio.your_domain:9000 elma365user SecretPassword
Шаг 9: Создание бакета
Важно: наименование бакета в S3 должно соответствовать формату s3elma365*
.
начало примера
Примеры наименований для бакетов
s3elma365
.s3elma365-dev
.s3elma365-prod
.
конец примера
Чтобы создать для работы ELMA365 бакет c наименованием s3elma365
, используйте команду:
/usr/local/bin/mc mb -p minio/s3elma365 --region=ru-central-1
Создание в S3 бакетов для работы ELMA Bot
Для создания бакетов выполните следующие команды: |
Шаг 10: Настройка CORS
Cross-Origin Resource Sharing (CORS) — это механизм, с помощью которого ограничивается доступ к ресурсам веб-приложения из сторонних доменов. Вы можете определить список доменов, с которых разрешено направлять запросы к приложению ELMA365, а также указать доступные заголовки и методы HTTP.
Настройте CORS одним из способов:
- С помощью файла с конфигурацией CORS.
- Через веб-интерфейс сервиса для управления данными, например Yandex Object Storage.
Задать настройки CORS в конфигурационном файле
- Создайте файл
cors.xml
с конфигурацией CORS, например:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedHeader>*</AllowedHeader>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedOrigin>https://*.elma365.ru</AllowedOrigin>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
Где:
AllowedHeader
— заголовки, которые доступны в запросах. Чтобы разрешить все заголовки, используйте символ*
;AllowedMethod
— разрешённые методы HTTP, напримерGET
,POST
,PUT
,DELETE
,HEAD
;AllowedOrigin
— источники, из которых можно обращаться к ресурсам веб-приложения. Чтобы разрешить доступ с любых доменов, используйте символ*
. Для повышения безопасности рекомендуется указать определённые домены, например https://*.elma365.ru;MaxAgeSeconds
— для уменьшения количества запросов и улучшения производительности можно сохранять в кеше браузера разрешение на запросы из определённого источника. Оно проверяется в предварительном запросе, который выполняется перед основным. Укажите время в секундах, в течение которого разрешение хранится в кеше и новые предварительные запросы не отправляются.
Вы также можете задать в конфигурации CORS параметр ExposeHeader
. В нём определяются заголовки, которые отображаются в ответах на запросы. Не указывайте этот параметр в .xml-файле, если заголовки в ответах показывать не нужно.
- Примените настройки CORS к бакету с помощью команды:
/usr/local/bin/mc cors set minio/s3elma365 cors.xml
- Убедитесь, что настройки CORS применены правильно, выполнив команду:
/usr/local/bin/mc cors get minio/s3elma365 --json
Задать конфигурацию CORS через сервис управления данными
Вы можете настроить CORS через веб-интерфейс сервиса для управления данными.
Пример заполнения параметров CORS в Yandex Object Storage:
Подробнее о том, как настроить CORS читайте в официальной документации Yandex Cloud.
Шаг 11: Подключение к MinIO
Параметры для подключения к MinIO:
- address —
minio.your_domain:9000
; - bucket —
s3elma365
; - region —
ru-central-1
; - access key ID —
elma365user
; - secret access key —
SecretPassword
; - upload method —
PUT
; - enable SSL —
No
.
Если MinIO ожидает подключение с использованием TLS/SSL, установите в параметре enable SSL значение Yes
.