Amazon EKS에서 504 HTTP 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에서 실행하는 Kubernetes Service에 연결할 때 HTTP 504(게이트웨이 시간 초과) 오류가 발생합니다.

간략한 설명

로드 밸런서용으로 구성된 Amazon EKS 클러스터에 있는 Kubernetes Service 포드에 연결할 때 HTTP 504 오류가 발생합니다.

HTTP 503 오류를 해결하려면 Amazon EKS 클러스터에서 Kubernetes Service에 액세스할 때 HTTP 503(서비스를 사용할 수 없음) 오류를 해결하려면 어떻게 해야 합니까?를 참조하세요.

HTTP 504 오류를 해결하려면 다음 문제 해결 단계를 완료하세요.

해결 방법

로드 밸런서의 유휴 제한 시간이 올바르게 설정되었는지 확인

로드 밸런서가 대상에 대한 연결을 설정했지만 유휴 제한 시간이 경과하기 전에 대상이 응답하지 않았습니다. 기본적으로 Classic Load BalancerApplication Load Balancer의 유휴 제한 시간은 60초입니다.

1.    Classic Load Balancer 또는 Application Load Balancer에 대한 Amazon CloudWatch 지표를 검토합니다.

참고: 다음과 같은 경우 최소 하나의 요청의 제한 시간이 초과되었습니다.

  • 지연 데이터 포인트는 현재 구성된 로드 밸런서 제한 시간 값과 동일합니다.
  • httpCode_ELB_5xx 지표에는 데이터 포인트가 있습니다.

2.    HTTP 요청이 유휴 제한 시간 내에 완료되도록 로드 밸런서의 유휴 제한 시간을 수정합니다. 또는 더 빠르게 응답하도록 애플리케이션을 구성합니다.

Classic Load Balancer에 대한 유휴 제한 시간을 수정하려면 service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout 주석을 포함하도록 서비스 정의를 업데이트합니다.

Application Load Balancer에 대한 유휴 제한 시간을 수정하려면 alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds 주석을 포함하도록 인그레스 정의를 업데이트합니다.

백엔드 인스턴스에 백엔드 연결 오류가 없는지 확인

백엔드 인스턴스가 유휴 제한 시간 값에 도달하기 전에 TCP 연결을 종료하면 로드 밸런서가 요청을 이행하지 못합니다.

1.    Classic Load Balancer에 대한 CloudWatch BackendConnectionErrors 지표와 Application Load Balancer에 대한 대상 그룹의 TargetConnectionErrorCount를 검토합니다.

2.    백엔드 작업자 노드 또는 Pod에서연결 유지 설정을 활성화하고 연결 유지 제한 시간을 로드 밸런서의 유휴 제한 시간보다 큰 값으로 설정합니다.

연결 유지 제한 시간이 유휴 제한 시간보다 작은지 확인하려면 포드 또는 작업자 노드에서 연결 유지 값을 확인합니다. 포드 및 노드에 대한 다음 예제를 참조하세요.

포드의 경우:

$ kubectl exec your-pod-name -- sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes

노드의 경우:

$ sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes

출력:

net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9

백엔드 대상이 휘발성 포트 범위에서 로드 밸런서로부터 트래픽을 수신할 수 있는지 확인

서브넷에 대한 네트워크 ACL(액세스 제어 목록)은 대상에서 휘발성 포트(1024-65535)의 로드 밸런서 노드로의 트래픽을 허용하지 않습니다.

로드 밸런서와 백엔드 대상 간에 데이터가 이동할 수 있도록 보안 그룹 및 네트워크 ACL을 구성해야 합니다. 예를 들어, 로드 밸런서 유형에 따라 이러한 대상은 IP 주소 또는 인스턴스일 수 있습니다.

임시 포트 액세스를 위한 보안 그룹을 구성해야 합니다. 이를 위해선 노드 및 포드의 보안 그룹 송신 규칙을 로드 밸런서의 보안 그룹에 연결해야 합니다. 자세한 내용은 Amazon 가상 사설 클라우드(Amazon VPC)의 보안 그룹규칙 추가 및 삭제를 참조하세요.


관련 정보

Classic Load Balancing을 사용하도록 구성된 EC2 인스턴스를 실행하는 웹 서버에 연결할 때 HTTP 5xx 오류가 발생합니다. 이러한 오류를 해결하려면 어떻게 해야 합니까?

HTTP 504: 게이트웨이 시간 초과

Classic Load Balancer 모니터링

Application Load Balancer 모니터링

Classic Load Balancer 문제 해결: HTTP 오류

AWS 공식
AWS 공식업데이트됨 일 년 전