IT/Cloud

HTTP 응답코드에 따른 Load balancer 문제 확인 및 해결

동구멍폴로 2023. 11. 21. 22:33
반응형

Http 응답코드에 대해서는 기존 글로 정리했던 사항이 있다. (https://ls-altr.tistory.com/35)

이는 WEB서버 혹은 WAS 서버 관리시 자주 활용되는 사항인데, Cloud에서는 다른 조치 사항들이 있어 이를 정리하고자 한다.

오류 코드 / 메시지 원인 해결방안
400 Bad request 

-  클라이언트가 HTTP사양을 충족하지 않는 잘못된 형식의 요청을 전송
- 요청 헤더가 요청 Line당 16K, 단일 헤더당 16K 또는 전체 요청 헤더에서 64K를 초과
-  클라이언트가 전체 요청 본문을 보내기 전에 연결 종료
- request 확인 후 조치
- 헤더 사이즈 확인
- Timeout 확인

401 Unauthorized  -  인증되지 않은 사용자를 거부하도록 OnUnauthenticatedRequest를 구성했거나 IdP가 액세스를 거부
-  IdP에서 반환된 클레임 크기가 로드밸런서 지원 최대 크기 초과
-  클라이언트가 호스트 헤더 없이 HTTP/1.0 요청을 제출했으며, 로드밸런서가 리디렉션 URL을 생성하지 못함
-  요청된 범위가 ID 토큰을 반환하지 않음
-  클라이언트 로그인 제한시간만료 전에 로그인 프로세스 미완료
- Request 사이즈 확인 
- Timeout 확인
- 권한 확인
403 Forbidden 

-  Application Load Balancer에 대한 요청을 모니터링하기 위해 AWS WAF 웹 액세스 제어 목록(웹 ACL)을 구성하여 요청이 차단됨

- 차단된 경우인 건이 많아, SG/방화벽 설정 등 보안 요소 확인
408 Request timeout  - 클라이언트가 유휴 제한 시간 만료 전에 데이터를 전송하지 않음
- 각 유휴 제한 시간이 지나기 전에 최소 1바이트의 데이터를 전송
 
413 Payload too large 

- 대상이 Lambda 함수이고 요청 본문이 1MB를 초과  
414 URI too long  - 요청 URL 또는 쿼리 문자열 파라미터가 너무 큼 - 문자열 확인
460 

- 로드밸런서가 클라이언트에서 요청을 수신했지만, 유휴 제한 시간이 종료되기 전에 클라이언트가 로드밸런서와의 연결을 종료
- 클라이언트 제한 시간이 로드밸런서의 유휴 제한 시간보다 큰지 확인
- 클라이언트 제한 시간이 끝나기 전에 대상이 클라이언트에 응답을 제공하는지 확인하거나, 클라이언트가 제한 시간을 지원할 경우 로드밸런서의 유휴 제한 시간에 맞게 클라이언트 제한 시간 연장
- 로드밸런서의 유휴 제한 시간에 맞게 클라이언트 제한 시간 연장
500 Internal server error 

- AWS WAF 웹 액세스 제어 목록(웹 ACL)을 구성했으며 웹 ACL 규칙을 실행하는 데 오류 발생
- 로드 밸런서가 IdP 토큰 엔드포인트 또는 IdP 사용자 정보 엔드포인트와 통신 불가
-  IdP의 DNS를 공개적으로 확인할 수 있는지 확인
- 로드 밸런서의 보안 그룹과 VPC의 네트워크 ACL이 이러한 엔드포인트에 대한 발신 액세스를 허용하는지 확인
- VPC에서 인터넷에 액세스할 수 있는지 확인, 내부 로드 밸런서가 있는 경우, NAT 게이트웨이를 사용하여 인터넷 액세스 활성화
- 액세스 허용요소(SG/Firewall/OS 내부 firewalld 등 확인)
- Gateway 제한 요소 확인
502 Bad gateway  - ELB가 대상 그룹의 인스턴스로부터 응답을 받지 못함
- 대상 그룹 인스턴스의 서비스 상태 확인 및 요청/응답 로그 확인
- 대상 서비스 기동 여부 확인
503 Service Unavailable  - 대상 그룹에 등록된 인스턴스가 없거나 클라이언트 요청이 급격히 증가하는 경우
- 대상 그룹에 인스턴스를 등록
- ELB의 스케일링 시간 부족 문제로 시간이 지나면 해결될 수 있음
- Target 그룹 내 어플리케이션 기동 여부 확인 / 실제 WAS 문제일 가능성 많음.
- ASG 등으로 인해 일시적일 수도 있다.
504 Gateway Timeout - ELB의 Idle Timeout보다 대상 그룹 인스턴스의 요청을 처리하는 시간이 더 긴 경우
- 인스턴스가 ELB Connection을 Close한 경우
- 인스턴스 스케일 아웃 또는 Idle Timeout 상향 조정
- 대상 그룹 인스턴스의 Keep-alive Timeout을 ELB Timeout보다 높게 조정
- ELB Timeout 점검

 

참고 : https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html

반응형