【发布时间】:2020-05-27 13:04:48
【问题描述】:
对于我正在处理的示例项目 (https://gitlab.com/connorbutch/reading-comprehension-ws),我在从 google cloud run 连接到 google cloud mysql 数据库时遇到问题。但是,当我使用相同的参数(在 docker 和 kubernetes 中)在本地运行时,应用程序看起来会成功。
此处列出了我在设置我的 google cloud run 应用程序时所遵循的步骤 (https://cloud.google.com/sql/docs/mysql/connect-run)。我在云数据库信息中包含了 mysql db。我尝试过的事情
使用 jdbc 连接字符串中的 ip 地址进行连接(在本地工作,但页面上的此语句表明它可能不适用于 google cloud run,“Cloud Run(完全托管)不支持使用 TCP 连接到 Cloud SQL 实例。您的代码不应尝试使用 IP 地址(例如 127.0.0.1 或 172.17.0.1)访问实例。”) 按照建议使用 unix socket 连接,服务器甚至没有启动
当我在 google cloud 上使用 jdbc url 中的 ip 地址启动应用程序时,看起来应用程序启动成功:
2020-02-12T02:51:01.733606Z 2020-02-12 02:51:01.733 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-02-12T02:51:01.740162Z 2020-02-12 02:51:01.739 INFO 1 --- [ main] com.connor.Application : Started Application in 15.717 seconds (JVM running for 17.715)
但是,当我提出第一个请求时,我看到以下内容:
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
Caused by: java.net.SocketTimeoutException: connect timed out
Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
您有什么建议吗?我想知道这是否与必须配置我们的 DataSource 相关,如下所示:https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/cloud-sql/mysql/servlet/src/main/java/com/example/cloudsql/ConnectionPoolContextListener.java
【问题讨论】:
-
您使用的是 Cloud Run Manager 还是 Anthos?怎么部署到Cloud Run,可以分享一下吗?
-
@pentium10 我刚刚使用 ui 进行部署以进行概念验证
标签: mysql google-cloud-platform cloud google-cloud-run