如何排查 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. 分析实例指标,例如实例状态日志中列出的内存和磁盘。您可以使用 free -mdf -h 等 Linux 命令分析这些指标。
  3. 使用日志文件结果来确定主节点使用大量磁盘或内存的原因。

排查主节点 EC2 实例状态检查失败的问题

对已关闭终止保护且集群已终止的主节点进行故障排查


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