PSMDB Sandbox: новое имя, MongoDB 9.0.2 и PMM по желанию

30 октября 2026 года Иван Groenewold описал на блоге Percona, во что превратился PSMDB Sandbox. Небольшой веб-интерфейс над Terraform и Ansible для MongoDB больше не добавка к старому репозиторию. Проект переименовали в psmdb-sandbox, перенесли на github.com/percona/psmdb-sandbox и расширили то, что из браузера вообще можно собрать.

Первый выпуск того же автора вышел 5 мая 2026. Тогда UI лежал внутри mongo_terraform_ansible: клон, каталог ui-go, go run .. С октября основной путь другой. Зависимости под выбранную платформу ставит отдельный скрипт, интерфейс запускается из ui-go с переменной UI_REPO_DIR. В браузере его открывают на http://127.0.0.1:5001.

Репозиторий psmdb-sandbox и скрипт зависимостей

Скрипт рассчитан на macOS, Debian и системы семейства RHEL. Для стенда в Docker Percona даёт --docker --ui. Облако и KVM добавляются флагами --aws, --gcp, --azure и --libvirt. --dry-run показывает, что скрипт собрался поставить, и на этом останавливается. Ниже клон, зависимости под Docker и запуск UI.

git clone https://github.com/percona/psmdb-sandbox.git
cd psmdb-sandbox
./scripts/install-prerequisites.sh --docker --ui
cd ui-go
UI_REPO_DIR=.. go run .

В майском описании интерфейс для локальной работы и по умолчанию слушает только 127.0.0.1. Без своей аутентификации его не выставляют в интернет. Октябрьская инструкция снова ведёт на тот же адрес. На VPS, где уже есть сайт, 5001 оставляют на петле, а не публикуют рядом с nginx.

На обычном VPS с WordPress nginx, PHP-FPM и MariaDB остаются как были: стенд живёт отдельно, в Docker или на другой машине. Внутри него MongoDB, сборка Percona, Community или Enterprise, и то, что вы сами включили рядом. Если Docker всё же на той же машине, что сайт, UI до деплоя проверяет, не заняты ли порты. Шардированный кластер рядом с php-fpm всё равно тесный сосед.

MongoDB 9.0.2: community есть, PSMDB 9.0 ещё нет

Для нового стенда MongoDB 9.0 теперь явный выбор. В примере Percona дистрибутив community, ветка 9.0, версия 9.0.2. PMM и PBM в этом примере выключены.

replsets = {
  rs01 = {
    mongodb_distribution = "community"
    mongo_release        = "9.0"
    mongo_version        = "9.0.2"
    enable_pmm           = false
    enable_pbm           = false
  }
}

На линейке 9.x песочница пока не включает PBM, mongot и ClusterSync: их ещё не проверили вместе с этой веткой. Сочетание, которое ставить нельзя, UI отклоняет до установки. Пункты PSMDB 9.0 появятся в интерфейсе, когда выйдут пакеты. До тех пор девятка в примере это community, не сборка Percona.

На целях в виде виртуальных машин можно взять пакеты MongoDB Community или Enterprise, не только PSMDB. Так сравнивают версии или повторяют чужой случай на upstream. Часть значений по умолчанию зависит от дистрибутива. У Community и Enterprise PBM делает логические бэкапы. У PSMDB физические остаются выбором по умолчанию.

ClusterSync, Vault и mongot на том же стенде

Percona ClusterSync for MongoDB (PCSM) поднимается сразу парой кластеров: источник, приёмник и ClusterSync между ними. Версию PCSM выбирают в UI, хосты видны в панели Hosts & Connections. Если мониторинг включён, PMM показывает ход репликации. Это прогон миграции в лаборатории. Боевую базу одной кнопкой он не перевозит.

