diff --git a/README.md b/README.md index acbe420..2a5974c 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ NodeFlow — панель управления парком HAProxy-нод дл ![Обзор нод](docs/images/nodes-overview.png) -## Возможности 2.0 +## Возможности - **SNI-маршрутизация и фолбэк.** Общие listener'ы на порт, несколько SNI на маршрут, «Фолбэк» для всего, что не совпало; IP-, доменные и Unix-socket backend'ы. - **Несколько серверов и DNS-пулы.** До 16 серверов на маршрут в режимах «Пул» и «Основной + резервные»; домен как DNS-пул (все A/AAAA-адреса, с исключением недоступных), отдельные веса для IP пула. @@ -26,6 +26,8 @@ NodeFlow — панель управления парком HAProxy-нод дл - **Производительность.** Zero-copy splice в обе стороны; Agent поднимает `fs.pipe-max-size`, и Panel рендерит буферы 1 МиБ вместо 256 КиБ. - **Квоты и учёт трафика.** Помесячный трафик нод, backend'ов и маршрутов, квоты на маршрут. - **Безопасное применение.** Desired/actual-ревизии, полная проверка `haproxy -c` до замены конфига, graceful reload с откатом. +- **Редактор `haproxy.cfg`.** Страница ноды → «Конфигурация HAProxy»: Monaco с подсветкой и автодополнением, подсказки по директивам при наведении, проверка на лету (неизвестные директивы и опции, лишние символы, порты, ссылки на backend), diff перед применением и история ревизий. Ошибка `haproxy -c` с ноды показывается текстом со ссылками на строки; одна кнопка возвращает к сборке из маршрутов. +- **Настройки HAProxy ноды.** `maxconn`, `nbthread` и таймауты `connect`/`client`/`server` — в настройках ноды, применяются ко всем маршрутам reload без разрыва соединений; там же выключаются логи соединений. - **Prometheus `/metrics`** в Panel: состояние нод и маршрутов, соединения, трафик, синхронизация ревизий (bearer-токен, allowlist CIDR). - **Подписанные обновления Agent.** Ed25519 + SHA-256, монотонная последовательность, атомарная активация и автооткат. - **mTLS.** Отдельный клиентский сертификат на ноду, ротация и staged renewal; локальный API Agent доступен только с loopback. @@ -140,6 +142,14 @@ sudo systemctl daemon-reload && sudo systemctl restart nodeflow-node-agent ![Редактор маршрута](docs/images/route-editor.png) +### Редактор haproxy.cfg с подсказками и проверкой + +![Редактор haproxy.cfg](docs/images/haproxy-editor.png) + +### Настройки HAProxy ноды + +![Настройки HAProxy ноды](docs/images/node-settings-haproxy.png) + ### Трафик и топ маршрутов ![Трафик](docs/images/traffic-overview.png) diff --git a/docs/features/haproxy-configuration.md b/docs/features/haproxy-configuration.md index 74e84e2..02613ea 100644 --- a/docs/features/haproxy-configuration.md +++ b/docs/features/haproxy-configuration.md @@ -14,6 +14,8 @@ Пустое поле — значение по умолчанию. Настройки действуют на все маршруты ноды: изменение публикует новую ревизию в той же транзакции, Agent применяет её reload без разрыва соединений. Обновлять Agent не нужно. +![Настройки HAProxy ноды](../images/node-settings-haproxy.png) + API: `metadata.haproxy_settings` в `POST`/`PUT /api/v1/nodes` (`maxconn`, `nbthread`, `timeout_connect`, `timeout_client`, `timeout_server`). Если ключ не передан — сохранённое значение не меняется, `{}` сбрасывает. Неизвестные поля, дробные и вне диапазона числа, неверные длительности → 400. Назначенный ручной конфиг настройки не меняют. ## Редактор конфигурации @@ -25,6 +27,8 @@ API: `metadata.haproxy_settings` в `POST`/`PUT /api/v1/nodes` (`maxconn`, `nbth - Имена `nf_be_*`/`nf_srv_*` помечены «не переименовывать»: по ним Panel считает статистику и применяет квоты. - Строка состояния: время последней проверки и «Конфиг валиден» или «N ошибок, M предупреждений» (клик — к первой проблеме), порты прослушивания из строк `bind`. +![Редактор haproxy.cfg с подсказкой по директиве](../images/haproxy-editor.png) + Кнопки: | Кнопка | Действие | diff --git a/docs/images/haproxy-editor.png b/docs/images/haproxy-editor.png new file mode 100644 index 0000000..90eda16 Binary files /dev/null and b/docs/images/haproxy-editor.png differ diff --git a/docs/images/node-settings-haproxy.png b/docs/images/node-settings-haproxy.png new file mode 100644 index 0000000..a935cb0 Binary files /dev/null and b/docs/images/node-settings-haproxy.png differ