Миграция бакетов во внешний MinIO
- В
.env-файле Test IT внесите изменения, чтобы настроить систему на использование внешнего пустого MinIO.- Для сервиса
minioустановите значения переменных:AWS_ACCESS_KEY: (Access key, установленный для bucket1) AWS_SECRET_KEY: (Secret Key, установленный для bucket1) AWS_CONNECTION_STRING: http://external-server:9000 (где external-server — ip-адрес или DNS-имя вашего сервера с minio) FILE_BUCKET_NAME: (в данном примере, bucket1) - Для сервиса
avatars.minioустановите следующие значения переменных:AVATARS_AWS_ACCESS_KEY: (Access key, установленный для bucket2) AVATARS_AWS_SECRET_KEY: (Secret Key, установленный для bucket2) AVATARS_AWS_CONNECTION_STRING: http://external-server:9000 - Для сервиса
avatars.minioдобавьте переменную:Платформа Test IT будет самостоятельно создавать бакеты во внешнем сервисе.AVATARS_FILE_BUCKET_NAME: (в данном примере, bucket2) - Пересоздайте контейнеры Test IT:
docker compose -f docker-compose.yml -p prod down docker compose -f docker-compose.yml -p prod up -d
- Для сервиса
- Убедитесь, что после пересоздания контейнера во внешнем сервисе были созданы одноименные бакеты.
- Войдите в контейнер MinIO:
docker exec -it prod-minio-1 sh - Скачайте в контейнер
mc client:curl https://dl.min.io/client/mc/release/linux-amd64/mc \ --create-dirs \ -o $HOME/minio-binaries/mcЧтобы проверить, чтоchmod +x $HOME/minio-binaries/mc export PATH=$PATH:$HOME/minio-binaries/mc clientустановлена успешно, используйте команду:mc --help - Создайте алиас (короткое имя) для внешнего сервиса:Замените значения:
bash +o history mc alias set ALIAS HOSTNAME ACCESS_KEY SECRET_KEYALIAS— придумайте алиас (короткое имя)HOSTNAME— адрес внешнего MinIO сhttpи портомACCESS_KEY SECRET_KEY— ключи, которые которые задаются при создании MinIO Пример готовой команды:
mc alias set external_minio http://external-server:9000 Sh0c6sJ29Nkyr9zOsNwNp9UsNoFajIdPDZUUx - Проверьте созданный алиас с помощью команды:Если алиас создан успешно, отобразится ответ вида:
mc admin info external_minio● 192.168.88.113:9000 Uptime: 50 minutes Version: 2023-05-04T21:44:30Z Network: 1/1 OK Drives: 1/1 OK Pool: 1 ┌──────┬───────────────────────┬─────────────────────┬──────────────┐ │ Pool │ Drives Usage │ Erasure stripe size │ Erasure sets │ │ 1st │ 53.5% (total: 45 GiB) │ 1 │ 1 │ └──────┴───────────────────────┴─────────────────────┴──────────────┘ 0 B Used, 1 Bucket, 0 Objects 1 drive online, 0 drives offline, EC:0 - Создайте алиас для внутреннего MinIO, заменив имя алиаса и адрес сервиса, оставив ключи без изменений:
mc alias set old_minio http://127.0.0.1:9000 woiuFOGgUmz1V TTmDVy9mlAofbbEKqL7ppl2LS - Выполните миграцию бакетов с помощью команды:Значения:
mc mirror --preserve old_minio/testit external_minio/testitold_minio/testit— алиас старого сервиса и название бакетаexternal_minio— алиас внешнего сервиса, который мы создали ранее.testit— название бакета во внешнем сервисе
Если настройки произведены верно, отобразится процесс загрузки объектов:...2-b20e-747398450527/xl.meta: 4.23 KiB / 4.23 KiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 204.24 KiB/s 0s - Повторите Шаг 8 для бакета
avatars. - Сопоставьте количество объектов во внешнем и внутреннем сервисах:
mc ls --recursive external_minio/testit | wc -lКоличество объектов должно совпадать.mc ls --recursive old_minio/testit | wc -l - Опционально/рекомендуется: Отключите внутренний S3, поскольку теперь используется внешний. Для этого в файле
docker-compose.ymlзакомментируйте:- Секцию с сервисом
minio - Зависимости других контейнеров от сервиса
minio(все упоминания сервиса в блоках depends_on) - Вольюмы (тома)
minio-exportvolumeиminio-data-volumeв спискеvolumes
- Секцию с сервисом