[AWS] ELB idle timeout

DaBeen Yi
4 min readApr 19, 2021

--

AWS ELB idle timeout

AWS는 총 3개의 ELB를 갖고 있다.

OSI 4계층 LB를 담당하는 NLB, OSI 7계층 LB를 담당하는 ALB 그리고 지금은 차차 없어지고 있는 구 버전의 Classic LB (OSI 4, 7 계층 담당)

AWS에서 서서히 사라지고 있는만큼 이번 포스팅에서도 CLB에 대한 내용은 제외하기로 한다. ✋ (안뇽)

본 포스팅에서는 이 LB들의 다른 옵션들은 모두 제치고 idle timeout에 대한 내용만 다룰 예정이다.

이름에 걸맞게 역할을 달리 하는만큼 이 LB들의 connection idle timeout 값도 다르다.

결론부터 정리하자면 connection idle timeout에 대해서는 아래 표와 같이 정리할 수 있다.

출처:

위 AWS 공식 사이트의 설명을 읽었을 때 알아두면 좋을 것 같은 내용이 2가지 있었는데

(1) 그 중 하나는 AWS에서는 서버측 idle timeout을 LB에 설정된 idle timeout보다 크게 설정하기를 권고한다는 것이고

(2) 두번째는 AWS에서는 EC2 인스턴스의 Keep alive option을 활성화하는 것을 권고한다는 것이었다.

AWS에서 서버측 idle timeout을 LB에 설정된 idle timeout보다 크게 설정하기를 권고하는 이유에 대해서는 설명되어 있지 않지만… 그냥 예상해보건데 LB의 idle timeout보다 서버의 idle timeout이 작을 경우 이미 서버에서는 종료된 세션인데 ELB에서는 Idle time이 아직 지나지 않은 것 즉, 살아있는 세션으로 생각하여 서버로 요청을 보내게 되니깐 이를 방지하기 위해서이지 않을까한다.

그리고 두번째로 AWS의 EC2 인스턴스에서 Keep alive 옵션을 활성화 해놓으라는 부분은 아직 공부가 좀 더 필요한 부분인데, 일단 개인적으로 Idle timeout과 keep alive 두 개념이 너무 헷갈렸다.

일단 두 용어의 사전적인 정의는 다음과 같다.

  1. Idle timeout: The length of time that a connection is idle before the connection is eligible for deletion.
  2. Keep alive interval: Is used to adjust the frequency at which client/server sends TCP Keep-Alive packets to a remote host for connection validation.

정의를 봐도 무슨 소린지 모르겠다.

일정 시간 동안 세션을 유지한다는게 두 개념의 공통된 개념인것 같은데 정확한 차이가 뭘까..

일단 여기까지 개념이 들어간다면 포스팅 내용이 너무 길어질 것 같아서 keep alive, Idle timeout에 대한 심화된 내용은 다음 포스팅으로 미뤄두고 다시 본론으로 돌아와서 왜 Keep alive를 활성화 하는가에 대해서는 (여기서도 내 추측이 들어가긴 하지만) Keep alive 옵션을 켜두지 않는다면 NLB/ALB에 의해 (정확히 말하자면 NLB/ALB Idle timeout 설정에 의해) 세션이 종료되기 때문이다.

이 때 사용자에게 별도의 알림?이 가는게 아니기 때문에 사용자의 입장에서는 뜬금없이 세션이 종료되었다고 느낄 수 있다. 그래서 이를 방지하기 위해 Keep alive 옵션 활성화를 권고하는것이 아닐까?

아무튼 오늘 포스팅의 주된 목적은 AWS의 ELB (ALB, NLB) Idle timeout 디폴드 설정 값 및 변경 방법 확인이기 때문에 목적을 달성(?)했으니 오늘 포스팅은 여기서 마무으리 🍰

--

--

No responses yet