实例状态检查可能由于以下原因之一而失败:
内存错误
- 内存不足:终止进程
- 错误:mmu_update失败(内存管理更新失败)
设备错误
- I / O错误(阻止设备故障)
- IO错误:既不是本地磁盘也不是远程磁盘(损坏的分布式块设备)
内核错误
- request_module:runaway loop modprobe(在较旧的Linux版本上循环旧版内核modprobe)
- “致命:内核太旧”和“fsck:尝试打开/ dev时没有这样的文件或目录”(内核与AMI不匹配)
- “致命:无法加载/ lib / modules”或“BusyBox”(缺少内核模块)
- 错误无效的内核(EC2不兼容的内核)
文件系统错误
- request_module:runaway loop modprobe(在较旧的Linux版本上循环旧版内核modprobe)
- fsck:尝试打开时没有这样的文件或目录...(找不到文件系统)
- 常规错误挂载文件系统(挂载失败)
- VFS:无法在未知块上挂载根fs(根文件系统不匹配)
- 错误:无法确定根设备的主要/次要数量...(根文件系统/设备不匹配)
- XENBUS:没有驱动程序的设备......
- ...未经检查的日期,检查强制(需要文件系统检查)
- fsck死于退出状态......(缺少设备)
操作系统错误
- GRUB提示(grubdom>)
- 引入接口eth0:设备eth0具有与预期不同的MAC地址,忽略。 (硬编码的MAC地址)
- 无法加载SELinux政策。机器处于强制执行模式。现在停下来。 (SELinux配置错误)
- XENBUS:超时连接设备(Xenbus超时)
在我看来,#1是最容易实现按需失败的。您可以添加Web挂钩或启动一个带有延迟的shell脚本来启动一些导致OutOfMemory失败的进程,以确认您的自动扩展配置按配置工作。
终止实例将无助于测试您的配置,因为当您正常终止实例时,它将从可用实例池中删除,并且不会执行检查。
有关状态检查的更多详细信息,请访问:Troubleshooting Instances with Failed Status Checks