Connection拒绝通过代理或App Engine运行Google Cloud SQL实例

时间:2017-06-09 22:52:41

标签: google-app-engine google-cloud-sql app-engine-flexible cloud-sql-proxy

我对Google Cloud和一般运行的应用程序都很陌生。我目前在Google Flexible App Engine上的Docker容器中运行了一个Django应用程序,该应用程序连接到同一项目中的Google Cloud SQL(PostgreSQL)实例。最新版本已经运行了大约3天,现在没有问题。

问题:

今天我开始从应用程序反复收到OperationalError: server closed the connection unexpectedly错误。 我可以运行Cloud SQL Proxy并且它正常启动(Ready for new connections),但如果我尝试连接psql,我收到错误:

psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

代理报告:

couldn't connect to "<instance_name>:us-central1:<instance_name>": 
dial tcp <ip address>:3307: connect: connection refused

在SSH连接到我正在运行的Flex应用程序实例并运行sudo docker logs <cloud proxy container>时,最后一行是类似的:

couldn't connect to "<instance_name>:us-central1:<instance_name>":
dial tcp <ip address>:3307: getsockopt: connection refused

我试过/检查过的事情

  • 重新启动了云sql实例。实例本身运行正常,我可以从控制台使用云外壳访问它。
  • 检查了数据库实例名称和IP地址 - 它们匹配。
  • 重新启动了flex app引擎实例。据我所知,没有变化。
  • 将我的本地cloud_sql_proxy副本升级为1.09。
  • 已检查的配额 - 我似乎没有达到任何API或同时连接限制。
  • 我能够通过authorizing本地IP地址连接到sql实例。
  • 我可以在本地使用代理连接到不同(但非常相似)的Google Cloud SQL实例,因此我不确定代理是否有问题。

任何帮助都会受到赞赏,此时我已经没有想法了。谢谢!

3 个答案:

答案 0 :(得分:0)

我首先重启了Cloud SQL实例。这没有用。然后,我只需点击&#34;停止&#34;对于SQL实例,一旦有了,点击&#34;开始&#34;现在它的工作原理。这非常随意而烦人。

在我的情况下,我在当天早些时候升级了SQL实例的机器类型,似乎这样做,Google Cloud只是&#34;重启&#34;需要的实例是&#34;停止&#34;然后&#34;开始&#34;。这只是猜测。

tl; dr停止然后启动Cloud SQL实例。不要重新启动&#34;重新启动&#34; !=&#34;停止+开始&#34;

希望它可以帮助那些面临这个随机问题的人。

答案 1 :(得分:0)

我们结束了#34;修复&#34;回滚到早期备份的问题。 Google支持人员注意到#34;问题始于您的Cloud SQL实例的维护窗口,因此可能会发生更改导致连接中断&#34;。

答案 2 :(得分:0)

如果仅使用私有IP地址配置CloudSQL实例,这也可能是一个问题。根据文档中隐藏的一小段内容:

  

代理不提供新的连接路径;它依靠现有的IP连接。例如,除非代理使用的是已配置用于私有服务访问的VPC网络,否则您不能使用代理通过私有IP与实例连接。

在这种情况下,唯一的解决方案似乎是向服务器添加公共IP。