【问题标题】:Significant delay when accessing internet via google cloud NAT [closed]通过谷歌云 NAT 访问互联网时出现明显延迟 [关闭]
【发布时间】:2019-09-20 11:54:51
【问题描述】:

在我们的设置中,我们的虚拟机没有通过 Google Cloud NAT 访问外部世界的外部 IP。

我们正在观察奇怪的行为:

  • 每 10 到 15 个请求都会显着延迟(15 到 135 秒)
  ~$ for i in {1..50}; do echo $i;  time curl -s 'https://stackoverflow.com/' > 
  /dev/null; done
  .
  .
  .
  15

  real  2m10.830s
  user  0m0.049s
  sys   0m0.029s
  • 我可以在堆栈驱动程序日志中看到相关连接已被删除:
    {
    .
    .
    .
      jsonPayload: {
        allocation_status: "DROPPED"
      }
      timestamp: "2019-09-20T11:41:05.904608023Z"  
    }

对于如何解决问题的任何想法/建议将不胜感激。 :)

谢谢,

鲍里斯

【问题讨论】:

  • 这种情况会发生在其他网站上吗?智能防火墙可以检测到您一遍又一遍地访问同一页面,并假设正在发生攻击。 DROPPED 表示对方拒绝了你的连接尝试。如果是这种情况,您的解决方案是不这样做。
  • 问题并非特定于网站。即使是我们控制的网站也会发生这种情况,而且我们知道防火墙规则不适用。
  • 它的经典问题使用 GCP Cloud NAT,配置“每个 VM 实例的最小端口”非常痛苦,AWS NAT GATEWAY 易于使用,minimun 配置为高流量网站做好准备,但对于 GCP Cloud NAT,您需要添加更多 IP Public 并为 GCP Cloud NAT 配置“每个 VM 实例的最小端口数”

标签: google-cloud-platform google-cloud-networking


【解决方案1】:

您的虚拟机可能已用完available NAT ports。例如,如果您为每个 VM 分配 4096 个端口,那么您需要为每 15 个 VM 分配一个 NAT IP 地址。在实时操作期间,如果 VM + NAT 由于打开的连接(TCP 是寿命最长的)而耗尽可用端口,您可能会开始看到流量下降。您可能需要考虑减少 TCP timeout,或为每个 VM 分配更多端口。

您可以在 Cloud 控制台中使用 this command 查看 NAT 映射的当前状态(例如,每个 IP/VM 的端口数):

gcloud 计算路由器 get-nat-mapping-info [ROUTER NAME]

【讨论】:

    【解决方案2】:

    您可能还想查看 Endpoint-Independent Mapping:https://cloud.google.com/nat/docs/ports-and-addresses#conflicts-eim

    到公共端点的频繁、重复流受端口/VM 数量以及与端点无关的映射配置的限制。如果 GCP 允许更改 NAT 延迟计时器会很有用:https://cloud.google.com/nat/docs/overview#nat_timeouts

    在 256 个端口/VM 的情况下,NAT-GW 上有 32 个公共 IP,我们计算出我们可以向相同的(目标 IP、端口、协议)元组发出 2.1 个请求/秒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      相关资源
      最近更新 更多