[Самородки говорят] Выбор распределенной файловой системы

Java
[Самородки говорят] Выбор распределенной файловой системы

Файловое хранилище имеет локальное хранилище, объектное хранилище OSS (Али Клауд,Семь Ниуюн, Tencent Cloud и др.),fastDFS, mongodb, теперь поговорим о minio.

Введение

MinIO — это служба хранения объектов, основанная на протоколе с открытым исходным кодом Apache License v2.0. Он совместим с интерфейсом службы облачного хранилища Amazon S3 и очень подходит для хранения неструктурированных данных большой емкости, таких как изображения, видео, файлы журналов, данные резервного копирования и образы контейнеров/виртуальных машин и т. д. Объектный файл может иметь любой размер. размер, от нескольких килобайт до максимального диапазона 5T. MinIO — это очень легкий сервис, который можно легко интегрировать с другими приложениями, такими как NodeJS, Redis или MySQL.
Официальный адрес документа:docs.min.io/cn/
Получите адрес minio:логин.мин.ио/сервер/мини…

Функциональное воплощение

  • защита данных
  • Высокая доступность
  • ограничение
  • последовательность
  • Лямбда-вычисления
  • Зашифровано и защищено от взлома
  • Может быть подключен к внутреннему хранилищу
  • поддержка SDK
  • Совместимость с Amazon S3

Кластерное планирование

один узел

рисунки, пока

многоузловой

рисунки, пока

распределенный

рисунки, пока

Создание распределенного кластера

Кластерное планирование

Для рабочей среды рекомендуется минимум 4 узла, а для среды разработки достаточно автономной версии.

Этот кластер состоит из 4 серверов (официально рекомендуемый минимум кластера 4 сервера), каждый сервер монтируется с 4 дисковыми каталогами, а минимальная точка монтирования данных равна 4. Использование операционной системы CentOS 7.6, конфигурация сервера для каждой машины. В настоящее время сборка виртуальной машины используется для эмуляции распределенной файловой системы.

Изменить имя хоста и хост (все узлы)

hostnamectl set-hostname minio1
hostnamectl set-hostname minio2
hostnamectl set-hostname minio3
hostnamectl set-hostname minio4
cat >> /etc/hosts <<EOF
192.168.180.128 minio1
192.168.180.129 minio2
192.168.180.130 minio3
192.168.180.131 minio4
EOF

Модификация максимального количества файлов в системе (все узлы)

echo "*   soft    nofile  65535" >> /etc/security/limits.conf
echo "*   hard    nofile  65535" >> /etc/security/limits.conf

Создание каталога (все узлы)

  • Запустить скрипты и директорию бинарников
  • Данные каталога хранения данных
  • Каталог файла конфигурации /etc/minio
mkdir -p /data/minio/{run,data} && mkdir -p /etc/minio

Файл запуска кластера (все узлы)

vim /data/minio/run/run.sh
  • MINIO_ACCESS_KEY: имя пользователя, минимальная длина 5 символов.
  • MINIO_SECRET_KEY: пароль, минимальная длина 8 символов.
  • --config-dir: указать каталог файла конфигурации кластера
#!/bin/bash
export MINIO_ACCESS_KEY=juejinzheshuo
export MINIO_SECRET_KEY=juejinzheshuo

/data/minio/run/minio server --config-dir /etc/minio \
http://192.168.180.128/data/minio/data \
http://192.168.180.129/data/minio/data \
http://192.168.180.130/data/minio/data \
http://192.168.180.131/data/minio/data \

minio.service (все узлы)

  • Рабочий каталог: каталог двоичных файлов.
  • ExecStart: указывает сценарий запуска кластера.
cat > /usr/lib/systemd/system/minio.service <<EOF
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/

[Service]
WorkingDirectory=/data/minio/run/
ExecStart=/data/minio/run/run.sh

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

Двоичные файлы (все узлы)

Загрузите бинарный файл minio в каталог /data/minio/run. бинарный файл minio, получите адрес minio:логин.мин.ио/сервер/мини…

Изменение разрешения (все узлы)

Добавить разрешения для всех задействованных файлов или каталогов

  • служебный файл
  • бинарный файл
  • Скрипт запуска кластера
chmod +x /usr/lib/systemd/system/minio.service 
&& chmod +x /data/minio/run/minio 
&& chmod +x /data/minio/run/run.sh

Среди них «WorkingDirectory» — это каталог сценария запуска, а «ExecStart» — указанный сценарий запуска кластера. Обратитесь к официальному адресу:GitHub.com/мини-о/мини-о…

Запустите кластер (все узлы)

systemctl daemon-reload
systemctl enable minio && systemctl start minio

Соответствующие общие команды следующие: systemctl start | stop | enable | статус minio

прокси-кластер

В производственной среде необходимо использовать Nginx для проксирования адреса кластера и унификации внешнего входа.

upstream minio{
        server 192.168.180.128:9000;
        server 192.168.180.129:9000;
        server 192.168.180.130:9000;
        server 192.168.180.131:9000;
}
server {
        listen 9000;
        server_name minio;
        location / {
                proxy_pass http://minio;
                proxy_set_header Host $http_host;
                client_max_body_size 1000m;
        }
}

проверка доступа

Браузер обращается к прокси-адресу кластера minio + порт 9000, имя пользователя и пароль — те, которые мы установили в файле запуска run.sh выше.

Вопросы и мысли: Каков его механизм или принцип работы? Как он расширяется с точки зрения распределенного расширения? Указанный выше файл работает в режиме реального времени или файл отсутствует? Хранилище файлов второго уровня?

демонстрационная среда

Следующая статья[Nuggets говорят] minio использует прокси-сервер nginx для настройки https

использованная литература

Краткое руководство по распределенному MinIO

Построение распределенного кластера Minio

Краткое руководство по запуску клиента MinIO

Распределенное развертывание MinIO

Построение распределенного кластера MinIO

Введение в общее распределенное хранилище файлов, сравнение выбора, проектирование архитектуры

Демонстрационное файловое хранилище системы Pig Minio