본문 바로가기

Compute/ELB

(5)
AWS ELB Backend Connection Errors 오픈 준비중인 서비스에서 ELB에서 Backend Connection Errors 및 Surge Queue Length 발생. Request가 없으나 Backend Connection Errors가 일정하게 발생되며, Surge Queue Length가 쌓이기 시작. Surge Queue Length는 ELB의 Backend EC2에서 처리하지 못한 Request가 버퍼에 쌓이는 것, Backend Connection Errors는 Backend EC2와 세션 과정에서 문제가 발생되는 것을 의미. 주로 Backend 가용성 문제로 인해 발생되는 메트릭으로 준비중인 서비스에서 발생되는게 이상함.. 업무는 아니지만.. 확인해봄 Application, EC2 OS, log 상에서도 특이점은 확인되지 않음. 또..
AWS NLB(Network Load Balancer) AWS NLB는 AWS Load Balancer에 Elastic IP(고정)을 부여할 수 있는 현재까진 유일한 Load Balancer 이다. TCP 레이어를 지원한다. 따라서 http cookie 방식의 sticky는 지원하지 않으며, tcp 세션을 350초 유지한다고 한다. NLB의 장점은 클라이언트의 요청에 대해서 낮은 대기 시간으로 높은 처리가 가능하다는 것이다. 따라서 기존 ELB 사용 시에는 짧은 시간 내 스파크성 트래픽 발생에 대한 대응이 어려웠으나 NLB를 사용함으로 ELB의 단점을 해소할 수 있을 것이다. 또한 이벤트 등으로 사이트의 유입이 늘어날 것을 대비해 ELB의 Prewarm을 준비하곤 했으나, NLB를 사용함으로 ELB의 단점을 해소할 수 있을 것이다. NLB와 묶일 수 있는 대..
AWS ELB 사용 시 Apache 408/503 error log AWS ELB와 Apache 사용 시 Apache의 Access Log에 408/50X 에러 로그가 발생되는 경우가 있다. 이 증상은 ELB의 idle timeout과 Apache의 mod_reqtimeout 모듈과의 충돌로 발생된다. ELB의 idle timeout은 Back-end EC2 Instance와 세션 유지를 위한 timeout 시간이며, mod_reqtimeout은 웹 서버 보안 모듈이다. 1. ELB Idle timeout까지 ELB는 Back-end EC2 Instance와 TCP 세션 유지 2. mod_reqtimeout은 일정 시간(default 20~40초)이 경과해도 probe를 보내지 않는 세션을 공격으로 간주하고 차단(408 에러 발생) 3. ELB Idle timeout은 ..
AWS ELB Pre-warm 신청 양식 Elastic Load Balancer(ELB)의 경우 2대의 VM으로 구성된 HTTP정도로 생각하시면 됩니다. 기존 LB 장비에서 사용하는 VIP를 사용할 수 없습니다. 대신 Domain 기반의 End-Point를 제공합니다. ELB의 디폴트 성능 임계치는 나와있지 않습니다. 검색한 바로 초당 200~300 Request 처리가 가능하다고 되어 있습니다. 경험상 세션 임계치는 in/out 총 6만 세션이 디폴트 수치로 보입니다. 따라서 그보다 더 큰 부하 발생 시 ELB는 Scale up/out이 필요합니다. 일반적으로 linear 형태의 Traffic 증가는 ELB 자체적으로 Scale up/out이 됩니다. 그러나 step 형태의 Traffic은 AWS Case Open(ELB Pre-warm)을 ..
AWS ELB Proxy Protocol 기능 활성화 하기(TCP) 금일은 TCP 통신을 위해서 ELB에 Proxy Protocol 정책을 추가해보도록 한다. 1. 개요 기본적으로 ELB는 http 및 https 통신에 한해서 Sticky Session 지원과 Client IP를 포워딩한다. 기존 http 헤더에서 x-forwarded-for/port/protocol 의 항목이 추가 됐다. 아래는 ELB를 통해 들어온 http 통신 header 값이다. { host: 'test-2139921278.ap-northeast-1.elb.amazonaws.com:8080', accept: '*/*', 'accept-encoding': 'gzip, deflate, sdch', 'accept-language': 'ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4', ..