docs(.wiki): ingest iis-host-migration attempt 2 (success) + docker-host-loopback-detect
Phase 10 успех — recipe из post-mortem применён полностью: backend port :8089, bak-pre-attempt2 серия, IIS binding + Stop+Start, loop-detect через docker exec wget, 2 canary phone-tests от мобильного интернета, batch 9 cms; stayer routes user-ом подтверждены internal → .yml.disabled. Touched: - sources/iis-host-migration-2026-05-19.md — append Phase 10 - concepts/iis-migration-2026-05-19-postmortem.md — footer attempt-2-succeeded с маппингом recipe A-G - concepts/recovery-architecture-snapshot.md — major rewrite, chain через host-IIS:8089, VM = parallel fallback - entities/snolla-recovery-vm.md — status parallel-fallback, 24-48h soak - entities/windows-recovery-host.md — IIS sites active prod - NEW concepts/docker-host-loopback-detect.md — recipe loop-detect + WinHTTP-proxy gotcha - index.md, log.md
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Snolla Recovery VM (VirtualBox) — active prod
|
||||
title: Snolla Recovery VM (VirtualBox) — parallel fallback после attempt 2
|
||||
type: entity
|
||||
tags: [vm, virtualbox, windows, iis, cms, recovery, active]
|
||||
tags: [vm, virtualbox, windows, iis, cms, recovery, parallel-fallback]
|
||||
sources: [../sources/nas-recovery-session-2026-05-18.md, ../sources/iis-host-migration-2026-05-19.md, ../concepts/iis-migration-2026-05-19-postmortem.md]
|
||||
updated: 2026-05-19
|
||||
---
|
||||
@@ -10,7 +10,9 @@ updated: 2026-05-19
|
||||
|
||||
VirtualBox-VM на [[windows-recovery-host]], в которой работает CMS-стек (IIS + .NET + код CMS). Импортирован из OVA-снапшота 2024-10-27, который лежал в Hyper Backup репо.
|
||||
|
||||
**Статус (вечер 2026-05-19 после revert):** VM **снова active prod**. Был attempt мигрировать на host-IIS в течение дня, через ~10 минут после "done"-объявления пользователь увидел `502 Bad Gateway` → `TOO_MANY_REDIRECTS` → revert (см. [[iis-migration-2026-05-19-postmortem]]). VM поднята из savestate командой `VBoxManage startvm "snolla-recovery"`, потребовался `ipconfig /release /renew` через guestcontrol для оживления network adapter (recipe из [[vbox-windows-stability-tuning]]). Traefik backends восстановлены из `*.bak-phase3-2026-05-19` → trafic снова идёт через VM. Всё, что наработано на хосте для миграции, осталось inert на хосте для следующей попытки.
|
||||
**Статус (после attempt 2 на host-IIS, 2026-05-19 вечер):** VM **running, но больше не на prod-пути** — все 11 cms hosts мигрированы на host-IIS:8089 ([[iis-host-migration-2026-05-19]] Phase 10). VM держится как **parallel fallback** в течение 24-48h soak (recipe-D из [[iis-migration-2026-05-19-postmortem]]). VM NAT port forwards `:18080/:18180/:18181/:18189` холостые — traefik больше не ходит. После confirmed stability — `savestate` (освободит ~3 GB RAM), потом `unregistervm --delete` (освободит ~92 GB на C:).
|
||||
|
||||
История: утром 2026-05-19 attempt 1 миграции сломал prod (Docker NAT loop), был revert на VM. Через тот же вечер — attempt 2 по recipe (backend port `:8089` вместо `:80`, smoke `-MaximumRedirection 0`, phone-test не-LAN) — succeeded. Подробности обеих попыток в `iis-host-migration-2026-05-19` Phases 1-10.
|
||||
|
||||
## Параметры
|
||||
|
||||
|
||||
@@ -34,30 +34,36 @@ updated: 2026-05-19
|
||||
- Соединение с интернетом через **WiFi** (Broadcom 802.11ac, 288 Mbps)
|
||||
- За **VLESS-клиентом v2rayN** (роутер default-route шёл через VPN, пришлось настроить **Bypass LAN** правило с `geoip:private` → direct, иначе входящие 80/443 терялись через asymmetric routing)
|
||||
|
||||
## Что хостит сейчас (после revert 2026-05-19 — см. [[iis-migration-2026-05-19-postmortem]])
|
||||
## Что хостит сейчас (после attempt 2 успешной миграции на host-IIS, 2026-05-19 вечер)
|
||||
|
||||
**Active prod:**
|
||||
|
||||
| Что | Где | Порт (host) | Прим. |
|
||||
|---|---|---|---|
|
||||
| **VirtualBox `snolla-recovery` VM** | `C:\Users\vitya\VirtualBox VMs\snolla-recovery\` | **VRDE 13389, NAT-RDP 23389, NAT-SSH 8022, NAT-HTTP 18080/18180/18181/18189** | **active prod**, обслуживает 11 главных доменов + stayer'ы через traefik |
|
||||
| **traefik 2.6.6** | Docker, network `proxy` | 8000 (http), 4443 (https), 8080 (dashboard) | 11 main routes + 2 stayer routes → all на VM (`host.docker.internal:18080/18180/18181`) + 3 infra routes |
|
||||
| **Native IIS — site `snolla`** | `C:\sites\snolla` (pool `snolla`, .NET v4.0 Integrated, `ApplicationPoolIdentity`) | `*:80`, `*:8089` | **active prod** — catch-all для 11 cms hosts; traefik backend `host.docker.internal:8089` |
|
||||
| **Native IIS — site `stostayer`** | `C:\sites\stostayer` (pool `stostayer`) | `*:8090` | local-only, traefik route `.yml.disabled` (user: «внутренний, наружу не светить») |
|
||||
| **Native IIS — site `stostayer.old`** | `C:\sites\stostayer.old` (pool `stostayer.old`) | `*:8091` | local-only, traefik route `.yml.disabled` |
|
||||
| **traefik 2.6.6** | Docker, network `proxy` | 8000 (http), 4443 (https), 8080 (dashboard) | 11 cms routes → host IIS:8089; 2 stayer routes DISABLED; 3 infra routes |
|
||||
| **MSSQL 2019** | Docker, named volume `mssql_mssql_data` | 1433 | 5 production DB |
|
||||
| **MinIO** | Docker, bind-mount `./data` | 9000 | |
|
||||
| **Elasticsearch 7.10.1** | Docker, bind-mount `./data` | 9200 | books-стек, не CMS |
|
||||
| **imgproxy** | Docker | 8787 | |
|
||||
| **imgproxy-nginx** | Docker | 8788 | |
|
||||
|
||||
**Inert (готовы для следующей попытки миграции, не на prod-пути):**
|
||||
**Parallel fallback (running, без traffic):**
|
||||
|
||||
| Что | Где | Порт (host) | Прим. |
|
||||
|---|---|---|---|
|
||||
| **Native IIS — `snolla`** | `C:\sites\snolla` (pool `snolla`, .NET v4.0 Integrated, `ApplicationPoolIdentity`) | 80, 8088 | сайт + binding'и live, не получает трафика (traefik снова на VM) |
|
||||
| **Native IIS — `stostayer`** | `C:\sites\stostayer` (pool `stostayer`) | 8090 | conn на `www.stostayer.ru,1433` (patched), inert |
|
||||
| **Native IIS — `stostayer.old`** | `C:\sites\stostayer.old` (pool `stostayer.old`) | 8091 | conn → наш `localhost` MSSQL (patched), inert |
|
||||
| **`C:\sites\snolla-identity-manager\`** | папка без IIS-сайта | — | deploy-артефакт, не активен |
|
||||
| **VirtualBox `snolla-recovery` VM** | `C:\Users\vitya\VirtualBox VMs\snolla-recovery\` | NAT 13389/23389/8022/18080/18180/18181/18189 | parallel fallback на 24-48h soak; затем savestate; см. [[snolla-recovery-vm]] |
|
||||
|
||||
`Default Web Site` всё ещё stopped (`autoStart=false`) — даже не нужен. URL Rewrite + ARR **не установлены**.
|
||||
**Прочие inert:**
|
||||
|
||||
| Что | Где | Прим. |
|
||||
|---|---|---|
|
||||
| **`C:\sites\snolla-identity-manager\`** | папка без IIS-сайта | deploy-артефакт, не активен |
|
||||
| **traefik backups** | `data/custom/*.yml.bak-*-2026-05-19` (5 серий) | atomic-revert artefacts; `.bak-pre-attempt2-2026-05-19` — baseline текущей prod conf |
|
||||
|
||||
`Default Web Site` stopped (`autoStart=false`). URL Rewrite + ARR **не установлены**.
|
||||
|
||||
## Ключевые папки
|
||||
|
||||
|
||||
Reference in New Issue
Block a user