【问题标题】:Connecting to AWS Aurora Serverless with Spring Boot使用 Spring Boot 连接到 AWS Aurora Serverless
【发布时间】:2021-02-05 15:06:32
【问题描述】:

尝试将 Spring Boot 容器连接到 Aurora Serverless 数据库。以下是有效的:

  • 将容器连接到预置的 Aurora 数据库
  • 通过psql从我的计算机连接到无服务器数据库

但是,当我为无服务器数据库配置数据库连接参数并启动容器时,出现以下错误:

    org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:315) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:225) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.16.jar!/:42.2.16]
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar!/:na]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar!/:na]
    ...
    Caused by: java.io.EOFException: null
    at org.postgresql.core.PGStream.receiveChar(PGStream.java:443) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.core.v3.ConnectionFactoryImpl.enableGSSEncrypted(ConnectionFactoryImpl.java:436) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:144) ~[postgresql-42.2.16.jar!/:42.2.16]
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.16.jar!/:42.2.16]
    ... 37 common frames omitted

这是我尝试过的(this post):

  • 调整 Hikari 连接参数(似乎没有任何作用):
    spring.datasource.hikari.minimum-idle=0
    spring.datasource.hikari.maximum-pool-size=10
    spring.datasource.hikari.connection-timeout=60000
    spring.datasource.hikari.max-lifetime=90000
    spring.datasource.hikari.idle-timeout=90000
  • 延迟 bean 初始化(似乎减少了连接超时之前的时间):
    spring.main.lazy-initialization=true

我的计算机是对等 VPC 中的工作区,因此 VPC 应该不是问题。此外,当我在 VPC 内的 ECS 集群中启动容器时,我遇到了同样的问题。任何帮助将不胜感激 - 我已经研究了好几个星期。

【问题讨论】:

  • 您找到解决方案了吗?我也有同样的问题。 :-(

标签: amazon-web-services spring-boot hikaricp amazon-aurora


【解决方案1】:

我成功地将?gssEncMode=disable 添加到 jdbc url。

例如:jdbc:postgresql://dev-aurora-postgres-serverless.cluster-xxxxxxx.eu-central-1.rds.amazonaws.com:5432/my_db?gssEncMode=disable

【讨论】:

  • 你真是太幸运了——我已经为此苦苦挣扎了好几个星期了。非常感谢!
  • 我不得不查看 Postgres JDBC 驱动程序的 ConnectionFactoryImpl 类来尝试了解发生了什么。看起来像是来自 Aurora-Serverless 的非标准响应。将来他们可能会自己解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 2019-04-05
  • 2019-10-16
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
相关资源
最近更新 更多