Skip to content

NodeFlow 2.2.0 - #22

Merged
SHOKOVprod merged 8 commits into
mainfrom
release-2.2.0
Oct 15, 2026
Merged

SHOKOVprod merged 8 commits into
mainfrom
release-2.2.0

Conversation

@SHOKOVprod

Copy link
Copy Markdown
Contributor

NodeFlow 2.2.0

Panel 2.2.0 · Node Agent 2.2.0 · HAProxy renderer v21

Закрепление клиентов в DNS-пулах с резервными серверами, копирование маршрутов между нодами и библиотека шаблонов. Две миграции (000056, 000057). Agent не менялся. Спасибо @fesevu (#19, #20).

Новое

  • Закрепление клиентов и leastconn в пулах с резервными серверами (Закрепление клиентов и leastconn для DNS-пулов с резервом #19). Для DNS-пула с резервным (backup) сервером теперь доступны закрепление клиентов (sticky) и распределение leastconn. Новый failover-маршрут по умолчанию создаётся без закрепления.
    • Ограничения: в режиме с резервным сервером leastping/leastconn с допуском (tolerance) больше 0 отклоняются; leastping вместе с закреплением по source тоже отклоняется.
    • Клиент, закреплённый за резервным сервером, остаётся на нём до истечения записи закрепления (expire), даже когда основной сервер вернулся.
  • Копирование маршрутов между нодами (Копирование маршрутов между нодами и библиотека шаблонов #20). Маршрут можно скопировать на другую ноду. Копия создаётся выключенным черновиком — проверьте порты и адреса и включите её вручную.
  • Библиотека шаблонов маршрутов (Копирование маршрутов между нодами и библиотека шаблонов #20). Маршрут можно сохранить как шаблон и создавать из него новые маршруты на любой ноде. Шаблоны хранят schema_version. Миграция 000056 (route_templates).

Исправления

  • Рендер старых failover-маршрутов не меняется. Миграция 000057 сохраняет прежнее распределение для маршрутов с устаревшим source_table: такие маршруты один раз публикуются заново с идентичным конфигом HAProxy. Повторное сохранение старого failover-маршрута в UI тоже сохраняет его распределение.
  • Аудит: копирование маршрута (route.copy) и действия с шаблонами (route_template.*) пишутся в журнал аудита.
  • Понятные ошибки и имена копий/шаблонов; диалоги копирования и шаблонов оформлены в стиле панели.

Обновление с 2.1.0

  1. Panel. Повторно запустите установщик:

    curl -fsSL https://raw.githubusercontent.com/NodeFlow-dev/nodeflow/main/install.sh | sudo sh

    Вручную: в /opt/nodeflow/.env укажите NODEFLOW_VERSION=2.2.0 и выполните docker compose pull && docker compose up -d. Миграции 000056 и 000057 применяет сам образ.

  2. Node Agent — необязательно. Код Agent в 2.2.0 не менялся, всё работает с Agent 2.1.x. Для единообразия версий: «Настройки → Node Agent» → «Обновить до 2.2.0».

Обновляетесь с 1.0.x — сначала прочитайте заметки к релизу 2.0.0: там однократный drop-in systemd для pipe-буферов ядра.

Файлы релиза

  • NodeFlow-Panel-2.2.0-Agent-2.2.0-install-kit.tar.gz — install kit.
  • nodeflow-node-agent-2.2.0-linux-amd64, nodeflow-node-agent-2.2.0-linux-arm64 — бинарники Node Agent.

Panel поставляется образом ghcr.io/nodeflow-dev/nodeflow-panel:2.2.0 (linux/amd64 и linux/arm64). SHA-256 каждого файла — поле digest в API релиза; install.sh и install-node.sh сверяют его сами.

Включает #19 и #20 (@fesevu) с исправлениями по ревью.

Contributor and others added 8 commits October 14, 2026 05:46
…ion 000057)

Failover rows could carry sticky_mode from migrations 000041/000051/000052
that the v2.1.0 renderer ignored. Reset it to '' so the rendered config
stays byte-identical; golden files captured from gh/main (v2.1.0).

Co-authored-by: Artem Ishmukhamedov <105602239+fesevu@users.noreply.github.com>
…h source

Absent sticky_mode on a failover route no longer infers source from a DNS
pool (balance_algorithm was silently ignored) and keeps the legacy empty
value. leastping is rejected for failover regardless of stickiness.

Co-authored-by: Artem Ishmukhamedov <105602239+fesevu@users.noreply.github.com>
…p stickiness note

Co-authored-by: Artem Ishmukhamedov <105602239+fesevu@users.noreply.github.com>
…templates

- audit: route.copy (source route, node_ids) and route_template.create/
  update/delete/apply with the template id
- copy results surface the manual-HAProxy-mode message
- an unnamed copy on the source node gets the suffix ' (копия)'
- template config carries schema_version=1; newer schemas are refused (400)
- 000056 down migration uses DROP TABLE IF EXISTS

Co-authored-by: Artem Ishmukhamedov <105602239+fesevu@users.noreply.github.com>
Split the route menu entry into «Копировать на ноды» and «Сохранить как
шаблон», each a separate dialog with the panel dialog chrome (nf-dialog),
labels above fields and right-aligned Отмена + primary footer. One muted
note line; the listener hint only when a target node differs. Template
description is an optional 2-row field. The library dialog lists templates
as a bordered list with a per-row action menu and a confirm dialog for
deletion; the route editor reuses the same save dialog.

Co-authored-by: Artem Ishmukhamedov <105602239+fesevu@users.noreply.github.com>
Co-authored-by: Artem Ishmukhamedov <105602239+fesevu@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant