VK WorkSpace On-Premise logo
Помощь
Обновлена 20 октября 2026 г. в 14:33

Кластер MinIO

В статье рассматривается пример развертывания MinIO в качестве объектного хранилища S3.

Рекомендуемой топологией MinIO для Проекты VK WorkSpace является Multi-Node Multi-Drive (MNMD) или Distributed/Распределенная конфигурация.

MinIO в конфигурации MNMD поддерживает erasure coding. Это позволяет допустить потерю до половины узлов или дисков в кластере, при этом продолжая обслуживать операции чтения. Используйте калькулятор Erasure Code Calculator при планировании и проектировании кластера MinIO.

Минимальная конфигурация MNMD, поддерживающая erasure coding, состоит из четырех нод (серверов) по четыре диска в каждой. Соберите ноды в один server pool, при этом в MinIO нужно:

  • использовать последовательно пронумерованные имена хостов
  • использовать нотации расширения {x...y} для обозначения последовательного ряда хостов при создании пула серверов
  • использовать нотации расширения {x...y} для обозначения последовательного ряда дисков
  • чтобы порядок физических дисков оставался постоянным при перезапусках, чтобы заданная точка монтирования всегда указывала на один и тот же отформатированный диск.

Установка состоит из нескольких этапов:

  1. Подготовка нод (серверов)
  2. Подготовка дисков
  3. Установка MinIO
  4. Установка MinIO Client
  5. Создание пользователя и группы minio-user
  6. Создание файла сервиса для systemd
  7. Создание файла окружения для MinIO
  8. Запуск сервиса MinIO
  9. Настройка подключения к MinIO
  10. Создание бакета
  11. Конфигурация HAProxy (блок s3minio)
  12. Подключение

Шаг 1. Подготовка нод (серверов)

Создайте четыре ноды (сервера) с последовательно пронумерованными именами хостов:

  • minio1.example.com
  • minio2.example.com
  • minio3.example.com
  • minio4.example.com

Создайте необходимые сопоставления имен хостов в DNS. Если такой возможности нет, внесите нужные записи в /etc/hosts.

Шаг 2. Подготовка дисков

  1. На каждой ноде создайте четыре каталога для монтирования четырех дисков:

    sudo mkdir -p /var/lib/minio/data1sudo mkdir -p /var/lib/minio/data2sudo mkdir -p /var/lib/minio/data3sudo mkdir -p /var/lib/minio/data4

    Для обеспечения лучшей производительности используйте файловую систему XFS. В MinIO не различаются типы дисков и не используются смешанные типы хранилищ, поэтому на всех нодах должен использоваться одинаковый тип дисков (NVMe, SSD или HDD) с одинаковой емкостью, например, N ТБ.

    В MinIO ограничивается размер используемого диска до самого маленького диска в развертывании. Например, если в развертывании есть 15 дисков по 10 ТБ и 1 диск по 1 ТБ, в MinIO емкость каждого диска ограничится до 1 ТБ.

  2. На каждой ноде подготовьте на дисках файловую систему XFS:

    sudo mkfs.xfs /dev/sdb -L DISK1sudo mkfs.xfs /dev/sdc -L DISK2sudo mkfs.xfs /dev/sdd -L DISK3sudo mkfs.xfs /dev/sde -L DISK4
  3. На каждой ноде добавьте точки монтирования четырех дисков в файле /etc/fstab:

    LABEL=DISK1      /var/lib/minio/data1     xfs     defaults,noatime  0       2LABEL=DISK2      /var/lib/minio/data2     xfs     defaults,noatime  0       2LABEL=DISK3      /var/lib/minio/data3     xfs     defaults,noatime  0       2LABEL=DISK4      /var/lib/minio/data4     xfs     defaults,noatime  0       2
  4. Проверьте монтирование ранее подготовленных дисков:

    sudo mount -av

Шаг 3. Установка MinIO

На каждой ноде загрузите последний стабильный binary-файл MinIO и установите его в систему:

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

Шаг 4. Установка MinIO Client

На ноде minio1.example.com загрузите последний стабильный binary-файл MinIO Client и установите его в систему:

wget https://dl.min.io/client/mc/release/linux-amd64/mcchmod +x mcsudo mv mc /usr/local/bin/

Шаг 5. Создание пользователя и группы minio-user

  1. На каждой ноде создайте пользователя и группу minio-user:

    sudo groupadd -r minio-usersudo useradd -M -r -g minio-user minio-user
  2. На каждой ноде создайте директории для хранения TLS сертификатов, выполнив команду:

    sudo mkdir -p /etc/minio/certs/CAs
  3. На каждой ноде задайте разрешения на доступ к каталогам, предназначенным для использования в MinIO:

    sudo chown -R minio-user:minio-user /etc/miniosudo chown -R minio-user:minio-user /var/lib/minio

Шаг 6. Создание файла сервиса для systemd

  1. На каждой ноде загрузите официальный файл сервиса MinIO:

    sudo curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
  2. Проверьте содержимое minio.service перед его использованием и переместите этот файл в каталог конфигурации systemd:

    sudo mv minio.service /etc/systemd/system

На этом шаге не запускайте minio.service.

Шаг 7. Создание файла окружения для 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="http://minio-server{1...4}.your_domain:9000/var/lib/minio/data{1...4}/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=vkuser# 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:

    • minio-server{1...4}.your_domain - ноды, объединенные в единый пул с нотацией расширения {x...y}
    • 9000 - порт подключения
    • /var/lib/minio/data{1...4}/minio — последовательный ряд дисков с нотацией расширения {x...y}
  • MINIO_ROOT_USER - имя пользователя администратора MinIO

  • MINIO_ROOT_PASSWORD - пароль, в котором рекомендуется использовать не менее 16 символов.

Шаг 8. Запуск сервиса MinIO

  1. Выполните следующие команды на каждой ноде, чтобы запустить службу MinIO:

    sudo systemctl daemon-reloadsudo systemctl enable minio.servicesudo systemctl start minio.service
  2. Убедитесь в том, что сервис minio запустился и работает без ошибок:

    sudo systemctl status minio.servicejournalctl -f -u minio.service

Шаг 9. Настройка подключения к MinIO

Создайте alias для minio на ноде minio-server1.your_domain:

/usr/local/bin/mc alias set minio http://minio-server1.your_domain:9000 vkuser SecretPassword

Шаг 10. Создание бакета

Примеры наименований для бакетов:

  1. wiki
  2. cwm
  3. avatars

Чтобы создать бакеты используйте команду на ноде minio-server1.your_domain:

/usr/local/bin/mc mb -p minio/wiki --region=ru-central-1/usr/local/bin/mc mb -p minio/cwm --region=ru-central-1/usr/local/bin/mc mb -p minio/avatars --region=ru-central-1

Шаг 11. Конфигурация HAProxy (блок s3minio)

В рамках статьи пользовательский трафик приходит в HAProxy по minio.your_domain:9000 и равномерно балансируется между нодами кластера MinIO.

Балансировку нагрузки между нодами кластера MinIO осуществите с помощью HAProxy.

Шаг 12. Подключение

Параметры для подключения к MinIO:

  • address — minio-server.your_domain:9000
  • bucket - cwm
  • region - ru-central-1
  • access key ID - vkuser
  • secret access key - SecretPassword
  • upload method - PUT
  • enable SSL - No

При подключении MinIO с использованием TLS/SSL укажите в enable SSL значение Yes.


Технический писатель: Белова Ирина

Была ли статья полезна?