Коротко. MACHINE_DOWN по ноде, которая пингуется и отвечает по SSH, почти всегда означает не отказ железа, а разрыв внутренней storage-сети: порт свича в чужом VLAN или снятый кабель. Модель при этом тормозит, у членов реплик появляется health=0, а column.resources обнуляется. Порядок разбора: ping по storage-адресам со всех нод → состояние реплик → MAC-таблица свича.
Симптом
- Письма и GUI:
MACHINE_DOWNCRITICAL по одной ноде, повторяется ровно раз в час (интервал чекера). - Сама нода: пингуется по mgmt-адресу, SSH отвечает, диски в модели
ONLINE, службы живы. - Побочно:
DSS_STORAGEPOOL_NOT_UPDATED,column.resources=0, задачи ленты/сканеров падают (coldstorage.tape_drive_verify—FAILEDкаждые несколько минут). - Запросы к модели по «провинившейся» ноде идут с таймаутом в десятки секунд.
Что проверить первым (read-only)
-
Живость ноды не по mgmt, а по storage. С каждой ноды — до всех storage-адресов:
bash for ip in <STORAGE_NET>.1 <STORAGE_NET>.2 <STORAGE_NET>.3; do ping -c 2 -W 1 "$ip" >/dev/null && echo "$ip ok" || echo "$ip FAIL" doneОжидаетсяokпо всем адресам с каждой ноды. ЛюбойFAIL— разрыв кольца, дальше железо не смотреть. -
Состояние реплик.
replSetGetStatusпо трём базам читается через venv продукта (py2 + TLS, PEM/opt/ampli/cfg/mongo/ssl/<rs>/mongodb_node1.pem) — нужен инженер. Ожидается три члена, у каждогоhealth=1. Строка(not reachable/healthy) h:0означает «процесс недоступен по сети», а не «данных нет». -
Карта портов на ноде:
bash sudo ss -ltnp | grep -E ':2701[789]' sudo cat /etc/network/interfaces.d/marvinОжидается: листенеры mongod на месте и в файле интерфейсов прописан storage-адрес с нужной маской/mtu. Если storage-адрес получен на порту, который по факту в другом VLAN, файл покажет расхождение с проектом. -
Линк и скорость storage-порта:
bash ip -br link show ethtool <STORAGE_IF> | grep -E 'Speed|Link detected'ОжидаетсяUP,Link detected: yes, скорость по проекту.no— кабель/порт. -
MAC-таблица свича. Порт ищем по MAC ноды, а не по описанию порта. Команда вывода таблицы зависит от модели свича (
show mac-address-tableили её аналог в CLI площадки). Ожидается: MAC storage-порта ноды выучен на том порту, который в проекте назначен storage-VLAN. Если MAC виден на порту с чужим VLAN — это и есть корень.
Причина
1. Storage-сеть — это кольцо, а не «ещё один интерфейс»
Ноды видят друг друга по выделенной сети хранения. Репликация модели, DSS и служебные проверки
идут по ней. MACHINE_DOWN поднимает чекер, который судит о доступности ноды по этому кольцу;
mgmt-сеть для него не доказательство.
2. Разрыв даёт каскад, похожий на смерть ноды
Когда кольцо разорвано, у каждой пострадавшей реплики третий член помечается недоступным. Модель на такой реплике не может собрать кворум быстро, запросы висят, задачи, которым нужен ресурс колонки, падают. Всё это читается оператором как «нода умерла» и «данные потеряны», хотя железо и диски целы.
3. Самая частая физическая причина — VLAN порта
Порт свича, описанный как storage, оказывается в VLAN управления, а соседний — наоборот. После любой правки VLAN (или перекладки патч-панели) конфигурация может не совпасть с проектом. Сброс питания конфиг свича обычно не теряет — проверять надо фактические VLAN, а не гипотезу «свич сбросился».
4. Ложные следы
- «Нода упала» — узел
ONLINE, дискиONLINE, службы живы. Красное — сетевое. - «Данные потеряны» —
health=0у члена реплики означает недоступность процесса по сети. До любых выводов о данных проверяетсяpingпо storage-сети. - «Вентилятор/PSU» — отдельный класс событий, к
MACHINE_DOWNотношения не имеет.
Решение (штатное)
- Найти порт по MAC. В таблице MAC-адресов свича (команда зависит от модели) сопоставить MAC storage-интерфейса ноды с портом. Описания портов не использовать как источник истины.
- Привести VLAN порта к проекту. На порту, куда фактически подключён storage-интерфейс,
выставить access-VLAN сети хранения (значение — из проектной схемы площадки):
configure interface <PORT> switchport access vlan <STORAGE_VLAN> exit exit write memoryОжидается подтверждение записи и совпадениеstartup-configсrunning-config. - Проверить кольцо сразу после правки — пункт 1 списка проверок: все три адреса
okс каждой ноды. Только после этого идти дальше. - Дать репликам пересобраться. PRIMARY + 2×SECONDARY, все
health=1. Модель по ноде должна отвечать быстро. - Убедиться, что задачи вернулись: периодические задачи (лента, сканеры, обновление колонки)
снова
SUCCESS,column.resourcesне ноль. - Кабель и оптика — если MAC не виден на порту вообще: проверить линк в
ethtool, заменить патч-корд/модуль, повторить пункт 1.
Если штатный путь недоступен
Временная мера, не штатно. Если правка VLAN невозможна в рабочее окно, допустимо переключить
storage-интерфейс ноды на резервный порт свича, заранее настроенный в тот же VLAN, и записать это
как временную схему с планом возврата. Перекладывать кабель «на любой свободный порт» нельзя: пока
VLAN не совпадает с проектом, кольцо останется разорванным, а MACHINE_DOWN продолжит подниматься.
Проверка
pingпо трём storage-адресам с каждой ноды →okбез потерь.- Реплики:
PRIMARY + 2×SECONDARY, всеhealth=1,ALL_HEALTHY. https://<MGMT_IP>:8443/model/machine/<MGUID>/→200за доли секунды (не 20–25 с).- S3-фронт на каждой ноде →
307и заголовокServer: Quantum-ActiveScale. MACHINE_DOWNпо ноде →HANDLED_AUTO; новых подъёмов нет в течение часа (следующий цикл чекера).- Периодические задачи ленты/колонки →
SUCCESS.
Профилактика
- Хранить проектную схему портов/VLAN (см. роли портов и VLAN) и сверять её с
startup-configсвича после каждой правки. - Любую правку VLAN заканчивать
write memoryи проверкойstartup-config. - В мониторинг добавить
pingпо storage-сети между нодами — ранний сигнал доMACHINE_DOWN. - Порт искать по MAC; описания портов на свичах часто не соответствуют факту.
Источники и дата
- Software Documentation Center (доступ 2026-11-07).
- Наша практика (обезличено): разбор
MACHINE_DOWNпри живой ноде на 3-нодном кластере — порт свича в чужом VLAN; после приведения VLAN к проекту кольцо, реплики и задачи восстановились, событие закрылось автоматически. - Обновлено: 2026-11-07.