为什么 App Engine 无法使用我的 Spring Boot 应用程序连接到 Cloud SQL?



我正在尝试将我的App Engine应用程序(在Java Spring Boot中)与Cloud SQL数据库连接。部署正常工作,应用启动,但在连接到云 SQL 时被阻止:

main] c.g.cloud.sql.core.CoreSocketFactory     : First Cloud SQL connection, generating RSA key pair.
main] c.g.cloud.sql.core.CoreSocketFactory     : Connecting to Cloud SQL instance [test-api:europe-west1:test-db] via SSL socket.
// Nothing happens after that !

我做什么?

1)我在我的数据库上创建一个用户,使用用户名和密码(例如postgres和postgres)。

2)我将此依赖项添加到我的项目中

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter</artifactId>
<version>1.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
<version>1.1.2.RELEASE</version>
</dependency>

3) 我更新应用程序属性

# Gcp configuration
spring.cloud.gcp.sql.database-name=test
spring.cloud.gcp.sql.instance-connection-name=test-api:europe-west1:test-db
#Jdbc connection
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.url=jdbc:postgresql://google/test?cloudSqlInstance=test-api:europe-west1:test-db&socketFactory=com.google.cloud.sql.postgres.SocketFactory&useSSL=false&user=postgres&password=postgres

问题出在哪里?

问题是Connecting to Cloud SQL instance日志后没有任何反应。(见前文)

在启动日志中,我可以看到信息:

main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.19]
main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 11980 ms
main] o.s.c.g.a.s.GcpCloudSqlAutoConfiguration : Default POSTGRESQL JdbcUrl provider. Connecting to jdbc:postgresql://google/test?socketFactory=com.google.cloud.sql.postgres.SocketFactory&socketFactoryArg=test-api:europe-west1:test-db&useSSL=false with driver org.postgresql.Driver
main] o.s.c.g.a.s.GcpCloudSqlAutoConfiguration : spring.datasource.url is specified. Not using generated Cloud SQL configuration
main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
main] c.g.cloud.sql.core.CoreSocketFactory     : First Cloud SQL connection, generating RSA key pair.
main] c.g.cloud.sql.core.CoreSocketFactory     : Connecting to Cloud SQL instance [test-api:europe-west1:test-db] via SSL socket.

另一个奇怪的一点是我指定了&useSSL=false但应用程序正在根据日志连接via SSL socket

这听起来与github/cloud-sql-jdbc-socket-factory #148中发生的事情非常相似。问题是依赖冲突,过时的番石榴版本会导致问题。你能检查一下你指定的番石榴版本吗?

此外,无需担心使用&useSSL=false- JDBC SF 始终使用 SSL,因此这是有意为之。

相关内容

  • 没有找到相关文章

最新更新