PMM 3.10 умеет расширения рядом с сервером PMM, чтобы управлять базами, а не только смотреть графики. Песочница создаёт общий токен, включает встроенный Nomad и проверяет, что версия PMM эти расширения принимает. Отдельно можно поднять хосты или контейнеры только с pmm-client и уже с них ставить MongoDB через расширения.

PBM и агенты PMM включаются на каждый кластер или replica set. PMM можно выключить на всё окружение сразу. Когда задача не в графиках, стенд меньше и собирается быстрее. Заметка ведёт на документацию PBM 2.17.0.

Шифрование данных PSMDB на диске вешается на всё окружение через HashiCorp Vault. Песочница поднимает отдельный Vault, инициализирует его, снимает печать (unseal) и прописывает его каждому replica set и каждому шарду. Появилась и аутентификация LDAP. Настройку TLS переписали и убрали повтор одних и тех же переменных. Журнал аудита был ещё в первом выпуске, так что шифрование, LDAP, TLS и аудит собираются в одном стенде.

Полнотекст и векторный поиск добавляются через mongot, в том числе сборки Percona Search for MongoDB. Это работает и на replica set, и на шардированном кластере. На 9.x mongot как раз из того, что UI пока включить не даёт.

Шарды, Destroy и SeaweedFS вместо MinIO

Уже поднятое окружение можно нарастить, не собирая его заново. Разрешены три роста: больше шардов через shard_count, больше узлов в replica set через data_nodes_per_replset, новый кластер или replica set в том же окружении. Убрать шард или поменять число config server UI не даст. Блок срабатывает до terraform apply. На облаке кнопка Deploy делает terraform apply и затем нужный плейбук Ansible: add_shard.yml, add_replset_member.yml или main.yml.

Destroy больше не стирает описание. Окружение остаётся со статусом Destroyed, и его можно поднять снова одним нажатием. Галочка удаляет и описание. Действие Duplicate копирует окружение в новое, если нужны два похожих стенда рядом.

YCSB в этой песочнице заменили на plgm, генератор нагрузки Percona. В UI появился раздел Load Generator. На AWS и GCP есть блок Compute & Storage: выделенные IOPS и пропускная способность, отдельный тип диска для config server, compact placement. Пресеты подставляют профили вроде Atlas M30-M80, нагрузку на диск и свежее поколение машин. Поля остаются ручными, значения UI проверяет по мере ввода. Для Docker на своём VPS этот блок про облачные диски, его можно не заполнять.

Облачные плейбуки Ansible теперь идут параллельно, по одному прогону на инвентарь. Сервер PMM поднимается в то же время. У каждого прогона своя вкладка лога, статус и сколько времени уже прошло. Отмена останавливает все параллельные прогоны, которые задача успела запустить. Предзагрузка метаданных GCP стала быстрее.

На Libvirt/KVM можно создать гостей aarch64, в том числе эмулировать ARM на хосте x86_64. Провайдер Libvirt обновили до 0.9.7. Для Docker-окружений S3-совместимое хранилище бэкапов сменилось: вместо MinIO теперь SeaweedFS.

Ключи AWS, GCP и Azure вводятся на странице Settings и там же проверяются. Они лежат в отдельных каталогах конфигурации и не подменяют то, что уже настроено в шелле. Изолированный каталог не заменяет отдельную учётку. Боевые ключи в лабораторный UI на машине с сайтом лучше не класть.

Groenewold в конце пишет прямо: PSMDB Sandbox это community-проект, поддержкой Percona он не покрыт. Баги и идеи идут issue или pull request в тот же репозиторий. В майском посте лицензия Apache 2.0.

На Debian путь к разовому стенду короткий. Клон psmdb-sandbox, скрипт с --docker --ui, интерфейс на 127.0.0.1:5001. Для MongoDB 9.0 в примере берут community 9.0.2 и оставляют PMM с PBM выключенными. Сайт на MariaDB от этого не меняется. Когда проверка кончилась, Destroy оставляет карточку окружения. Полный снос включает галочка.

Источники и ссылки


Комментарии загружаются…