meta(handoff): tandemmebel DNS cutover 2026-06-05

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-05 20:11:53 +03:00
parent 539f1a07ed
commit 7bba8cf853

View File

@@ -1,69 +1,47 @@
---
_last_updated_: 2026-06-04T12:00:00+03:00
session_id: 2026-06-04-books-vds-disk-full-remediation
_last_updated_: 2026-06-05T00:00:00+03:00
session_id: 2026-06-05-tandemmebel-dns-cutover
---
# Next session handoff
_Сессия: разбор disk-full алерта Rusonyx на books VDS (89.253.255.133). Причина найдена,
диск 96%→44%, спам-петля заглушена, guard поставлен. Ничего не висит. Вики обновлён + закоммичен (`b0559fdb`)._
_Сессия: tandemmebel.ru мигрировал на RUVDS (владелец сам перенастроил DNS). Проверено, зафиксировано
в `.tasks/iis-migration-to-ruvds.md` (commit `539f1a07`). Source НЕ заглушен — user-decision держать
как warm rollback. Ничего не висит._
## Recent commits
- `b0559fdb` wiki(books-vds): disk-full incident 2026-06-04 + Bookva->slovo job scoping
- `539f1a07` task(iis-migration): tandemmebel DNS cutover 2026-06-05
## Что сделано (books VDS, 04.06)
## Что сделано (iis-migration, 05.06)
-**Диск 96%→44%** (53/122 ГБ). Освобождено ~64 ГБ: обрезаны runaway json-логи
`books-task-runner` (32.8 ГБ) + `bookva-task-runner` (5.6 ГБ); снесены 11 orphan
BuildKit-билдеров + 9 `*_state` volumes (~26 ГБ).
-**Durable guard:** `/etc/logrotate.d/docker-containers` (copytruncate 200M, rotate 3) +
hourly `/etc/cron.d/docker-logrotate`. Без рестарта докера. crond active, тест-ран чистый.
-**Root cause:** `books-task-runner` (тенант slovo) error-loop'ил в Ozon по продавцу
**Bookva (client_id 50542)**, чей `api_key` в `books-db.sellers` **намеренно подменён на
слововский** (`9683…`) как ревокация доступа books→Bookva-Ozon. Спам шёл из legacy
seller-перебирающих agenda-джоб без скоупа.
-**Фикс:** проставлен `data.idSeller=2` (slovo) пяти legacy-джобам в `books-job-scheduler-mongo`
(`ozon fbs postings syncronization`, `generate old prices`, `ozon fbs products syncronization`,
`create ozon products in incorrect state report`, `put on sale products`). Залипшие overdue-прогоны
оборваны (unlock `lockedAt:null` + `docker restart books-task-runner`).
**Invalid-Api-Key 6448/мин → 0**, джобы отработали по slovo и перепланировались.
-**Deploy-durable** (user спрашивал): эти джобы legacy (без `data._fromConfig`), reconciler
(`RECONCILER_ENABLED=true`) трогает только `_fromConfig`-джобы; в `tasks.json` (в образе) у них
`schedule:null` → пропускает. Эмпирика: `stocks-sync idSeller:2` пережил деплой 31.05.
- ✅ Сверка полноты: 7 seller-перебирающих тасок — все заскоуплены; reconciler-gen джобы уже на
`salesChannels:[2]`. Группа В снята: Bookva-канал = `type=ym` (Яндекс), Ozon-канала Bookva нет.
-**tandemmebel.ru / www / maljarka → RUVDS** (`80.64.31.36`) — authoritative ns1.reg.ru + 8.8.8.8 +
1.1.1.1 + Yandex. apex+CNAME сработал (www/maljarka follow apex). Sn: `tandemmebel.ru`/`www` 200 OK;
`maljarka` 502 = pre-existing CMS-дефект (на source ровно так же, не регрессия).
-Снята scope-exception 2026-05-24 (tandemmebel больше не «остаётся на windows»).
-**Source оставлен как rollback** — user-decision. Сайт `snolla` = общий catch-all, нельзя `Stop-Website`.
## ⚠️ НЕ ДЕЛАТЬ (специфично для этого инцидента)
## Баланс DNS (на 05.06)
- **НЕ «чинить» ключ Bookva (50542) в `books-db.sellers`** — он сломан НАМЕРЕННО (подменён на
слововский) как ревокация. Живой ключ Bookva — в `bookva-db`/конфиге, для тенанта bookva.
Если снова увидишь `Invalid Api-Key` по 50542 в books-стеке — это не баг ключа, а недо-скоупленная
джоба. Полный разбор: `.wiki/entities/books-vds.md` § Disk-full incident.
- **RUVDS `80.64.31.36` (14):** kupimknigi.spb.ru, emspb.ru+www, pilorama98.ru+www, labtools.pro+www,
labtools.ru+www, rimiz.ru+www, tandemmebel.ru+www, maljarka.tandemmebel.ru.
- **windows-source `94.19.247.14` (11):** snolla.com + 9× `*.snolla.com` (incl `tandemmebel.snolla.com`,
`rimiz.snolla.com`) + … — все ещё на этой машине. Полный decommission невозможен пока они тут.
## Follow-up'ы (НЕ блокеры)
## Спроси user'а
| Что | Деталь |
|---|---|
| Каноничный фикс скоупа | legacy seller-джобы стоит перенести в `tasks.json` со скоупом ИЛИ вывести из эксплуатации (возможно, дублируют reconciler-gen). Mongo-правка надёжна, но если релиз даст им `schedule` в tasks.json без скоупа — Bookva-доступ вернётся. → сказать разработчикам books. |
| wiki-drift | `bookva-*` stack + books-task-runner/scheduler не в stack-inventory `books-vds.md`; нужен re-inventory. |
| Native log rotation | daemon.json `max-size`/`max-file` + docker restart — не делал (нужен maintenance window); logrotate-guard покрывает. |
## Открытые треки (.admin — ещё живые)
| Трек | Готовность | Entry-point |
|---|---|---|
| `harden-books-vds-exposed-ports` | ⚪ ready (user сказал «пока нет» на mongo-allowlist) | `.tasks/harden-books-vds-exposed-ports.md` |
| `books-bookva-user-whitelist-gathering` | ⚪ ready — gathering от учредителя | `.tasks/STATUS.md` |
| `stateful-split-volume-copy` / `infra-inventory` | ⚪ ready | `.tasks/STATUS.md` |
- Когда переедут остальные 11 `*.snolla.com` → разом `Stop-Website snolla` + архив `C:\sites\snolla`
(8.66 GB) → kreknin. До тех пор source держим живым.
- `maljarka.tandemmebel.ru` 502 — чинить CMS-тенант отдельно? (не блокер, pre-existing).
## Не делать (preemptive guards)
- **Не возвращать `:9200` / stateful-порты на `0.0.0.0`** без IP-allowlist (books VDS, ransom-бот).
- **Не `ssh + docker compose up -d`** на VDS Portainer-stacks — только Portainer API (искл. traefik/portainer).
- **Не `Stop-Website snolla`** на windows-source — 11 живых тенантов (`*.snolla.com`), включая
`tandemmebel.snolla.com`. Не выключать CMS-тенант tandemmebel по той же причине.
- **Не глушить tandemmebel.ru индивидуально** без явного запроса — user выбрал warm rollback.
- IIS-правки требуют **elevated shell** (текущий `vitya` — не admin; W3SVC running).
- **branch ahead от origin** — push без явного grant'а (Rule 4). Этой сессии grant НЕ давали.
## Memory updates за сессию
- (нет нового файла) — инцидент + корректный root-cause + «не чинить ключ Bookva» зафиксированы
в `.wiki/entities/books-vds.md` (закоммичено `b0559fdb`).
- (нет нового файла)