Балансировка L4 с использованием ipvs: сброс пакетов RST — отказоустойчивость

Балансировка L4 с использованием ipvs: сброс пакетов RST — отказоустойчивость

У меня есть балансировщик нагрузки L4 ipvs с настройкой балансировщиков L7 envoy. Допустим, один из моих балансировщиков L4 выходит из строя, и благодаря последовательному хешированию трафик, который теперь обрабатывается (благодаря BGP) другим балансировщиком L4, проксируется на тот же узел L7.

Это должно работать без каких-либо проблем, и я думаю, что это обычная настройка.

Проблема в долго работающих соединениях. Когда новый узел L4 получает трафик (только данные - пакеты ACK/PUSH) и узел не получил ни одного пакета SYN, узел просто отправляет клиенту пакет RST, который завершает соединение. Изображение ниже иллюстрирует это.

Этого не должно происходить, и мой вопрос в том, есть ли способ (конфигурация sysctl или что-то еще), который является причиной этого? Я знаю, что, возможно, я могу отбросить пакеты RST с помощью iptables, но это звучит неправильно.

введите описание изображения здесь

решение1

net.ipv4.vs.sloppy_tcpНа самом деле для этой конкретной проблемы существует переменная sysctl (https://lore.kernel.org/patchwork/patch/386081/?fbclid=IwAR17t0jEvRSlvZFch1Lz_CDMjYOzUluuNGQmiyKequZK1Vq4kI75vezWEGs), который решает эту проблему.

Огромное спасибо Патрику Шаффу, который помог мне разобраться в этом (прекрасная презентация на эту тему -https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff).

Связанный контент