У меня проблема с конфигурацией HAProxy (1.8).
Контекст:
- В конфигурации HAProxy у меня есть несколько серверов в бэкэнде и дополнительныйсервер резервного копирования на случай, если другие серверы не работают.
- Как только клиент получает ответ от сервера, он должен придерживаться этого сервера для своих следующих запросов.
- По некоторым причинам я могуЯ не использую куки для этой проблемы, и мне пришлось вместо этого использовать карту-палку.
Проблема:
- Когда все "нормальные" серверы не работают, клиентыперенаправляются на сервер резервного копирования, как и ожидалось.
- НО таблица-заполнитель затем заполняется ассоциацией между клиентом и идентификатором сервера резервного копирования.
- И при каждом "нормальном"сервер вернулся, клиенты, присутствующие в таблице флешек и связанные с идентификатором сервера резервного копирования, будут продолжать перенаправляться на сервер резервного копирования вместо обычных!
Это действительно расстраиваетя ...
Итак, мой вопрос: как запретить HAProxy привязывать клиентов к серверу резервного копирования в бэкэнде?
Ниже приведен пример конфигурации:
defaults
option redispatch
frontend fe_test
bind 127.0.0.1:8081
stick-table type ip size 1m expire 1h
acl acl_test hdr(host) -i whatever.domain.com
...
use_backend be_test if acl_test
...
backend be_test
mode http
balance roundrobin
stick on hdr(X-Real-IP) table fe_test
option httpchk GET /check
server test-01 server-01.lan:8080 check
server test-02 server-02.lan:8080 check
server maintenance 127.0.0.1:8085 backup
(я уже пытался добавитьменьший вес сервера резервного копирования, но это не решило эту проблему.)
Я прочитал в документации, что ключевое слово "stick-on" имеет некоторые опции "если / если", и, возможно, я смогуиспользуйте его, чтобы написать условие, основанное на именах внутреннего сервера, но я понятия не имею о синтаксисе, который нужно использовать, или даже если это возможно.
Любая идея приветствуется!