Balanceamento L4 usando ipvs: descartar pacotes RST - failover

Balanceamento L4 usando ipvs: descartar pacotes RST - failover

Eu tenho um balanceador de carga IPVS L4 com configuração de balanceadores enviados L7. Digamos que um dos meus balanceadores L4 fique inativo e, graças ao hashing consistente, o tráfego que agora é tratado (graças ao BGP) por outro balanceador L4 seja proxy para o mesmo nó L7.

Isso deve funcionar sem problemas e eu acho que é uma configuração comum.

O problema está nas conexões de longa duração. Quando o novo nó L4 recebe o tráfego (apenas dados - pacotes ACK/PUSH) e nenhum pacote SYN foi recebido pelo nó, o nó apenas envia o pacote RST para o cliente que encerra a conexão. A imagem abaixo ilustra isso.

Isso não deveria estar acontecendo e minha pergunta é: existe uma maneira (uma configuração do sysctl ou algo assim) que seja a razão para isso? Eu sei que talvez possa descartar pacotes RST usando iptables, mas isso não parece certo.

insira a descrição da imagem aqui

Responder1

Na verdade, existe uma variável sysctl net.ipv4.vs.sloppy_tcppara este problema específico (https://lore.kernel.org/patchwork/patch/386081/?fbclid=IwAR17t0jEvRSlvZFch1Lz_CDMjYOzUluuNGQmiyKequZK1Vq4kI75vezWEGs) que resolve isso.

O grande obrigado vai para Patric Shuff, que me ajudou a descobrir isso (ótima apresentação sobre esse assunto -https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff).

informação relacionada