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>??"
これらのエラーは、次のいずれかの理由で発生する可能性があります。
- instance-controller デーモンが停止状態にあるか、プライマリノードインスタンスでダウンしている。
- プライマリノードのメモリまたはディスク容量が不足している。
- Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのステータスチェックが失敗している。
解決策
プライマリノードの instance-controller デーモンの障害に関するトラブルシューティング
プライマリノードのインスタンスコントローラーは、Amazon EMR コントロールプレーンおよびクラスターの残りの部分と通信します。インスタンスコントローラーが Amazon EMR コントロールプレーンと通信できない場合、Amazon EMR はプライマリノードを異常として分類します。終了保護が有効になっている場合は、SSH を使用してプライマリノードに接続し、インスタンスコントローラーのプロセスを再起動します。
Amazon EMR バージョン 5.30.0 以降:
-
インスタンスコントローラーのステータスを確認するには、次のコマンドを実行します。
sudo systemctl status instance-controller.service
-
インスタンスコントローラーのステータスが down の場合は、次のコマンドを実行してインスタンスコントローラーを再起動します。
sudo systemctl start instance-controller.service
Amazon EMR バージョン 2〜4:
-
インスタンスコントローラーのステータスを確認するには、次のコマンドを実行します。
sudo /etc/init.d/instance-controller status
-
インスタンスコントローラーのステータスが down の場合は、次のコマンドを実行してインスタンスコントローラーを再起動します。
sudo /etc/init.d/instance-controller start
メモリとディスクの問題に関するトラブルシューティング
次の手順を実行します。
- 終了保護が有効になっている場合は、SSH を使用してプライマリノードに接続します。
- instance-state ログファイルを確認します。
- instance-state ログにリストされているメモリやディスクなどのインスタンスメトリクスを分析します。free -m や df -h などの Linux コマンドを使用して、これらのメトリクスを分析できます。
- ログファイルの結果を使用して、プライマリノードが大量のディスクまたはメモリを使用している理由を特定します。
プライマリノードの EC2 インスタンスのステータスチェック失敗に関するトラブルシューティング
インスタンスのステータスチェックメトリクスを確認して、プライマリインスタンスのステータスチェックが失敗するかどうかを特定します。インスタンスのステータスチェックが失敗する場合は、インスタンスのステータスチェックの失敗をトラブルシューティングします。
注: EC2 インスタンスを起動および停止すると、Amazon EMR クラスターが停止します。
終了保護がオフになっていて、クラスターがすでに終了しているプライマリノードのトラブルシューティング
次の操作を実行します。