L7 특사 밸런서가 설정된 L4 ipvs 로드 밸런서가 있습니다. 내 L4 밸런서 중 하나가 다운되고 일관된 해싱 덕분에 현재 다른 L4 밸런서에서 (BGP 덕분에) 처리되는 트래픽이 동일한 L7 노드로 프록시 처리된다고 가정해 보겠습니다.
이것은 아무 문제 없이 작동해야 하며 일반적인 설정이라고 생각합니다.
문제는 장기 실행 연결에 있습니다. 새로운 L4 노드가 트래픽(데이터 - ACK/PUSH 패킷만)을 수신하고 노드에서 SYN 패킷을 수신하지 못한 경우, 노드는 RST 패킷을 클라이언트에 보내 연결을 종료합니다. 아래 그림은 이를 보여줍니다.
이런 일이 일어나서는 안 되며 제 질문은 이것입니다. 그 이유가 되는 방법(sysctl 구성 등)이 있습니까? iptables를 사용하여 RST 패킷을 삭제할 수 있다는 것을 알고 있지만 이는 옳지 않은 것 같습니다.
답변1
net.ipv4.vs.sloppy_tcp
실제로 이 특정 문제에 대한 sysctl 변수가 있습니다 (https://lore.kernel.org/patchwork/patch/386081/?fbclid=IwAR17t0jEvRSlvZFch1Lz_CDMjYOzUluuNGQmiyKequZK1Vq4kI75vezWEGs) 이를 해결합니다.
이 문제를 해결하는 데 도움을 준 Patric Shuff에게 큰 감사를 드립니다. (이 주제에 대한 훌륭한 프레젠테이션 -https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff).