Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 пула.
Expand All @@ -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.
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 4 additions & 0 deletions docs/features/haproxy-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -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. Назначенный ручной конфиг настройки не меняют.

## Редактор конфигурации
Expand All @@ -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)

Кнопки:

| Кнопка | Действие |
Expand Down
Binary file added docs/images/haproxy-editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/node-settings-haproxy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading