Amazon EMR에서 발생한 “502 잘못된 게이트웨이” 또는 “504 게이트웨이 시간 초과” 오류로 인한 프라이머리 노드 장애 문제를 해결하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2023년 1월 6일
Amazon EMR 프라이머리 노드가 “502 잘못된 게이트웨이” 또는 “504 게이트웨이 시간 초과” 오류로 인해 실패했습니다.
간략한 설명
EMR 프라이머리 노드가 다음 오류 중 하나로 인해 실패할 수 있습니다.
The master failed: Error occurred:<html>?? <head><title>502 Bad Gateway</title></head> <body>?? <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx/1.20.0</center>?? </body>?? </html>??
또는
The master failed: Error occurred: <html>??<head><title>504 Gateway Time-out</title></head>??<body>??<center><h1>504 Gateway Time-out</h1></center>??<hr><center>nginx/1.16.1</center>??</body>??</html>??
이러한 오류의 일반적인 원인은 다음과 같습니다.
- 인스턴스 컨트롤러 데몬이 중지된 상태이거나 프라이머리 노드 인스턴스에서 다운되었습니다.
- 프라이머리 노드의 메모리 또는 디스크 공간이 부족합니다.
- Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 상태 검사가 실패했습니다.
해결 방법
프라이머리 노드 인스턴스 컨트롤러 데몬 장애 문제 해결
프라이머리 노드의 인스턴스 컨트롤러(I/C)는 EMR 컨트롤 플레인 및 나머지 클러스터와 통신하는 데몬입니다. 인스턴스 컨트롤러가 EMR 컨트롤 플레인과 통신할 수 없는 경우, 프라이머리 노드가 비정상으로 분류되고 클러스터가 종료됩니다.
이 문제를 해결하려면 인스턴스 컨트롤러 로그를 분석하여 프로세스가 실패한 이유를 확인하십시오. 인스턴스 컨트롤러 로그는 /emr/instance-controller/log/에 있습니다.
종료 보호가 켜져 있는 경우 SSH를 프라이머리 노드에 연결하고 인스턴스 컨트롤러 프로세스를 다시 시작합니다.
Amazon EMR 5.30.0 이상의 릴리스 버전:
1. 다음 명령을 사용하여 I/C 상태를 확인합니다.
sudo systemctl status instance-controller.service
2. 다운된 상태인 경우 다음 명령을 사용하여 I/C를 다시 시작합니다.
sudo systemctl start instance-controller.service
Amazon EMR 4.x~2.x 릴리스 버전:
1. 다음 명령을 사용하여 I/C 상태를 확인합니다.
sudo /etc/init.d/instance-controller status
2. 다운된 상태인 경우 다음 명령을 사용하여 I/C를 다시 시작합니다.
sudo /etc/init.d/instance-controller start
로그 파일을 분석하여 메모리 및 디스크 문제 해결
- 종료 방지가 켜져 있는 경우 SSH를 사용하여 프라이머리 노드에 연결합니다. 그런 다음 인스턴스 상태 로그 파일을 검토합니다.
- 인스턴트 상태 로그에 나열된 메모리 및 디스크와 같은 인스턴스 지표를 분석합니다. free -m 및 df -h와 같은 Linux 명령을 사용하여 이러한 지표를 분석할 수 있습니다.
- 로그 파일 결과를 사용하여 프라이머리 노드에서 많은 양의 디스크 또는 메모리를 사용하는 이유를 확인할 수 있습니다.
프라이머리 노드 EC2 인스턴스 상태 검사 실패 문제 해결
- 인스턴스 상태 확인 지표를 확인하여 프라이머리 인스턴스 상태 확인이 실패했는지 확인합니다.
- 인스턴스 상태 확인 실패 문제를 해결합니다. EC2 인스턴스를 시작하고 중지하면 EMR 클러스터가 종료된다는 점에 유의하십시오.
종료 방지 기능이 꺼져 있고 클러스터가 이미 종료된 프라이머리 노드의 문제를 해결합니다.
- 새 EMR 클러스터를 시작하는 동안 종료 보호를 켭니다.
- 더 큰 인스턴스 유형으로 전환합니다. 자세한 내용은 Amazon EMR에서 지원되는 인스턴스 유형을 참조하세요.
- EMR 프라이머리 노드 메모리 및 디스크 사용에 대한 Amazon CloudWatch 경보를 켜십시오.