Коротко. Новая нода ставится только до stage-1 — без собственной федерации, иначе у неё будет свой deployment_id и add-node не сработает. Дальше на ведущей ноде запускается install-ng с -I -m -x: -x расширяет кластеры модели на новые ноды. Требования жёсткие: не меньше трёх ONLINE management-нод и рост на нечётное число. -x переконфигурирует все ONLINE-ноды, то есть это окно обслуживания.
1. Когда scale-out, а не scale-up
Расширение добавлением нод — штатный путь роста. Вендор заявляет раскладку без обязательного rebalance (Dynamic Data Placement), то есть данные не нужно переливать целиком: система перераспределяет размещение по мере работы и ремонта.
Практический смысл: ёмкость и производительность растут добавлением нод, а не заменой полок. Ограничения по платформам: минимум три ноды для P200 и Z200, четыре для X200 (два twin-сервера, каждый с двумя compute-модулями).
Расширение — плановая работа с окном. Добавление ноды меняет модель, а модель рендерит конфиги всех нод кластера.
2. Требования, которые проверяются до окна
- Не меньше трёх
ONLINEmanagement-нод. Продукт считает машины со статусомONLINEи при их числе меньше трёх отказывается расширять кластер. - Рост на нечётное число. Попытка вырасти на две ноды даёт отказ: кластер расширяется на одну, три, пять.
- Одинаковый
deployment_id. Все машины в очереди — из одного развёртывания. Нода со своимdeployment_idв кластер не войдёт. - Сеть. Storage-сеть должна быть доступна новой ноде; без неё
machine.initializeпадает или heartbeat не идёт. - Роли. Новая нода получает ту роль, которая нужна кластеру; не смешивать роли «на глаз».
3. Подготовка новой ноды: только stage-1
Ключевое правило: нода ставится только через stage-1 (установка ОС на диски), затем
перезагружается в дисковую ОС. Никакого stage-2 (--init-federated) на добавляемой ноде.
Почему: stage-2 создаёт локальную федерацию, у ноды появляется собственный deployment_id.
Внешне она будет видна в модели, но machine.initialize упадёт, heartbeat не пойдёт, и нода
останется NOTCONFIGURED. Лечится только переустановкой stage-1 без stage-2.
После stage-1 у ноды часто storage-порт в состоянии admin-DOWN — его надо поднять и дать адрес. Проверка линка:
ip link set <storage-dev> up
cat /sys/class/net/<dev>/carrier # ожидается 1
4. Очередь: что в ней должно быть
Очередь add-node собирается по тем же правилам, что и первичная установка, но с одним отличием:
machine.json описывает все машины кластера, а не только новую.
Требования к содержимому:
machine.json— ровно реальные машины (новая + существующие), без фантомных записей;- NIC описываются по MAC-адресам,
nictype: "ether"(значениеethernetдаётValidationError); - один management-IP не должен появляться на двух портах — иначе
duplicate NIC network; deployment_id— тот же, что у ведущей ноды.
Отдельная ловушка: nr_of_nodes в config-ng.ini. Если ставится один узел, а установщик ждёт
второй, прогон висит на ожидании удалённых PXE-нод. Значение nr_of_nodes = 0 отключает это
ожидание.
5. Запуск расширения на ведущей ноде
Расширение запускается на ведущей ноде — той, что владеет федеративной моделью. Перед запуском снять старый маркер завершения:
sudo rm -f /tmp/.unattended_install_finished
sudo -u marvin bash -c "cd /home/marvin && setsid nohup \
/opt/ampli/apps/marvinbase/venv/bin/python /opt/ampli/apps/marvinbase/tools/install-ng.py \
--config /opt/ampli/apps/marvinbase/queue/<QUEUE>/config-ng.ini --product activescale \
-t combined -I -m -x -a -AST -C -ASC -D -d \
> /tmp/ingX.log 2>&1 & echo LAUNCHED=\$!"
Флаги, которые важны именно для расширения:
| Флаг | Что делает |
|---|---|
-I |
инициализирует добавляемые ноды |
-m |
конфигурирует ноды |
-x |
расширяет кластеры модели на новые ноды |
-a -AST -C -ASC |
arakoon / storage-аккаунты / колонка / scaler |
-d |
DSS |
-e машины не импортирует: они попадают в модель через инициализацию или Model API.
Окно. -x переконфигурирует все ONLINE-ноды кластера, а не только новую. Это не «тихая»
операция: часть служб перезапускается, конфиги перерендериваются. Совмещать её с апгрейдом или
заменой диска нельзя.
6. Что делает -x внутри
extend_clusters() проходит по существующим кластерам модели и добавляет недостающие ноды.
Ключевой момент: расширять можно только то, что уже есть в модели.
Для федерации это выглядит так: если кластер federated_model создан при первичной установке
(путь A — первая нода ставилась без -S), расширение само добавит приложения
mongodb_federated_node2 и mongodb_federated_node3 на новые ноды и сконфигурирует их.
Обратный случай: если первая нода ставилась с -S (scale-out без локальной федерации), кластера
federated_model в модели нет — расширять нечего, и федерация останется одиночной. Это не
«баг расширения», а следствие выбранного пути установки; подробно — в статье
Федерация: путь A и путь B.
7. Проверка
Критерии закрытия стадии:
| Что | Ожидаемо |
|---|---|
/tmp/.unattended_install_finished |
0 |
GET /model/machine/ |
все ноды ONLINE |
GET /model/mongocluster/ (федерация) |
приложения mongodb_federated_node1..N |
| реплика-сет федерации | PRIMARY + нужное число SECONDARY |
GET /federated/_status/ с каждой ноды |
200, меньше 50 мс |
| барометр DSS | ok |
| S3 PUT/GET round-trip | 200, тело совпадает |
| события | нет новых CRITICAL за контрольный период |
Статус 200 и «меньше 50 мс» — не формальность: 30-секундный таймаут на этом запросе означает
зависание топологии клиента и обычно указывает на несмоделированную федерацию.
8. Грабли
| Симптом | Причина | Что делать |
|---|---|---|
too few ONLINE MGMT machines found |
меньше трёх ONLINE нод |
проверить статусы машин, дождаться восстановления |
Can't grow cluster … (even number) |
рост на чётное число | расти на нечётное |
нода в модели, но initialize падает |
у ноды своя федерация | переустановить stage-1 без stage-2 |
duplicate NIC network … |
один mgmt-IP на двух портах | в machine.json только реальные UP-NIC по MAC |
machine.initialize … targets missing |
нет NIC в модели / фантомные машины | очередь = ровно реальные машины |
nictype ValidationError |
ethernet вместо ether |
исправить значение |
423 LOCKED |
залипшая блокировка прошлой попытки | снять задачу, не повторять запуск |
NOTMANAGED на диске |
капкан, а не статус | разобраться до расширения, иначе диск не введётся |
Отдельно: в 7.1 появился автоматический scale-out через GUI. Он удобен, но требует сервисного
passcode и опирается на те же требования (три ONLINE ноды, нечётный рост). Если модель
несогласована, GUI-путь упадёт так же, как CLI.
9. Профилактика
- Проверять статусы всех нод и состояние федерации до окна, а не в окне.
- Держать один
deployment_idна кластер и не «собирать» ноды из разных развёртываний. - Не описывать NIC шаблонными именами: только реальные интерфейсы по MAC.
- После расширения — сверить число нод в модели, приложения федерации, реплика-сет и ответ
/federated/_status/; только потом закрывать окно. - Фиксировать в журнале обслуживания, каким путём ставилась первая нода: от этого зависит, будет ли федерация расширяться автоматически.
Источники
- Z200 Datasheet — бесшовное расширение, минимум нод (2026-11-07)
- Software Documentation Center (2026-11-07)
- Наша практика (обезличено): add-node и расширение кластера на 3-нодных стендах, разбор «No suitable management server» из-за несмоделированной федерации.
- Обновлено: 2026-11-07.