Масштабирование хранилища файлов

Важно: на текущий момент нет способа сохранить данные при переходе от одной конфигурации кластера к другой.

Поэтому рекомендуется изменить конфигурацию кластера хранилища файлов после установки Системы.

К примеру, рассмотрим кластер из 4 нод:

  • 10.130.5.77

  • 10.130.5.78

  • 10.130.5.79

  • 10.130.5.80

По умолчанию кластер хранилища файлов, установленный на первых трёх нодах, будет расширен до 4х.

Вводные параметры: * Пользователь multicheck * Папка установки = MPPATH = /home/multicheck/mp-pack * Известно, какой пароль для storage был введен на этапе установки платформы

Для этого необходимо поменять compose:

nano /home/multicheck/mp-pack/composes/storage/docker-compose-cluster.yaml

docker-compose-cluster.yaml

x-storage-defaults: &storage-defaults
  image: $\{MPREGISTRY}/mp-storage:latest
  logging:
    driver: json-file
    options:
      max-file: "5"
      max-size: 50m
  container_name: mp-storage
  hostname: mp-storage
  restart: unless-stopped
  command: >
    server
    https://10.130.5.77/data
    https://10.130.5.78/data
    https://10.130.5.79/data
### Добавить адреса других инстансов
    https://10.130.5.80/data
    --address ":9000"
    --console-address ":9001"
    --certs-dir /certs
  network_mode: "host"
  environment:
    - MINIO_ROOT_USER=$\{STORAGE_USER}
    - MINIO_ROOT_PASSWORD=$\{STORAGE_PASSWORD}
  volumes:
    - $\{MPPATH}/data/storage:/data
    - $\{MPPATH}/bin/certs/tls/storage/storage_private_key.key:/certs/private.key:ro
    - $\{MPPATH}/bin/certs/tls/storage/storage_certificate.crt:/certs/public.crt:ro
    - $\{MPPATH}/bin/certs/multicheck_ca:/certs/CAs:ro
services:
  mp-storag-_1:
    <<: [*storage-defaults]
  mp-storage-2:
    <<: [*storage-defaults]
  mp-storage-3:
    <<: [*storage-defaults]
### Добавить новые сервисы mp_storage_4, mp_storage_5 и т.д.
  mp-storage-4:
    <<: [*storage-defaults]

Далее следует перейти в папку: cd /mp-pack/bin/certs/tls и отредактировать файл openssl.config

[ storage_alt_names ]
DNS.1 = localhost
DNS.2 = multicheck.ngrsoftlab.ru
DNS.3 = mp-storage
IP.1 = 127.0.0.1
IP.2 = 10.130.5.77
IP.3 = 10.130.5.77
IP.4 = 10.130.5.78
IP.5 = 10.130.5.79
### Добавить необходимые IP адреса
IP.6 = 10.130.5.80

Следующим этапом необходимо выполнить команды для создания новых сертификатов:

openssl genrsa -out "storage/storage_private_key.key" 2048

openssl req -new -key "storage/storage_private_key.key" -out "storage/req.pem" -outform PEM -subj "/CN=storage-cluster.multicheck.ru/O=storage_cluster/" -nodes

openssl ca -config "openssl.config" -in "storage/req.pem" -out "storage/storage_certificate.crt" -notext -batch -extensions storage_ca_extensions

Далее сохранить и отправить файл всем соседям, ключи для соединения уже прокинуты:

# Редактировали файл на 10.130.5.77
scp /home/multicheck/mp-pack/composes/storage/docker-compose-cluster.yaml multicheck@10.130.5.78:/home/multicheck/mp-pack/composes/storage/docker-compose-cluster.yaml
scp /home/multicheck/mp-pack/composes/storage/docker-compose-cluster.yaml multicheck@10.130.5.79:/home/multicheck/mp-pack/composes/storage/docker-compose-cluster.yaml
scp /home/multicheck/mp-pack/composes/storage/docker-compose-cluster.yaml multicheck@10.130.5.80:/home/multicheck/mp-pack/composes/storage/docker-compose-cluster.yaml
scp -r /home/multicheck/mp-pack/bin/certs/tls/storage multicheck@10.130.5.78:/home/multicheck/mp-pack/bin/certs/tls
scp -r /home/multicheck/mp-pack/bin/certs/tls/storage multicheck@10.130.5.79:/home/multicheck/mp-pack/bin/certs/tls
scp -r /home/multicheck/mp-pack/bin/certs/tls/storage multicheck@10.130.5.80:/home/multicheck/mp-pack/bin/certs/tls

Следующим этапом следует запустить новый кластер.

Важно: в последовательности команд есть sudo rm -rf /home/multicheck/mp-pack/data/storage, которая влечет удаление всех данных.

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

