如何針對 Amazon EMR 中具有 “502 Bad Gateway (502 錯誤閘道)” 或 “504 Gateway Time-out (504 閘道逾時)” 錯誤的主節點失敗進行疑難排解?

1 分的閱讀內容
0

我的 Amazon EMR 主節點出現 “502 Bad Gateway (502 錯誤閘道)” 或 “504 Gateway Time-out (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

分析日誌檔案以針對記憶體和磁碟問題進行疑難排解

  1. 如果終止保護已開啟,請使用 SSH 連線到主節點。然後,檢閱執行個體狀態日誌檔
  2. 分析執行個體指標,例如即時狀態日誌中列出的記憶體和磁碟。您可以使用 Linux 命令 (例如 free -mdf -h) 來分析這些指標。
  3. 使用日誌檔結果來判斷主節點使用大量磁碟或記憶體的原因。

針對主節點 EC2 執行個體狀態檢查失敗進行疑難排解

針對已關閉終止保護且叢集已終止的主節點進行疑難排解


AWS 官方
AWS 官方已更新 1 年前