- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我好像遇到了类似this的问题问题在于,在 GCP 上使用 gitlab runner 构建 docker 镜像时出现以下超时
Put https://registry.gitlab.com/v2/[redacted-repo]: dial tcp 35.227.35.254:443: i/o timeout
此时我的谷歌云 NAT 给出了以下日志输出:
{
"insertId": "rh7b2jfleq0wx",
"jsonPayload": {
"allocation_status": "DROPPED",
"endpoint": {
"project_id": "gitlab-autoscale-runners",
"vm_name": "runner-5dblbjek-auto-scale-runner-1589446683-0b220f90",
"region": "europe-west4",
"zone": "europe-west4-b"
},
"connection": {
"protocol": 6,
"src_port": 42446,
"src_ip": "some-ip",
"dest_ip": "some-ip",
"dest_port": 443
},
"vpc": {
"vpc_name": "default",
"subnetwork_name": "default",
"project_id": "gitlab-autoscale-runners"
},
"gateway_identifiers": {
"gateway_name": "gitlab-runner-gateway",
"router_name": "gitlab-runner-router",
"region": "europe-west4"
}
},
"resource": {
"type": "nat_gateway",
"labels": {
"region": "europe-west4",
"router_id": "7964886332834186727",
"gateway_name": "gitlab-runner-gateway",
"project_id": "gitlab-autoscale-runners"
}
},
"timestamp": "2020-05-14T10:17:55.195614735Z",
"labels": {
"nat.googleapis.com/nat_ip": "",
"nat.googleapis.com/instance_name": "runner-5dblbjek-auto-scale-runner-1589446683-0b220f90",
"nat.googleapis.com/network_name": "default",
"nat.googleapis.com/subnetwork_name": "default",
"nat.googleapis.com/router_name": "gitlab-runner-router",
"nat.googleapis.com/instance_zone": "europe-west4-b"
},
"logName": "projects/gitlab-autoscale-runners/logs/compute.googleapis.com%2Fnat_flows",
"receiveTimestamp": "2020-05-14T10:18:00.422135520Z"
}
上述问题似乎表明过度使用 NAT 端口存在问题。我已经通过使用谷歌云 CLI 确认这在我们的案例中不是问题,请参见下文。
$ gcloud compute routers get-nat-mapping-info gitlab-runner-router
---
instanceName: runner-5dblbjek-auto-scale-runner-1589446683-0b220f90
interfaceNatMappings:
- natIpPortRanges:
- some-id:1024-1055
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
sourceAliasIpRange: ''
sourceVirtualIp: some-ip
- natIpPortRanges:
- some-ip:32768-32799
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
sourceAliasIpRange: ''
sourceVirtualIp: some-ip
我似乎只使用了一些 64 端口。
谷歌云路由器通告以下状态:
kind: compute#routerStatusResponse
result:
natStatus:
- autoAllocatedNatIps:
- some-ip
minExtraNatIpsNeeded: 0
name: gitlab-runner-gateway
numVmEndpointsWithNatMappings: 3
network: https://www.googleapis.com/compute/v1/projects/gitlab-autoscale-runners/global/networks/default
相同的 docker-images 在本地运行时或在共享的 gitlab 运行器中运行时确实成功构建,即当不在 NAT 后面时。
在 google cloud nat 后面构建这个 docker 镜像时,如何防止超时?
最佳答案
查看 Cloud NAT 输出,它显示分配丢弃状态。建议的操作是将每个 VM 实例的最小端口数增加到足够的范围(4096 个端口)并让它运行几天。我建议这个数字来达到我们将停止掉落的地方,如果这有助于减少掉落,我们可能必须以 2 的系数增加更多,直到没有收到掉落。如果您在 4k 端口没有收到任何 DROPPED 状态,您可以减少它,直到找到一个中间值,您不再收到 DROPPED 状态,也没有打开大量 NAT 端口。您正在达到 64 个连接。端口使用表示 VM 到单个唯一目标(目标 IP:端口,协议(protocol))的连接数
查看您的配置,目前每个 VM 分配了 64 个端口(正如您在描述中提到的)。这意味着,该 vpc 中的每个 VM 实例都会获得 64 个 NAT IP:PORT 组合以进行外部连接。这意味着,您可以连接到 64 个唯一的唯一目标(目标 IP 地址、目标端口和协议(protocol))。当您进行测试时,您似乎已达到该限制。
分配给云 nat 网关的每个 NAT IP 都有 64512 个端口,因此在默认配置为每个 VM 64 个端口的情况下,NAT 网关会为 NAT 网关配置中选择的指定子网中的每个 VM 分配 64 个 NAT IP:PORT block .因此,这意味着使用此配置,您可以运行 1008 个 VM(64512 除以 64)。但是每个虚拟机可以同时连接到 64 个唯一的目的地。现在,根据您的应用程序/用例,如果您需要更多并发连接,则需要增加每个 VM 的最小端口数。
例如,如果每个 VM 有 1 个 NAT IP 和 1024 个最小端口,则可以运行 63 个 VM。每个虚拟机可以连接到 1024 个唯一目的地。如果你需要运行更多的VM你,需要分配更多的NAT IP。通过添加第二个 IP,您可以将 NAT 容量增加一倍。由于您选择了自动分配 NAT IP,因此当您在子网中创建更多 VM 时,将自动创建和分配 NAT IP。在这种情况下,您只需要调整每个虚拟机配置的最小端口即可满足您的流量需求。
请注意,一旦连接终止,NAT 网关有 2 分钟的计时器,在此之前 NAT IP:PORT 可以使用。 [1] ,所以你保持端口配置比你的峰值流量高一点。
有关端口计算的更多详细信息,请参见此处 [2]
[1] https://cloud.google.com/nat/docs/overview#specs-timeouts
[2] https://cloud.google.com/nat/docs/ports-and-addresses#ports
关于google-cloud-platform - GCP Nat 后超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61800313/
我考虑创建一个基于 NATS 的新解决方案,目前只剩下两个悬而未决的问题。在我的场景中,我需要客户端向服务器进行身份验证,以及可能的机制 user+pass、token 和 JWT 我想使用 toke
我需要在我的程序中以编程方式确定路由器 NAT 类型。我确实查看了一些与 STUN 相关的答案和关于 SO 的 UPnP 相关信息。但没有得到任何确定的答案。 我查看了 STUN RFC (rfc 5
以下两个命题很容易证明。 Theorem nat_eq_nat : nat = nat. Proof. trivial. Qed. Theorem True_neq_False : ~(True
如果我要求 gethostbyaddr() 查找 NAT 生成的 IP 地址,例如 192.168.0.4,我应该期望它起作用吗? 背景:我正在家里对一些用于网络环境的控制代码进行测试。有时,此代码会
我正在尝试使多层 NAT 后面的(apache)服务器可以从 Internet 访问。 限制: 避免中继。有一个公共(public)服务器(我们称他为 OldMan)用于登录/眩晕,但它的带宽太差,无
在 OCaml 中使用类型级算法,很容易定义一个函数,该函数的 nat 值高于特定值: let f : 'a succ nat -> string = function _ -> "hej" f Ze
我正在寻找一种方法来显示操作期间 NATS 流服务器上当前存在的所有主题。已经彻底查看了文档,但到目前为止还没有找到提及。 有没有办法找到可以在服务器上订阅的所有可用主题的列表? 最佳答案 我刚刚合并
我发现:“唯一需要 TURN 的情况是当其中一个对等点位于对称 NAT 后面,而另一个对等点位于对称 NAT 或端口限制 NAT 后面时。”那么,对称 NAT 后面的对等点如何连接后面的另一个点(例如
我的数据框是 time NTCS001G002 NTCS001W005 0 2013-05-30 23:00:00 NaN NaN 1 2013-06-30
我的问题是我需要增加 NATS 收到的 max_payload 值,但我不知道我可以在哪里做。 该项目正在使用 Moleculer,NATS 被创建为带有 docker 的容器。 当我尝试发出大于 1
我正在尝试调试一个问题,我了解 VirtualBox 中的 NAT 网络适配器与 VMWare Fusion 中的 NAT 网络适配器之间的区别。到目前为止,我可以配置 VMWare 并实现我想要的结
是否可以向 nat 后面的主机发送回显请求 后。所有的 echo-request 都不包含目标主机的端口,因此如果有多个主机使用相同的外部 ip 地址,nat 将如何将 echo-reques
是否有任何工具可用于监控通过 NATS 队列发布的实际消息?对于演示文稿,我需要显示通过微服务架构显示的消息,最好通过现有解决方案来实现,而不是自己编写一个。 我现在有 Natsboard ( htt
根据维基百科文章 Micro Transport Protocol支持使用UDP打洞的NAT穿越。但是看着libutp's project page我在头文件中找不到任何这样的引用。我错过了一些明显的
我在网上查了一下,我发现的所有内容都显示了如何创建一个单独的服务器来连接到位于 nat 或防火墙后面的主服务器。 但在我的例子中,客户端位于 NAT 后面,服务器位于本地网络上。 所以它的设置有点像下
我已经在我的 Windows 机器上启动并运行了带 docker 的 NATS 服务器。 我也想在我的 Windows 机器上安装 nats CLI 工具。 文档中只提到了 Mac 和 Linux。
我已经安装了 Asterisk 11 并出现了这个错误。我更改了 sip.conf 并且仍然在 Asterisk Debug模式下看到错误日志。 Asterisk 日志 [Apr 16 20:43:0
我有以下 Cloud Formation 配置,其中包括子网、路由表/路由、nat 网关和弹性 IP: lambdaPointToIgwStaging: Type: 'AWS::EC2::
我在私有(private)子网中的 aws 上使用 Kops 创建了一个 kubernetes 集群。 当使用 NAT 网关作为集群中的导出点时,一切正常。但是,当我尝试将 NAT 实例部署为集群中的
配置LVS-NAT模式 由于我们要进行LVS-NAT模式集群搭建。首先在VMware中添加两个虚拟网段 VMnet2:做内网的网段 VMnet4:做外网的网段 然后
我是一名优秀的程序员,十分优秀!