Я пытаюсь настроить лабораторию балансировки нагрузки для HAproxy в одноруковом режиме (когда фактический внешний IP-адрес и внутренние серверы находятся в одной подсети, а фактические клиенты всегда удалены). Другой запрос — сделать исходные IP-адреса клиента видимыми для серверных узлов. Поскольку мы балансируем нагрузку пользовательского приложения на основе tcp, кажется, что вариант «источник 0.0.0.0 usersrc clientip» здесь является правильным выбором. Кроме того, я настроил серверные части так, чтобы шлюзы по умолчанию указывали на IP-адрес HAproxy.
Хотя, когда я включаю эту опцию бэкэнда, происходят странные вещи: я вижу, что подключение к внешнему VIP было выполнено правильно и сформировано трехстороннее рукопожатие. Но когда сервер HAproxy пытается создать второй сеанс для доступа к внутренним серверам с поддельным IP-адресом клиента, я вижу, что происходит именно это:
- Прокси отправляет SYN с поддельным IP-адресом Клиента на один из серверов;
- Серверная часть обычно отвечает пакетом SYN-ACK;
- Прокси НЕ отправляет последний ACK, просто вслепую отправляет пакеты SYN после тайм-аута с тем же результатом;
- Я вижу, что на прокси-сервере это соединение помечено как SYN_SENT в выводе netstat, поэтому похоже, что прокси-сервер по какой-то причине не принимает пакет SYN-ACK.
Любая похвала будет оценена.