启动一分钟后才能连接networking

似乎启动后有一个重要的(一分钟)延迟,直到networking实际上达到元数据服务器(169.254.169.254)以外的任何时间。 我testing过使用默认的debian jessie图像,也是我的自定义图像。 我看到了同样的问题。

这也可以通过使用串行控制台连接到机器来validation。 除了所说的元数据服务器之外,什么都不可能,甚至不是同一个GCEnetworking上的其他机器。

任何人看到这个或有任何线索是关于什么?

编辑:

这只发生在机器“冷靴”(即从头开始)时。

大致我看到以下事件:

  • 0s – 在控制台中按“启动虚拟机”
  • 1s – 实例状态(根据API)更改为PRIVISIONING
  • 4s – 实例状态更改为STAGING
  • 20s – 实例状态更改为RUNNING
  • 49s – 实例响应来自同一子网上的另一台虚拟机的ping。

当我按“启动虚拟机”时开始ping:

 $ ping 10.128.0.5
 PING 10.128.0.5(10.128.0.5)56(84)字节的数据。
来自10.128.0.5的64字节:icmp_seq = 49 ttl = 64时间= 1.08ms
来自10.128.0.5的64个字节:icmp_seq = 50ttl = 64时间= 0.285ms

因此,假设启动(包括DHCP)需要大约25秒钟的networking隔离时间,大约需要5秒钟,正如我们在重启时看到的那样:

将其与重启实例的情况进行比较,在该实例中,只有7秒钟不可达(并且包括几秒closures)

 $ ping 10.128.0.5
 PING 10.128.0.5(10.128.0.5)56(84)字节的数据。
来自10.128.0.5的64字节:icmp_seq = 1 ttl = 64时间= 1.07ms
来自10.128.0.5的64字节:icmp_seq = 2 ttl = 64时间= 0.271ms
来自10.128.0.5的64字节:icmp_seq = 3 ttl = 64时间= 0.236ms
来自10.128.0.5的64字节:icmp_seq = 4 ttl = 64时间= 0.295ms
来自10.128.0.5的64字节:icmp_seq = 5 ttl = 64时间= 0.316ms
来自10.128.0.5的64字节:icmp_seq = 12 ttl = 64时间= 0.595ms
来自10.128.0.5的64字节:icmp_seq = 13 ttl = 64时间= 0.240ms
来自10.128.0.5的64字节:icmp_seq = 14 ttl = 64时间= 0.238ms
来自10.128.0.5的64字节:icmp_seq = 15 ttl = 64时间= 0.299ms

一位GCP员工解释了黑客新闻的原因https://news.ycombinator.com/item?id=15343888

我们正在努力。 这对我们来说是一个主要的举措,因为正如你所看到的,我们可以在几秒钟之内把这个该死的东西“启动”,然后从互联网上进出是一个长长的过程。 Fwiw,我们至less可以从/ .googleapis.com下来,所以如果你需要说从GCS获取一些东西,那应该快一点。

从更高的层面来看,这是拥有全球统一networking的结果,而且在您对所有路线进行“编程”之前,不希望宣布networking“向上”。 因此,如果您有1000台虚拟机分布在全球范围内,那么您必须确保它们没有“连接”,直到asia-east1-a中的新虚拟机可以与networking中的所有其他虚拟机进行通信(反之亦然)。 使用到/从API的path,这个路由就简单得多,因为你没有得到N ^ 2的行为。