doc: Шаг 2 — разбиение data-plane/control-plane

This commit is contained in:
Repinoid
2026-10-10 16:02:02 +03:00
parent a26e6da8b7
commit 1862f058be
2 changed files with 22 additions and 0 deletions
+8
View File
@@ -106,6 +106,14 @@
logrotate для `sqs.log`. logrotate для `sqs.log`.
- Billing/JWT не настроены. Проверено: сервис работает на существующем тенанте из Redis. - Billing/JWT не настроены. Проверено: сервис работает на существующем тенанте из Redis.
### 2.13. Шаг 2 — разбиение data-plane / control-plane
- `router.NewDataPlane` (публичный SQS API) + `router.NewControlPlane` (админка/метрики/UI).
- `main`: два листенера — `0.0.0.0:4100` (публично) и `127.0.0.1:4101` (control-plane, только локально).
- Проверено: публично `/admin`/`/metrics` → 403 (наружу не доступны), SQS API работает; локально
`4101/admin` → 200. Коммит `c1520c0`.
- Примечание: пока один процесс с двумя листенерами (общее in-memory состояние); два процесса —
после Шага 3.
## 3. Грабли (для повторного использования) ## 3. Грабли (для повторного использования)
1. **`proxy_set_header Host $host` теряет порт** → SigV4 `SignatureDoesNotMatch`. 1. **`proxy_set_header Host $host` теряет порт** → SigV4 `SignatureDoesNotMatch`.
@@ -141,3 +141,17 @@ curl -sS https://sqs.sinefo.ru/health
- **logrotate** `/etc/logrotate.d/shared-sqs`: daily, rotate 7, compress, delaycompress, - **logrotate** `/etc/logrotate.d/shared-sqs`: daily, rotate 7, compress, delaycompress,
copytruncate, `su naeel naeel` (copytruncate — процесс держит файл открытым). copytruncate, `su naeel naeel` (copytruncate — процесс держит файл открытым).
- Billing (PostgreSQL) и JWT-валидация — **не настроены** (сервис работает без них). - Billing (PostgreSQL) и JWT-валидация — **не настроены** (сервис работает без них).
## 10. Разбиение data-plane / control-plane (Шаг 2, 2026-10-10, коммит `c1520c0`)
- `router.NewDataPlane(store)` — публичный SQS API: `/health`, `/static`, `/examples`, SQS actions.
- `router.NewControlPlane(store, adminToken)` — админка: `/admin` (UI+API), `/metrics`, `/ui`, `/static`.
- `main`: два HTTP-сервера — data-plane на `0.0.0.0:<--port>` (4100, публично), control-plane
на `127.0.0.1:<--control-port>` (4101, только localhost).
- Проверено: публично `/health` → 200; SQS API работает; `/admin` и `/metrics` публично → **403**
(падают в SQS-auth — админка наружу **НЕ доступна**). Локально: `127.0.0.1:4101/admin` → 200,
`4101/metrics` без токена → 401.
**Почему пока два листенера в одном процессе, а не два процесса:** состояние (очереди/тенанты) —
in-memory; два процесса разъедутся (админка создаст тенанта в своей памяти — data-plane его не увидит).
Полноценный процесс-split — после Шага 3 (Redis как источник истины).