Files
admin/.tasks/NEXT_SESSION.md
vitya 11554d45ac wiki(ingest): vds-kzntsv network-stack mismatch RCA + ifupdown anti-pattern
Incident 2026-05-28 ~05:45–13:52 MSK на vds-kzntsv. ~2.5ч активного outage
+ ~5.5ч на эфемерной статике до окончательного fix хостером.

Revised RCA: наш netplan+systemd-networkd конфликтовал с provider's expected
ifupdown stack. Их start/ipadd procedure ожидает чистый ifupdown и не может
auto-recover когда networkd «держит» eth0. 8 дней работало потому что
networkd сам тянул DHCP. Когда что-то на стороне Rusonyx разорвало
DHCP-binding — auto-recovery не сработала.

Fix: systemctl mask netplan + systemd-networkd* (на running system без stop —
IP и SSH сохранились), Rusonyx ребутнул VM и положил чистый
/etc/network/interfaces.d/ifcfg-eth0 через свой start/ipadd. Netmask /18,
gw 89.253.192.1, чистый ifupdown.

Wiki:
- NEW concepts/vds-kzntsv-dhcp-outage-2026-05-28 — full RCA + recovery
  runbook (эфемерная статика + permanent-fix via ifupdown) + diagnostic
  dot-graph + revised lessons-learned + anti-pattern
- NEW sources/vds-kzntsv-incident-2026-05-28 — timeline 05:25 backup OK →
  08:43 statics → 13:52 final reset; provider's ifcfg-eth0 content; ticket
  text reference
- UPDATE entities/vds-kzntsv — mask /18, ifupdown stack, kernel cmdline
  net.ifnames=0 объясняет eth0 naming, hypervisor hw80, pass-store путь,
  Known issues §
- UPDATE concepts/rusonyx-vps-onboarding-quirks — quirk #9 переписан про
  /18 layout + canonical ifcfg, quirk #10 NEW про ifupdown vs netplan
  stack choice + bootstrap mask commands
- UPDATE index.md + log.md

Tasks:
- STATUS header: incident RESOLVED summary
- NEXT_SESSION: следующая сессия — cleanup netplan-artifacts (optional),
  registry GC (~20G pending), board-viewer-build unhealthy разбор

Memory (out-of-repo): vds-kzntsv-rusonyx-network-recovery переписан с
revised RCA — canonical bootstrap step «mask netplan/networkd» для всех
Rusonyx Ubuntu VDS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 14:12:14 +03:00

6.1 KiB
Raw Blame History

_last_updated_, session_id
_last_updated_ session_id
2026-05-28T14:15:00+03:00 2026-05-28-vds-kzntsv-network-stack-mismatch

Next session handoff

Контекст сессии

vds-kzntsv (89.253.255.94) был недоступен по сети ~05:4508:30 MSK 28 мая 2026 (~2.5ч активного outage). С 08:43 жил на эфемерной статике (через VNC) до окончательного fix хостером в 13:52 MSK — они переписали конфиг через свой start/ipadd procedure, мы предварительно masked netplan + systemd-networkd через SSH.

Revised RCA (после resolution): наш сетевой стек был mixed (netplan+networkd поверх provider's expected ifupdown). 8 дней работало потому что networkd сам получал DHCP. Когда что-то на стороне Rusonyx разорвало DHCP-binding (28.05 утром) — их auto-recovery start/ipadd не смогла применить static config, потому что networkd «держал» eth0. Fix = mask netplan/networkd, оставить только ifupdown.

LIVE сейчас

  • vds-kzntsv работает на чистом ifupdown stack: /etc/network/interfaces.d/ifcfg-eth0 (provider-managed), netmask /18 (255.255.192.0), gw 89.253.192.1. netplan + systemd-networkd* masked.
  • 24 docker контейнера up включая весь стек (gitea, registry, verdaccio, postgres, mariadb, mongo, redis, owncloud/oCIS, modulair-rag×4, mssql, board-viewer, traefik, portainer, ntfy, vds-ops-mcp, vds-docker-proxy-ro). 1 unhealthyboard-viewer-build (предсуществующий, не связан с инцидентом).
  • Диск 79% (118G/158G) — после quick GC сегодня утром (build cache 10.6G + dangling 0.3G + container logs ~3G truncated). Registry GC ~20G storage не сделан — pending.
  • Wiki, memory, STATUS — обновлены с финальным RCA. Commit за сессию pending (см. ниже).

Что делать на следующей сессии (по приоритету)

1. Cleanup netplan-artifacts (опционально, низкий приоритет)

После resolution на сервере остались netplan конфиги (не активны, netplan masked, но лежат):

  • /etc/netplan/01-eth0.yaml — мы создали 28.05 утром при попытке fix через netplan
  • /etc/netplan/50-cloud-init.yaml — от cloud-init
  • /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg — мы создали (с опечаткой disbaled в одной из попыток, потом исправили)

Можно удалить или оставить — они не влияют (netplan masked). Если соберёмся когда-нибудь снять mask с netplan — следует тогда clean up. Сейчас не трогаем.

2. Registry GC (~20G storage reclaim — pending)

Из task #2 в TaskList. Окно read-only=true на 5-15 мин. Делать только в low-traffic окно — registry push/pull временно недоступен.

# на VDS
sudo docker exec registry registry garbage-collect --delete-untagged=true /etc/docker/registry/config.yml
# проверка размера до/после
sudo du -sh /opt/stacks/registry

3. board-viewer-build unhealthy — разбор

Предсуществующий, не связан с инцидентом. Если беспокоит — sudo docker logs board-viewer-build | tail -50 + проверить healthcheck в compose. Иначе можно --no-healthcheck если он не нужен в running container.

4. SLA / RCA от Rusonyx — follow up (опционально)

В первом нашем тикете запрашивали технический RCA + SLA-компенсацию. User просил это не муссировать. На усмотрение — можно через несколько дней спросить «приходил ли формальный RCA», но force'ить не нужно.

Спроси user'а

  • Registry GC — окно ~5-15 мин в read-only=true, делать ночью или сейчас?
  • Cleanup netplan artifacts — оставить как есть или зачистить /etc/netplan/*? (Low-priority)
  • Push wiki + memory + tasks — push'нуть commit'нутые изменения в origin? (Per project-discipline нужен per-session grant, пока не давал)

Не делать (preemptive guards)

  • НЕ unmask netplan/systemd-networkd на vds-kzntsv. Anti-pattern для Rusonyx (см. concept).
  • НЕ редактировать /etc/network/interfaces или /etc/network/interfaces.d/ifcfg-eth0 — provider's start/ipadd procedure перезапишет при любых их manipulations с VM (resize, network reset).
  • НЕ reboot VDS без необходимости — конфиг теперь правильный, но любой их network-action может что-то поменять, и проверить новое состояние придётся через VNC.
  • НЕ делать registry GC без read-only=true mode — rogue push может corrupt'ить blobs.

Memory updates за сессию

  • UPDATE vds-kzntsv-rusonyx-network-recovery.md — переписан с revised RCA: provider stack = ifupdown, netmask /18, canonical bootstrap-step mask netplan/networkd. Anti-pattern: netplan на Rusonyx.
  • Уточнение паттерна: при сетевых проблемах на Rusonyx VDS первым делом проверять что стек = ifupdown (не netplan). systemctl is-enabled netplan systemd-networkd networking — должно быть masked masked enabled.

Recent commits

  • (pending — этот сеанс ещё не commit'ил; wiki + memory + STATUS + NEXT_SESSION готовы к одному commit'у).