ssh -t multicheck@10.130.5.77 'read -s -p "Enter storage password: " STORAGE_PASSWORD; echo; export STORAGE_USER=multicheck; export STORAGE_PASSWORD="$\{STORAGE_PASSWORD}"; export MPPATH=/home/multicheck/mp-pack/; export MPREGISTRY=multicheck.ngrsoftlab.ru:5443; export PROCLIMIT=4; export RAMLIMIT=6G; docker stop mp-storage; docker rm mp-storage; sudo rm -rf /home/multicheck/mp-pack/data/storage; docker-compose -f "$\{MPPATH}/composes/storage/docker-compose-cluster.yaml" up -d mp-storage-1; unset STORAGE_PASSWORD'

ssh -t multicheck@10.130.5.78 'read -s -p "Enter storage password: " STORAGE_PASSWORD; echo; export STORAGE_USER=multicheck; export STORAGE_PASSWORD="$\{STORAGE_PASSWORD}"; export MPPATH=/home/multicheck/mp-pack/; export MPREGISTRY=multicheck.ngrsoftlab.ru:5443; export PROCLIMIT=4; export RAMLIMIT=6G; docker stop mp-storage; docker rm mp-storage; sudo rm -rf /home/multicheck/mp-pack/data/storage; docker-compose -f "$\{MPPATH}/composes/storage/docker-compose-cluster.yaml" up -d mp-storage-2; unset STORAGE_PASSWORD'

ssh -t multicheck@10.130.5.79 'read -s -p "Enter storage password: " STORAGE_PASSWORD; echo; export STORAGE_USER=multicheck; export STORAGE_PASSWORD="$\{STORAGE_PASSWORD}"; export MPPATH=/home/multicheck/mp-pack/; export MPREGISTRY=multicheck.ngrsoftlab.ru:5443; export PROCLIMIT=4; export RAMLIMIT=6G; docker stop mp-storage; docker rm mp-storage; sudo rm -rf /home/multicheck/mp-pack/data/storage; docker-compose -f "$\{MPPATH}/composes/storage/docker-compose-cluster.yaml" up -d mp-storage-3; unset STORAGE_PASSWORD'

ssh -t multicheck@10.130.5.80 'read -s -p "Enter storage password: " STORAGE_PASSWORD; echo; export STORAGE_USER=multicheck; export STORAGE_PASSWORD="$\{STORAGE_PASSWORD}"; export MPPATH=/home/multicheck/mp-pack/; export MPREGISTRY=multicheck.ngrsoftlab.ru:5443; export PROCLIMIT=4; export RAMLIMIT=6G; docker stop mp-storage; docker rm mp-storage; sudo rm -rf /home/multicheck/mp-pack/data/storage; docker-compose -f "$\{MPPATH}/composes/storage/docker-compose-cluster.yaml" up -d mp-storage-4; unset STORAGE_PASSWORD'

Сравнение конфигураций

До измененийПосле изменений

multicheck@astra-1-8-tpl:~$ mc admin info cluster

  • 10.130.5.77:9000

  • Uptime: 16 hours

  • Version: 2025-07-23T15:54:02Z

  • Network: 3/3 OK

  • Drives: 1/1 OK

  • Pool: 1

multicheck@astra-1-8-tpl:~/mp-pack/bin/certs/tls$ mc admin info cluster

  • 10.130.5.77:9000

  • Uptime: 9 minutes

  • Version: 2025-07-23T15:54:02Z

  • Network: 4/4 OK

  • Drives: 1/1 OK

  • Pool: 1

  • 10.130.5.78:9000

  • Uptime: 2 seconds

  • Version: 2025-07-23T15:54:02Z

  • Network: 3/3 OK

  • Drives: 1/1 OK

  • Pool: 1

  • 10.130.5.78:9000

  • Uptime: 9 minutes

  • Version: 2025-07-23T15:54:02Z

  • Network: 4/4 OK

  • Drives: 1/1 OK

  • Pool: 1

  • 10.130.5.79:9000

  • Uptime: 16 hours

  • Version: 2025-07-23T15:54:02Z

  • Network: 3/3 OK

  • Drives: 1/1 OK

  • Pool: 1

  • 10.130.5.79:9000

  • Uptime: 8 minutes

  • Version: 2025-07-23T15:54:02Z

  • Network: 4/4 OK

  • Drives: 1/1 OK

  • Pool: 1

  • 10.130.5.80:9000

  • Uptime: 9 minutes

  • Version: 2025-07-23T15:54:02Z

  • Network: 4/4 OK

  • Drives: 1/1 OK

  • Pool: 1

Pool 1st, Drives Usage 19.8% (total: 75 GiB), Erasure stripe size 3, Erasure sets 1

Pool 1st, Drives Usage, Erasure stripe size 4,Erasure sets 1

256 MiB Used, 1 Bucket, 3 Objects, 3 drives online, 0 drives offline, EC:1

4 drives online, 0 drives offline, EC:2