docs(.wiki): ingest iis-host-migration 2026-05-19 session
New source page documenting migration of MoreThenCms.Web from snolla-recovery VM to native host IIS. Updates: - recovery-architecture-snapshot: new chain (traefik -> host:80) + secondary chain for stostayer still on VM - snolla-recovery-vm: demoted, IdentityManager port fix (8089 not 80), sub-apps detailed - windows-recovery-host: 3 native IIS sites + C:\sites\, C:\stayer\ - log.md: ingest + decision entries Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,19 +2,21 @@
|
|||||||
title: Recovery architecture — текущая инфраструктура (2026-05-19)
|
title: Recovery architecture — текущая инфраструктура (2026-05-19)
|
||||||
type: concept
|
type: concept
|
||||||
tags: [architecture, current-state, snapshot, recovery]
|
tags: [architecture, current-state, snapshot, recovery]
|
||||||
sources: [../sources/nas-recovery-session-2026-05-18.md]
|
sources: [../sources/nas-recovery-session-2026-05-18.md, ../sources/iis-host-migration-2026-05-19.md]
|
||||||
updated: 2026-05-19
|
updated: 2026-05-19
|
||||||
---
|
---
|
||||||
|
|
||||||
# Recovery Architecture Snapshot
|
# Recovery Architecture Snapshot
|
||||||
|
|
||||||
Снимок production-инфраструктуры на 2026-05-19, после завершения recovery. Это **рабочее, но временное** состояние — single-point-of-failure на бытовом железе. Замечания по улучшению — [[future-resilient-architecture-goals]].
|
Снимок production-инфраструктуры на 2026-05-19, **после миграции основного CMS на нативный IIS хоста** ([[iis-host-migration-2026-05-19]]). Это **рабочее, но временное** состояние — single-point-of-failure на бытовом железе. Замечания по улучшению — [[future-resilient-architecture-goals]].
|
||||||
|
|
||||||
## Цепочка запроса от клиента до CMS
|
## Цепочка запроса от клиента до CMS — 10 главных доменов (snolla.com и др.)
|
||||||
|
|
||||||
```
|
```
|
||||||
Клиент (browser)
|
Клиент (browser)
|
||||||
→ DNS resolve (REGRU): *.kzntsv.site, snolla.com, rimiz.ru, labtools.pro/ru, и т.д.
|
→ DNS resolve (REGRU): *.kzntsv.site, snolla.com, labtools.pro/ru, pilorama98.ru,
|
||||||
|
tandemmebel.ru, emspb.ru, kupimknigi.spb.ru, maljarka.tandemmebel.ru,
|
||||||
|
sestech.ru, ics-artmaterials.com (rimiz.ru — резолвится, но CMS отдаёт 404)
|
||||||
→ 94.19.247.14 (public IP, статический у провайдера)
|
→ 94.19.247.14 (public IP, статический у провайдера)
|
||||||
→ router OpenWRT (192.168.1.1) [[openwrt-router]]
|
→ router OpenWRT (192.168.1.1) [[openwrt-router]]
|
||||||
→ NAT 443 → 192.168.1.143:4443
|
→ NAT 443 → 192.168.1.143:4443
|
||||||
@@ -23,22 +25,34 @@ updated: 2026-05-19
|
|||||||
→ traefik 2.6.6 на 4443/8000
|
→ traefik 2.6.6 на 4443/8000
|
||||||
→ TLS termination, certResolver=letsEncrypt из acme.json
|
→ TLS termination, certResolver=letsEncrypt из acme.json
|
||||||
→ match по Host header (file-provider rules в data/custom/*.yml)
|
→ match по Host header (file-provider rules в data/custom/*.yml)
|
||||||
→ backend = http://host.docker.internal:18080/
|
→ backend = http://host.docker.internal:80/ ← с 2026-05-19
|
||||||
→ host:18080 = VBox NAT port forward → VM:80
|
→ Native IIS на хосте :80, site MoreThenCms.Web
|
||||||
→ snolla-recovery VM [[snolla-recovery-vm]]
|
→ AppPool MoreThenCms.Web (.NET v4.0 Integrated, ApplicationPoolIdentity)
|
||||||
→ IIS на 80
|
→ physicalPath C:\sites\MoreThenCms.Web
|
||||||
→ IIS site matched by Host header (catch-all binding)
|
→ ASP.NET CMS code (.NET Framework 4.8.1 на хосте)
|
||||||
→ MoreThenCms.Web → C:\inetpub\wwwroot\MoreThenCms.Web\
|
|
||||||
→ ASP.NET CMS code (.NET Framework 4.8)
|
|
||||||
→ Connection strings:
|
→ Connection strings:
|
||||||
→ MSSQL: Data Source=10.0.2.2:1433 (VBox NAT gateway = host)
|
→ MSSQL: Data Source=localhost,1433 (прямо в MSSQL container)
|
||||||
→ MinIO/storage: TBD точная схема
|
→ MinIO/storage: TBD точная схема (вопрос снят пользователем)
|
||||||
→ Elasticsearch: не используется CMS (там books-стек)
|
→ Elasticsearch: не используется CMS (там books-стек)
|
||||||
→ MSSQL container на host:1433
|
→ MSSQL container на host:1433
|
||||||
→ 5 production DB (MoreThenCms, Stayer*, stostayer, TireService)
|
→ 5 production DB (MoreThenCms, Stayer*, stostayer, TireService)
|
||||||
← HTTP response back through chain
|
← HTTP response back through chain
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Цепочка для stostayer / stostayer.old (всё ещё на VM)
|
||||||
|
|
||||||
|
```
|
||||||
|
Клиент → ... → traefik
|
||||||
|
→ backend = host.docker.internal:18180 (stostayer) или :18181 (stostayer.old)
|
||||||
|
→ VBox NAT port forward → VM:8080 или VM:8081
|
||||||
|
→ IIS в [[snolla-recovery-vm]] → C:\stayer\MoreThenCms.Web или C:\stayer\stostayer.old
|
||||||
|
→ Connection strings:
|
||||||
|
→ stostayer: Data Source=89.253.219.2,1433 (внешний production MSSQL — НЕ наш контейнер)
|
||||||
|
→ stostayer.old subapps (calc/price/tireService) — отдельные pools, TBD source
|
||||||
|
```
|
||||||
|
|
||||||
|
VM также имеет `Snolla.IdentityManager :8089` и неиспользуемые копии главного CMS — публично через traefik не доступны.
|
||||||
|
|
||||||
## Запущенные docker контейнеры на хосте
|
## Запущенные docker контейнеры на хосте
|
||||||
|
|
||||||
| Container | Image | Port (host) | Volume |
|
| Container | Image | Port (host) | Volume |
|
||||||
@@ -52,25 +66,27 @@ updated: 2026-05-19
|
|||||||
|
|
||||||
Все на docker network `proxy` (external) — это позволяет traefik резолвить `minio`, `elasticsearch`, `imgproxy-nginx` напрямую по docker DNS.
|
Все на docker network `proxy` (external) — это позволяет traefik резолвить `minio`, `elasticsearch`, `imgproxy-nginx` напрямую по docker DNS.
|
||||||
|
|
||||||
## Traefik routes
|
## Traefik routes (с 2026-05-19)
|
||||||
|
|
||||||
13 client домен-маршрутов в `data/custom/`:
|
13 client домен-маршрутов в `data/custom/`. **11 главных переключены на хост-IIS :80** ([[iis-host-migration-2026-05-19]]), 2 stostayer остаются на VM:
|
||||||
|
|
||||||
| File | Hosts | Backend |
|
| File | Hosts | Backend |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| snolla.yml | snolla.com + 10 subdomains | host.docker.internal:18080 |
|
| snolla.yml | snolla.com + 10 subdomains | **host.docker.internal:80** (host-IIS) |
|
||||||
| rimiz.yml | rimiz.ru, www.rimiz.ru | host.docker.internal:18080 |
|
| rimiz.yml | rimiz.ru, www.rimiz.ru | **host.docker.internal:80** (host-IIS, но CMS отдаёт 404 — известный issue) |
|
||||||
| labtools.yml | labtools.ru, www.labtools.ru | same |
|
| labtools.yml | labtools.ru, www.labtools.ru | **host.docker.internal:80** |
|
||||||
| labtoolspro.yml | labtools.pro, www.labtools.pro | same |
|
| labtoolspro.yml | labtools.pro, www.labtools.pro | **host.docker.internal:80** |
|
||||||
| pilorama98.yml | pilorama98.ru, www.pilorama98.ru | same |
|
| pilorama98.yml | pilorama98.ru, www.pilorama98.ru | **host.docker.internal:80** |
|
||||||
| tandemmebel.yml | tandemmebel.ru, www.tandemmebel.ru | same |
|
| tandemmebel.yml | tandemmebel.ru, www.tandemmebel.ru | **host.docker.internal:80** |
|
||||||
| emspb.yml | emspb.ru, www.emspb.ru | same |
|
| emspb.yml | emspb.ru, www.emspb.ru | **host.docker.internal:80** |
|
||||||
| kupimknigi.yml | kupimknigi.spb.ru | same |
|
| kupimknigi.yml | kupimknigi.spb.ru | **host.docker.internal:80** |
|
||||||
| maljarka.yml | maljarka.tandemmebel.ru | same |
|
| maljarka.yml | maljarka.tandemmebel.ru | **host.docker.internal:80** |
|
||||||
| sestech.yml | sestech.ru, www.sestech.ru | same |
|
| sestech.yml | sestech.ru, www.sestech.ru | **host.docker.internal:80** |
|
||||||
| isc-artmaterials.yml | ics-artmaterials.com, www.ics-artmaterials.com | same |
|
| isc-artmaterials.yml | ics-artmaterials.com, www.ics-artmaterials.com | **host.docker.internal:80** |
|
||||||
| oldstostayer.yml | (старый stostayer) | host.docker.internal:18181 (VM port 8081) |
|
| oldstostayer.yml | (старый stostayer) | host.docker.internal:18181 (всё ещё VM:8081) |
|
||||||
| stostayer.yml | stostayer.ru или похожий | host.docker.internal:18180 (VM port 8080) |
|
| stostayer.yml | stostayer.ru или похожий | host.docker.internal:18180 (всё ещё VM:8080) |
|
||||||
|
|
||||||
|
Backup конфигов до переключения: `*.yml.bak-phase3-2026-05-19`.
|
||||||
|
|
||||||
Плюс file-provider маршруты для инфраструктурных хостов:
|
Плюс file-provider маршруты для инфраструктурных хостов:
|
||||||
|
|
||||||
@@ -107,12 +123,14 @@ updated: 2026-05-19
|
|||||||
|
|
||||||
## Известные открытые баги
|
## Известные открытые баги
|
||||||
|
|
||||||
1. **X-Forwarded headers** не передаются от traefik в IIS → CMS делает редирект с `:4443` в URL. См. [[traefik-on-windows-docker-desktop]] Pitfall 5.
|
1. **X-Forwarded headers** не передаются от traefik в IIS → CMS делает редирект с `:4443` в URL. См. [[traefik-on-windows-docker-desktop]] Pitfall 5. После миграции на host-IIS актуально, fix — URL Rewrite + ARR (Phase 5 в [[iis-host-migration-2026-05-19]]).
|
||||||
2. **MinIO/Azure storage** в CMS — точная схема подключения TBD. Пользователь упомянул "не так всё".
|
2. **rimiz.ru → 404** на host-IIS (и, скорее всего, до миграции на VM тоже). CMS-side, не инфра — mapping host header → CMS-сайт в БД.
|
||||||
3. **acme.json HTTP-01 renewal** будет фейлить для доменов с DNS не на нашем IP — нужен переезд на DNS-01 через REGRU до истечения сертификатов (~3 месяца).
|
3. **stostayer / stostayer.old timeout** при прямом обращении к host-IIS на `:8090/:8091`. Phase 2 миграция выполнена технически, но рантайм не отвечает — не разбирались, prod-трафик пока на VM.
|
||||||
4. **VM один раз "повисла" в сети** через 1-2 часа uptime — лечилось `ipconfig /release/renew` через VBoxManage guestcontrol. Нужен auto-watchdog.
|
4. **acme.json HTTP-01 renewal** будет фейлить для доменов с DNS не на нашем IP — нужен переезд на DNS-01 через REGRU до истечения сертификатов (~3 месяца).
|
||||||
5. **C:\inetpub\logs\** в VM растёт (6+ GB к recovery) — нужна ротация.
|
5. **VM один раз "повисла" в сети** через 1-2 часа uptime — лечилось `ipconfig /release/renew` через VBoxManage guestcontrol. Подтверждено повторно в сессии 2026-05-19. Нужен auto-watchdog (или вообще выключить VM после миграции stayer).
|
||||||
6. **docker.sock provider в traefik** не работает — но не блокирует (всё через file-provider). См. [[traefik-on-windows-docker-desktop]] Pitfall 3.
|
6. **C:\inetpub\logs\** в VM растёт (6+ GB к recovery) — нужна ротация. На хосте логи начнут расти аналогично — те же меры понадобятся.
|
||||||
|
7. **docker.sock provider в traefik** не работает — но не блокирует (всё через file-provider). См. [[traefik-on-windows-docker-desktop]] Pitfall 3.
|
||||||
|
8. **MinIO/Azure storage** в CMS — вопрос пользователем снят (Q4 в сессии 2026-05-19), оставлено как есть.
|
||||||
|
|
||||||
## Single Points of Failure
|
## Single Points of Failure
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user