跳至内容

如何排查 Amazon EMR 中出现 "502 Bad Gateway" 或 "504 Gateway Time-out" 错误的主节点故障?

1 分钟阅读
0

我的 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>??"

-or-

"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 及更高版本:

  1. 要检查实例控制器的状态,请运行以下命令:

    sudo systemctl status instance-controller.service
  2. 如果实例控制器处于关闭状态,则运行以下命令以重新启动实例控制器:

    sudo systemctl start instance-controller.service

Amazon EMR 版本 2 到 4:

  1. 要检查实例控制器的状态,请运行以下命令:

    sudo /etc/init.d/instance-controller status
  2. 如果实例控制器处于关闭状态,则运行以下命令以重新启动实例控制器:

    sudo /etc/init.d/instance-controller start

对内存和磁盘问题进行故障排除

完成以下步骤:

  1. 如果已开启终止保护,请使用 SSH 连接到主节点
  2. 查看实例状态日志文件
  3. 分析实例状态日志中列出的内存和磁盘等实例指标。您可以使用 free -mdf -h 等 Linux 命令来分析这些指标。
  4. 使用日志文件结果来确定主节点使用大量磁盘或内存的原因。

对主节点 EC2 实例状态检查失败进行故障排除

查看实例状态检查指标,确定主实例状态检查是否失败。如果实例状态检查失败,则对实例状态检查失败进行故障排除。

**注意:**当您启动和停止 EC2 实例时,您的 Amazon EMR 集群将会停止。

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

执行以下操作:

AWS 官方已更新 6 个月前