L4 ipvs 로드 밸런서와 L7 특사 밸런서 설정이 있습니다. 내 L4 밸런서 중 하나가 실패하고 이제 다른 L4 밸런서(BGP 덕분에)에 의해 처리되는 트래픽이 일관된 해싱으로 인해 동일한 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) 문제를 해결했습니다.
이 문제를 해결하는 데 도움을 준 Patric Shuff에게 많은 감사를 드립니다(이 주제에 대한 훌륭한 강연 -https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff).