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

Ara*_*hil 5 google-app-engine google-cloud-sql cloud-sql-proxy app-engine-flexible

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

问题:

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

psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)

代理报告:

couldn't connect to "<instance_name>:us-central1:<instance_name>": 
dial tcp <ip address>:3307: connect: connection refused
Run Code Online (Sandbox Code Playgroud)

在通过 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
Run Code Online (Sandbox Code Playgroud)

我尝试过/检查过的东西

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

任何帮助都将不胜感激,在这一点上我没有想法。谢谢!

小智 1

我首先重新启动了 Cloud SQL 实例。但这没有帮助。然后,我只需单击 SQL 实例的“停止”,一旦停止,单击“启动”,现在它可以工作了。这是相当随机且烦人的。

就我而言,我在当天早些时候升级了 SQL 实例的机器类型,似乎这样做时,Google Cloud 只是“重新启动”实例,而需要的是“停止”然后“启动”。这只是一个猜测。

tl;dr 停止然后启动 Cloud SQL 实例。不要重新启动为“重新启动”!=“停止+启动”

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