1

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

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

4

2 回答 2

0

据我所知,亚马逊不会让你了解他们的底层基础设施。我想不出他们应该这样做的理由。

但是我发现这篇文说你可以使用CPUID指令来找出底层物理机的实际 CPU。

从那个帖子:

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

话虽如此,如果您需要这些信息来确保它们不会一次全部失败,我建议您使用从不同可用区启动实例。这样,即使整个 AZ 出现故障,您仍然可以启动并运行一些实例。

于 2015-09-19T09:45:48.413 回答
0

AWS 没有提供关于获取 VM 放置信息的官方支持。一些大型 AWS 客户能够获得这方面的定制支持。

于 2015-09-21T20:49:32.100 回答