WiseN

[갑티슈시리즈] 2018년 2장

Mar 05,2018   |   AWS

작성자_최준승

페이스북 공유하기 트위터 공유하기
Blog thumbnail

안녕하세요. GS네오텍 최지훈입니다.

이번에는 당사 SA분들이 답변주신 내용들이 主네요.

여기서 다루는 내용



· NLB routing
· NLB idle timeout
· RDS HAProxy
· Step Functions best practice








NLB routing







  • NLB는 프로토콜, 원본 IP 주소/포트, 대상 IP 주소/트, TCP 시퀀스 번호에 따라 흐름 해시 알고리즘을 사용하여 대상을 선택

  • 클라이언트로부터의 TCP 연결은 소스 포트와 시퀀스 번호가 서로 다르므로 다른 대상에 라우팅

  • 각 TCP 연결은 연결 수명 동안 하나의 대상에 라우팅

  • https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/network/introduction.html








NLB idle timeout







  • 클라이언트가 NLB를 통해 요청할 때마다 해당 연결의 상태가 추적되고 연결은 대상에 의해 종료

  • idle timeout 보다 오랫동안 클라이언트나 대상에 의한 연결을 통해 데이터가 전송되지 않으면 연결이 종료

  • idle timeout 종료 기간이 지난 후 클라이언트가 데이터를 전송하면 TCP RST 패킷을 수신하여 연결이 더 이상 유효하지 않음을 나타냄

  • NLB은 idle timeout 은 350초 (2018.02 기준)

  • idle timeout 을 350초 이상 가져가려면 백앤드에서 keepalive를 구성하여 NLB idle timeout을 지속적으로 재설정








RDS HAProxy







  • RDS 앞단에 HAProxy를 두는 경우 내부적으로 IP를 룩업하여 저장하고 있기 때문에 RDS Failover발생시 마스터 인스턴스로 연결하지 못하는 경우가 발생

  • 대안

  • - Ngnix+(유료)로 변경 : DNS 갱신주기 설정하여 해결
    - HAProxy를 그대로 사용하는 경우 Failover 발생시 HAProxy에서 룩업을 다시하는 로직 추가







Step Functions best practice