docs: HISTORY — ответ Sonnet оценён: 7 поправок (PG не меняется, тот же кластер/шлюз, multi-port, EMQX env, /metrics, bcrypt, dedup); след.шаг: wss-тест старого прод-домена
This commit is contained in:
@@ -334,3 +334,55 @@ Python 3.10, websocket-client 1.9.0 установлен. Тот же скрип
|
|||||||
(или python websocket-client, ping 25с / echo 10с) — обрыв на 150–173с.
|
(или python websocket-client, ping 25с / echo 10с) — обрыв на 150–173с.
|
||||||
- Связь с shared-sqs: таймауты 31–33с (~5.5% HTTP-запросов), MSS=1448 при
|
- Связь с shared-sqs: таймауты 31–33с (~5.5% HTTP-запросов), MSS=1448 при
|
||||||
MTU 1400 — вероятно, тот же внешний шлюз.
|
MTU 1400 — вероятно, тот же внешний шлюз.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Консультация Sonnet (промпт → ответ) — критическая оценка
|
||||||
|
|
||||||
|
**Что сделано:** составлен промпт для Sonnet (жёсткий список файлов: HISTORY
|
||||||
|
2026-08-16, migration-to-managed, sqs-integration, architecture/current-v0.2.3,
|
||||||
|
deployment-v0.2.3; 9 вопросов; формат «Ответ/Рекомендация/Риски», без кода).
|
||||||
|
Ответ получен, оценён ниже.
|
||||||
|
|
||||||
|
**Ключевые рекомендации Sonnet (приняты):**
|
||||||
|
- Компоновка: EMQX-контейнер + Go-монолит (API+bridge+consumer в одном бинарнике).
|
||||||
|
- EMQX оставить (не mochi-mqtt), если настроится на платформе.
|
||||||
|
- SQS в середине потока СОХРАНИТЬ (буфер при падении PG, admin-stats).
|
||||||
|
- Auth: перенос Secrets→таблица iot_devices ДО переключения; закрыть
|
||||||
|
authTestMode и ADMIN_STATS_TOKEN до прода.
|
||||||
|
- 3 фазы миграции; откат — DNS обратно; критерий готовности переключения
|
||||||
|
устройств: wss ≥600с с 3 независимых интернет-точек.
|
||||||
|
- Вопросы в техподдержку Nubes: кастомный домен, лимит ~150с, таймауты
|
||||||
|
31–33с, MSS, subprotocol mqtt, multi-port, PVC, latest-pull, лимиты.
|
||||||
|
|
||||||
|
**ПОПРАВКИ к ответу Sonnet (важно):**
|
||||||
|
1. **PG НЕ меняется.** Managed PostgreSQL уже используется текущим consumer'ом
|
||||||
|
(IOT_PG_DSN → postgresqlk8s…svc.cluster.local). Утверждение Sonnet «новые
|
||||||
|
данные пишутся в новую PG» — ОШИБКА. Телеметрию переносить не нужно вовсе;
|
||||||
|
переносятся только CRD-объекты (устройства+пароли).
|
||||||
|
2. **Платформенные контейнеры живут в ТОМ ЖЕ кластере**, что и старый деплой
|
||||||
|
IoT: ноды `iot-naeel-*`, ingress `shturval` — один кластер. Значит старый
|
||||||
|
вход `iot.kube5s.ru` (185.247.187.147), скорее всего, идёт через ТОТ ЖЕ
|
||||||
|
краевой шлюз — вариант Sonnet «EMQX на старом кластере как точка входа»
|
||||||
|
проблему не обходит (и его сомнение в обратную сторону неверно).
|
||||||
|
Проверяемо тестом: держать wss к `wss://iot.kube5s.ru/mqtt` 5+ мин —
|
||||||
|
если stall ~150с есть и там, текущие устройства уже страдают.
|
||||||
|
3. **Multi-port** у Sonnet заявлен как факт в п.1 («1883 внутренний для bridge»),
|
||||||
|
но в п.9.6 сам же помечен НЕИЗВЕСТНО — противоречие. Вероятный реальный
|
||||||
|
сценарий: один порт на контейнер → EMQX наружу только 8083 (wss), bridge
|
||||||
|
к EMQX тоже по wss внутри платформы.
|
||||||
|
4. **Конфиг EMQX через env — не блокер.** EMQX 5 поддерживает env vars
|
||||||
|
(EMQX_*); плюс можно собрать свой образ на базе emqx/emqx с вшитым
|
||||||
|
emqx.conf (публичный Docker Hub) — снимает ограничение полностью.
|
||||||
|
5. **/metrics уже есть** в текущем операторе (порт 8080, controller-runtime)
|
||||||
|
— переносится в монолит, а не «отсутствует» (ошибка Sonnet).
|
||||||
|
6. **bcrypt для паролей** — ок для НОВЫХ устройств, но для переноса старых
|
||||||
|
нужен скрипт: прочитать все Secrets `iot-{deviceId}` в ns sless и вставить
|
||||||
|
в таблицу с сохранением работоспособности (хэшировать при вставке).
|
||||||
|
7. Дубли при at-least-once: нужен dedup-ключ в InsertTelemetry
|
||||||
|
(например уникальный индекс по (namespace, device_id, received_at) или
|
||||||
|
message-id) — сейчас отсутствует.
|
||||||
|
|
||||||
|
**Следующий шаг (предложен, ждёт «делай»):**
|
||||||
|
- Тест wss к СТАРОМУ прод-домену `wss://iot.kube5s.ru/mqtt` (5 мин, станция +
|
||||||
|
Vultr) — определить, страдают ли текущие устройства от того же шлюза.
|
||||||
|
|||||||
Reference in New Issue
Block a user