Для развертывания сервиса необходимо: 4 сервера, физические или виртуальные; Конфигурация от 4 Cpu Core, 4 Gb RAM. Для уменьшения количества сетевых задержек, скорость сети должна быть от 1 Гбит\с. Объем и состав хранилища данных зависит от используемой полезной нагрузки. Рекомендовано использовать SSD-диски или HDD, но в конфигурации RAID-массива с ускорением чтения и записи. К каждому серверу должно быть подключено по 4 независимых друг от друга хранилища данных.
В данной инструкции для развертывания сервиса использовалась ОС Ubuntu версии 22 и 20.
При развертывании описываемого варианта необходимо использовать балансировщик нагрузки для организации единой точки входа в кластер MinIO или для отказоустойчивости в случае выхода из строя сервисных нод. Режим работы балансировщика нагрузки «Least Connections».
Имена у серверов должны быть вида: minio1.example.com, minio2.example.com, minio3.example.com, minio4.example.com.
Диски или ресурсы для монтирования должны иметь имена созданный по аналогичной схеме:
Загружаем установочный файл и запускаем его:
Создаем пользователя и группу для работы сервиса:
Назначаем права доступа на диск, который будет смонтирован для MinIO:
Создаем(проверяем наличие) файл systemd:
Создаем(проверяем наличие) файла с переменными окружения для службы MinIO. /etc/default/minio:
Запускаем службу:
Проверяем успешных запуск и наличие ошибок:
Шаги с 0 по 7 необходимо выполнить на всех серверах входящих в кластер.
Если ошибок нет и статус корректный, переходим в WEB-часть для работы: http://minio1.example.net:9001
Далее необходимо создать балансировщик нагрузки для распределения входящих подключений на ноды MinIO. (HAProxy, Nginx, Nginx+KeepAlived).
Работоспособность кластера MinIO, при выходе из строя 1 сервера — все работает, при выходе из строя 2-ух серверов — доступно только чтение, запись данных доступна не будет. Минимум 2 диска из 4 должны работать.
$ mkfs.xfs /dev/sdb -L DISK1 $ mkfs.xfs /dev/sdc -L DISK2 $ mkfs.xfs /dev/sdd -L DISK3 $ mkfs.xfs /dev/sde -L DISK4 $ nano /etc/fstab # LABEL=DISK1 /mnt/disk1 xfs defaults,noatime 0 2 LABEL=DISK2 /mnt/disk2 xfs defaults,noatime 0 2 LABEL=DISK3 /mnt/disk3 xfs defaults,noatime 0 2 LABEL=DISK4 /mnt/disk4 xfs defaults,noatime 0 2
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20220925154453.0.0_amd64.deb -O minio.deb sudo dpkg -i minio.deb
groupadd -r minio-user useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4
/etc/systemd/system/minio.service [Unit] Description=MinIO Documentation=https://min.io/docs/minio/linux/index.html Wants=network-online.target After=network-online.target AssertFileIsExecutable=/usr/local/bin/minio [Service] WorkingDirectory=/usr/local User=minio-user Group=minio-user ProtectProc=invisible EnvironmentFile=-/etc/default/minio ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi" ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES # Let systemd restart this service always Restart=always # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=65536 # Specifies the maximum number of threads this process can create TasksMax=infinity # Disable timeout logic and wait until process is stopped TimeoutStopSec=infinity SendSIGKILL=no [Install] WantedBy=multi-user.target
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD — переменные отвечает за административный доступ на сервис MINIO_ROOT_USER=myminioadmin MINIO_ROOT_PASSWORD=minio-secret-key-change-me # MINIO_VOLUMES – указываем пути до ресурсов согласно созданных ранее дисков и серверов используемых в работе сервиса. MINIO_VOLUMES="https://minio{1...4}.example.net:9000/mnt/disk{1...4}/minio" MINIO_OPTS="--console-address :9001" # MINIO_SERVER_URL – адрес по которому можно получить доступ к сервису. #MINIO_SERVER_URL="http://minio.example.net:9000"
systemctl start minio.service
systemctl status minio.service
Мы можем помочь в настройке MinIO кластера, а также его поддержке в рамках DevOps-аутсорсинга!