当 Compute Engine 外部 IP 地址设置为无时发布/订阅 DEADLINE_EXCEEDED

Posted

技术标签:

【中文标题】当 Compute Engine 外部 IP 地址设置为无时发布/订阅 DEADLINE_EXCEEDED【英文标题】:Pub/Sub DEADLINE_EXCEEDED when Compute Engine external IP address set to None 【发布时间】:2017-07-22 09:37:36 【问题描述】:

我正在使用基于 CentOS 的 Google Compute Engine 实例中的 python 示例发布/订阅代码。

https://cloud.google.com/pubsub/docs/quickstart-cli

如果实例将外部 IP 地址配置设置为“临时”,则一切正常。我可以发布到我的主题并从我的订阅中提取。

但是,如果我在创建实例时将外部 IP 地址设置更改为“无”,那么 pub/sub 调用最终会超时并显示 DEADLINE_EXCEEDED 状态代码。

文件“pyenv/lib/python2.7/site-packages/grpc/_channel.py”,第 459 行,在 _end_unary_response_blocking raise _Rendezvous(状态,无,无,截止日期) google.gax.errors.GaxError: GaxError(RPC 失败,由 <_rendezvous of rpc deadline exceeded> 终止)

我可以毫无问题地通过 ssh 连接到实例。我已经更改了其他实例设置,而这两种方式的行为都没有任何差异,这就是我将问题缩小到外部 IP 地址设置的方式。

是否存在客户端可外部寻址的已知要求?

或者您认为这可能是权限问题?

感谢您的任何建议。

【问题讨论】:

一封来自 Google 员工的非常有用的电子邮件向我指出:cloud.google.com/solutions/connecting-securely 【参考方案1】:

“无”表示没有 IP,与无法从 Internet 访问不同。设置为 none 将导致它们也没有 出站 连接到 Internet,并且 PubSub 调用将没有路由然后失败。

【讨论】:

感谢您的解释。我的问题源于这样一个事实,即无论外部 IP 设置如何,我都可以从实例中查询一些服务。例如,元数据服务器是可访问的。这种不一致令人困惑。

以上是关于当 Compute Engine 外部 IP 地址设置为无时发布/订阅 DEADLINE_EXCEEDED的主要内容,如果未能解决你的问题,请参考以下文章

从 Google Compute Engine 网络负载平衡器后面访问外部客户端 IP

您可以从 Google Compute VM 实例中获取外部 IP 地址吗?

Google 是不是会为 Google Compute Engine 实例发布 DNS 记录?

Google Compute Engine:如何从外部提出请求?

非抢占式 Google Compute Engine VM 上的 ngrok

将App Engine URL分派给Compute Engine实例