我的 Amazon EMR 主要節點失敗,並出現「502 Bad Gateway」或「504 Gateway Time-out」錯誤。
簡短說明
Amazon EMR 主要節點可能會因以下其中一個錯誤而失敗:
「The master failed: Error occurred:<html>?? <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-16"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><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><meta http-equiv="Content-Type" content="text/html; charset=UTF-16"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><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) 執行個體狀態檢查失敗。
解決方法
對主要節點執行個體控制器常駐程式失敗進行疑難排解
主要節點上的執行個體控制器會與 Amazon EMR 控制平面和叢集的其餘部分通訊。如果執行個體控制器無法與 Amazon EMR 控制平面通訊,Amazon EMR 會將主要節點歸類為運作狀態不佳。如果已開啟終止保護,請使用 SSH 連線到主要節點,然後重新啟動執行個體控制器程序。
Amazon EMR 5.30.0 及更新版本:
-
若要檢查執行個體控制器的狀態,請執行以下命令:
sudo systemctl status instance-controller.service
-
如果執行個體控制器狀態為停止運作,請執行以下命令重新啟動執行個體控制器:
sudo systemctl start instance-controller.service
Amazon EMR 2 到 4 版:
-
若要檢查執行個體控制器的狀態,請執行以下命令:
sudo /etc/init.d/instance-controller status
-
如果執行個體控制器狀態為停止運作,請執行以下命令重新啟動執行個體控制器:
sudo /etc/init.d/instance-controller start
疑難排解記憶體和磁碟問題
請完成以下步驟:
- 如果已開啟終止保護,請使用 SSH 連線到主要節點。
- 檢閱執行個體狀態日誌檔案。
- 分析執行個體狀態日誌中列出的執行個體指標,例如記憶體和磁碟。您可以使用 Linux 命令,例如 free -m 和 df -h,來分析這些指標。
- 使用日誌檔案結果來判斷主要節點為何使用大量磁碟或記憶體。
對主要節點 EC2 執行個體狀態檢查失敗進行疑難排解
檢閱執行個體狀態檢查指標,以判斷主要執行個體狀態檢查是否失敗。如果執行個體狀態檢查失敗,請對執行個體狀態檢查失敗進行疑難排解。
**注意:**當您啟動和停止 EC2 執行個體時,您的 Amazon EMR 叢集會停止。
對已關閉終止保護且叢集已終止的主要節點進行疑難排解
請採取以下動作: