Также есть удобный web-based интерфейс MinIO Console, где можно контролировать сервер MinIO, перемещаться по хранимым данным и выполнять административные функции. Этот интерфейс оптимизирует процессы управления хранилищем, предлагая интуитивно понятные и доступные средства взаимодействия с объектными системами хранения.
Интерфейс централизует и упрощает задачи управления хранилищем. Вы можете легко перемещаться и контролировать свою инфраструктуру хранения данных. От мониторинга состояния сервера до управления контролем доступа и выполнения операций с данными — консоль предлагает удобную и эффективную платформу для администрирования развертываний MinIO.
Такой подход к хранению объектов, основанный на использовании MinIO, успешно применяется на практике уже 2,5 года и получает исключительно положительные отзывы от коллег и сотрудников о его удобстве и эффективности.
Подробнее о продукте MinIO можно найти тут.
Допустим, что бизнес требует от команды инфраструктуры создать сервер в качестве хранилища, где будут лежать дамп-файлы базы данных PostgreSQL. Бэкапы должны проводиться автоматически каждый день в определенное время и отправлять на хранение в этот сервер тоже автоматически. Также требуется, что этим хранилищем могут пользоваться разработчики и другие технические команды, откуда они будут брать нужный дамп-файл для тестирования, разработки или других случаев.
Архитектура будет выглядеть примерно так:
Идея здесь следующая:
Для начала устанавливаем PostgreSQL Server и его инструменты.
Подключаемся к первому серверу (192.168.1.100) и запускаем следующие команды:
# Обновление пакетов:
sudo apt update
# Установка PostgreSQL:
sudo apt install postgresql postgresql-contrib -y
# Установка инструментов PostgreSQL (psql-client):
sudo apt install postgresql-client -y
# Команды установит “pg_dump” инструмент, который нам потребуется для бэкапов.
# Убедитесь, что PostgreSQL установлен:
sudo systemctl status postgresql
# Вывод этой команды покажет запущен ли процесс PostgreSQL на сервере.
psql --version
# Вывод этой команды покажет версию установленного PostgreSQL.
По умолчанию, после установки PostgreSQL, создается юзер “postgres”. Можно подключиться к базе локально.
# Получить доступ к командной строке PostgreSQL, используя этого пользователя:
sudo -i -u postgres
psql
После этого нужно подключиться к командной консоли postgresql.
Подключаемся ко второму серверу (192.168.1.101) и делаем следующее:
# Скачиваем исходник MinIO server:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
# Запускаем MinIO server:
./minio server /data
# Запустится MinIO сервер, который также содержит URL к консоли MinIO (по дефолту http://127.0.0.1:9000)
# Подключаемся к MinIO консоли: открываем любой браузер и переходим на наш URL из предыдущего пункта: http://127.0.0.1:9000
Вы увидите консоль MinIO:
Создаем ключи (Access and Secret keys):
Чтобы поставить нужные нам credentials, открываем файл nano ~/.minio/config.json
{
"version": "9",
"credential": {
"accessKey": "",
"secretKey": ""
},
"region": "",
"browser": "on",
"logger": {
"console": {
"level": "error"
},
"file": {
"level": "error",
"filename": ""
}
},
"notify": {
"redis": {
"1": {
"enable": false,
"address": "",
"password": "",
"key": "",
"certDir": "",
"poolSize": 0,
"db": 0
}
}
}
}
Находим строки:
"accessKey": "",
"secretKey": ""
Внутри кавычек указываем любые значения для Access и Secret keys. Рекомендуются более секьюрные значения. Если вы не хотите указывать креды внутри как hardcoded, то можно сделать следующим образом:
export MINIO_ACCESS_KEY=your_access_key # тут указываем свой Access Key
export MINIO_SECRET_KEY=your_secret_key # тут указываем свой Secret Key
В файле ~/.minio/config.json указываем значения:
"accessKey": "${MINIO_ACCESS_KEY}",
"secretKey": "${MINIO_SECRET_KEY}"
Это один из способов обойти hardcode, вы можете использовать другой удобный вам метод.
Логинимся к MinIO console:
В нашем случае, Username - это Access Key, а Password - это Secret Key.
Теперь мы настроили MinIO server и консоль для него. Если хотите настроить другие интеграции к ним или поставить более продвинутые конфигурации по безопасности, доступам, репликам, то документацию можно найти тут.
Теперь перед нами стоит задача автоматизировать бэкап базы и копирование бэкапа на MinIO хранилище.
В первом сервере PostgreSQL (192.168.1.100) также необходимо поставить клиент MinIO, чтобы автокопирование работало. Для этого нужно установить MinIO client.
# Создаем папку “minio-client” в домашней директории:
mkdir /home/minio-client
cd /home/minio-client
# Скачиваем клиент:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x /home/minio-client/mc
# Подтверждаем, что клиент установился:
/home/minio-client/mc --version
# Создаем бакет, в котором будут лежать наши дампы. Для этого настраиваем алиас:
/home/minio-client/mc alias set minio http://192.168.1.101:9000 your_minio_access_key your_minio_secret_key
# Создаем бакет с названием “devops”:
/home/minio-client/mc mb minio/devops
Cоздаем файл backup.sh и вставляем следующее:
#!/bin/bash
# PostgreSQL database credentials
DB_USER="your_db_user"
DB_NAME="your_db_name"
# MinIO credentials and endpoint
MINIO_ACCESS_KEY="your_minio_access_key"
MINIO_SECRET_KEY="your_minio_secret_key"
MINIO_ENDPOINT="http://192.168.1.101:9000"
BUCKET_NAME="devops"
# Backup directory
BACKUP_DIR="/path/to/sql_backup"
# Date and timestamp
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# Dump PostgreSQL database
pg_dump -U "$DB_USER" -d "$DB_NAME" > "$BACKUP_DIR/$DB_NAME-$DATE.sql"
# Upload dump file to MinIO
mc alias set minio "$MINIO_ENDPOINT" "$MINIO_ACCESS_KEY" "$MINIO_SECRET_KEY"
mc cp "$BACKUP_DIR/$DB_NAME-$DATE.sql" "minio/$BUCKET_NAME/$DB_NAME-$DATE.sql"
Обязательно укажите свои креды и путь к директории с бэкапами.
Сохраняем содержимое скрипта и запускаем:
chmod +x backup.sh
bash -x backup.sh
После успешно выполненного скрипта настраиваем Cron для автозапуска (используется редактор типа vim):
crontab -e
Настраиваем, когда будет запускаться наш скрипт по автобэкапу и автокопированию. Допустим, что он должен запускаться каждый день в полночь:
0 0 * * * /home/minio-client/backup.sh
Сохраняем настройки Cron и ждем, когда выполнится скрипт. После полуночи в MinIO консоли должен отобразится бэкап базы.
В MinIO консоли можно загружать и скачивать объекты парой кликов, создавать пользователей и управлять аккаунтами внутри:
Также здесь есть вкладка Monitoring, которая по дефолту выдает метрики, а также позволяет запустить логгинг:
API конфигурация, репликации, нотификации и другие фичи доступны в одном месте, что очень упрощает работу с хранилищем и сохраняет время и ресурсы.
Узнайте про услугу DataOps, и наш менеджер расскажет подробнее, подберет план работ под ваши задачи и рассчитает стоимость
Узнать больше