4.9 KiB
План внедрения: расширение пула до четырёх бэкендов
Дата: 2026-08-16 Основание: стенд шага 2 (STEP2_SUMMARY.md)
Контекст
Стенд работает с пулом из двух членов — по одному бэкенду в каждом приватном сегменте. На двух членах не видны свойства, ради которых на шаге 2 введена таблица слотов: при выбытии единственного «соседа» оставшийся член тривиально забирает все слоты, и минимальное возмущение раскладки нечем измерить.
Задача: добавить по одному бэкенду в каждый приватный сегмент (всего четыре
члена пула) и оставить алгоритм балансировки symmetric_l4.
Состав изменения
Новые контейнеры
| Контейнер | Сеть | Адрес | MAC | ID члена |
|---|---|---|---|---|
hpnn-be3 |
priv2 | 10.20.0.3 |
02:42:0a:14:00:03 |
3 |
hpnn-be4 |
priv3 | 10.30.0.3 |
02:42:0a:1e:00:03 |
4 |
Образ и маршруты — те же, что у существующих бэкендов: через балансировщик
маршрутизируются только клиентские префиксы и соседний приватный сегмент,
default остаётся на шлюзе Docker (профиль A).
Файлы
| Файл | Изменение |
|---|---|
docker-compose.yml |
сервисы be3, be4 |
lb/topology.env |
BE3_*, BE4_* |
lb/pipeline.sh |
правила DNAT (таблица 12) и adjacency (таблица 21) для новых членов |
lb/entrypoint.sh |
статические ARP-записи для вторых бэкендов на портах-источниках проб |
lb/hc-config.sh |
члены пула 3 и 4 |
scripts/verify.sh |
проверки обобщаются с двух членов на четыре |
Алгоритм балансировки не меняется: multipath(symmetric_l4, …) уже стоит в
листенере, менять нечего.
Что произойдёт автоматически
Раскладка слотов пересчитается сама: демон опросит новых членов, переведёт их
в up и зальёт таблицу слотов на четверых. Ожидаемое распределение — по 256
слотов на члена (1024 / 4).
Отдельная проверка: минимальное возмущение на четырёх членах
На двух членах проверка была вырожденной — оставшийся член забирал все слоты, поэтому «чужих» переехавших слотов было ровно ноль. На четырёх членах ситуация содержательнее: слоты выбывшего распределяются между тремя оставшимися, и порядок заполнения меняется.
Классический Maglev гарантирует малое, а не нулевое возмущение. Поэтому проверка формулируется как порог: доля слотов, сменивших владельца среди оставшихся членов, должна быть заметно меньше доли слотов выбывшего члена (25 %). Фактическое значение измеряется при реализации и фиксируется в итогах вместе с порогом.
Верификация
make health— четыре членаup, по 256 слотов, сумма 1024.- Балансировка с клиента: в 20 запросах встречаются все четыре бэкенда.
make slots— счётчики пакетов растут у всех четырёх.- Транзит между сегментами работает для новых бэкендов тоже.
- Отказ одного члена: его слоты уходят к трём оставшимся, трафик без ошибок.
- Минимальное возмущение: измерить долю переехавших чужих слотов.
make verify— полный автоматический прогон.
Артефакты
- Этот план.
docs/CHANGE_POOL_4_MEMBERS_SUMMARY.md— итоги и измеренные значения.- Обновление
README.mdиdocs/MANUAL_TEST_PLAN.mdпод новый состав пула.