Minio

Материал из sysadm
Перейти к навигации Перейти к поиску

Установка

Сайт разработчика

Ссылки по теме:

Загрузка сервера (один бинарный файл minio)

cd /path/to/minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Скрипт запуска /path/to/minio/minio.sh

# данные для авторизации узлов кластера между собой (не использовать спецсимволы &@# и т.п.)
export MINIO_ACCESS_KEY=*********
export MINIO_SECRET_KEY=*********

# запуск узла кластера из 3 узлов с подключением 2-х смонтированных разделов
/usr/sbin/minio server http://node[1...3].local/mnt/vol[1...2]

Права

cd /path/to/minio
chmod minio +x
chmod minio.sh +x

Файрвол

# firewall может создать проблемы (no route to host)
# найдите решение или выключите firewall
systemctl stop firewalld
systemctl disable firewalld

Время на всех узлах должно быть синхронизировано. Включите синхронизацию времени на всех узлах

systemctl status systemd-synchrod
timedatectl 


Создание сервиса /etc/systemd/system/miniod.service

[Unit]
Description=Minio Distributed service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=allways
RestartSec=1
User=minio
Group=minio
ExecStart=/bin/bash /path/to/mainio/minio.sh

[Install]
WantedBy=multi-user.target

Включение и запуск сервиса

systemctl enable miniod
systemctl start  miniod

Получаем кластер из 3 узлов, которые автоматически синхронизируют между собой хранилища.

Далее необходимо настроить один из методов распределения клиентов:

  • round robin
  • балансировка нагрузки nginx
  • hiproxy
  • и .т.п.

Minio поднимает свой Web API на порту 9000 (http://node1:9000)

Minio также поднимает веб-интерфейс администрирования (console) на динамическом порту. При подключении браузером на порт 9000 происходит автоматический редирект на порт интерфейса администрирования. Для фиксации порта административного интерфейса при старте minio необходимо задавать параметр --console-address ":9001"

Администрирование

веб интерфейс администратора

  • http://<my_minio_host>:9001/login

Монтирование удаленного хранилища s3 в Linux

Ссылки по теме

Установка s3fs на Ubuntu 20.04

apt install s3fs

Установка s3fs в CentOS 8

dnf install s3fs-fuse

Монтирование в папку

s3fs <bucket_name> -o accessKeyId=******* -o secretAccessKey=******* /path/to/mount 

Монтирование удаленного хранилища s3 в Windows

Ссылки по теме

Все что ниже не проверено и надергано из статьи выше, так что сначала читаем статью и пробуем.

Скачайте rclone

Настройка

rclone.exe config

Установка WinFSP (аналог fuse в Linux)

Set-ExecutionPolicy Bypass -Scope Process -Force;
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install winfsp -y

Монтирование сетевого диска

.\rclone mount blog-bucket01:blog-bucket01/ S: --vfs-cache-mode full

Высокая доступность

Режимы работы кластера minio

  • Single-Drive Mode
    • один сервер
    • формат хранения FS, один каталог файловой системы, смонтированный на один диск
  • Single-Node Multi-Drive (SNMD)
    • один сервер
    • формат хранения XL (Erasure Coding), 4 и более каталогов файловой системы, смонтированные на разные диски
  • Distributed Mode (Multi-Node Multi-Drive / MNMD)
    • 2 и более сервера
    • 4 и более каталога суммарно, смонитрованные на разные диски
    • данные

Erasure Coding - используется кодирование Рида-Соломона (Reed-Solomon)

схема 2+2 (нет экономии 1/2)
  p1=a*d1+b*d2
  p2=c*d1+d*d2

здесь
  a,b,c,d это целые положительные константы
  d1, d2 - числа (byte, dword или qword) из 1-го и 2-го блока данных
  проходя по 2 частям данных получаем 2 части parity того же объема

схема 4+2 (экономия 4/6)
  p1=a1*d1+a2*d2+a3*d3+a4*d4
  p1=b1*d1+b2*d2+b3*d3+b4*d4


Site-to-Site Replication - можно настроить репликацию между двумя кластерами

Непрерывность

Для онлайн бэкапа большого хранилища S3 можно использовать утилиту rclone