在AWS中,如何从实例ID获取物理实例ID?

时间:2015-09-19 08:41:03

标签: amazon-web-services aws-ec2

当我们使用小型AWS实例(例如,d2.xlarge等)时,可能会将多个实例分配给同一主机。我想检查两个虚拟机实例是否在同一主机上。有没有办法让我们获取vms的物理实例ID?有了这些信息,我们可以检查两个实例是否在同一个物理主机上。

这背后的主要动机是提高在云中运行有状态服务的可靠性。我们使用d2.xlarge实例在云中运行hbase / kafka工作负载。这些服务需要数据复制。由于一个物理主机最多可以承载8个d2.xlarge实例。如果一个物理节点关闭,它可能会影响多个虚拟机实例,并导致数据丢失。

2 个答案:

答案 0 :(得分:0)

据我所知,亚马逊不会让你知道他们的底层基础设施。而且我想不出他们应该这样做的原因。

但我发现这个Jagged Arrays说您可以使用 CPUID 指令找出底层物理机的实际CPU。

从那篇文章:

  

所有x86 CPU制造商都支持“cpuid”指令   它旨在报告CPU的功能。这条指令   是非陷阱的,这意味着您可以在用户模式下执行它   触发保护陷阱。在Xen半虚拟化管理程序中   (亚马逊使用的),这意味着管理程序无法使用   拦截指令,并更改它返回的结果。   因此,“cpuid”的输出是来自的实际输出   物理CPU。

话虽如此,如果您需要此信息以确保它们不会一下子全部失败,我建议您使用来自不同可用区域的启动实例。这样,即使整个AZ发生故障,你仍然会有一些实例启动并运行。

答案 1 :(得分:0)

AWS没有获得VM放置信息的官方支持。一些大型AWS客户可以获得定制支持。