0

部署在 Amazon ECS(使用 Fargate)上的应用程序在连接无服务器 Aurora DB 时遇到问题。我可以使用堡垒主机、具有公共 IP 和 SSH 隧道的同一 VPC 中的 EC2 实例成功连接到这个无服务器数据库。数据库连接对provisionedEngineMode 成功,但serverless它会引发以下错误:

2020-11-23 10:31:09.378 ERROR [main] com.zaxxer.hikari.pool.HikariPool request-id: ; user-id:  - jdbc:mysql:aurora://db-cluster-endpoint.us-west-2.rds.amazonaws.com:3306/test_service - Exception during pool initialization. 
java.sql.SQLNonTransientConnectionException: Communications link failure with primary. No active connection found for master. 
    at org.mariadb.jdbc.internal.failover.AbstractMastersListener.throwFailoverMessage(AbstractMastersListener.java:559)
    at org.mariadb.jdbc.internal.failover.impl.MastersSlavesListener.checkInitialConnection(MastersSlavesListener.java:350)
    ...
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)

数据库集群配置:我禁用了自动暂停功能并配置了集群,以便 2 个实例始终处于运行状态。我可以在 RDS(AWS 控制台)中看到 CPU 利用率和容量单元 2。

Type: AWS::RDS::DBCluster
Properties:
  BackupRetentionPeriod: !Ref DbBackupRetentionPeriod
  DBClusterParameterGroupName: !Ref DbClusterParameterGroup
  DBSubnetGroupName: !Ref DbSubnetGroup
  Engine: aurora-mysql
  EngineMode: serverless
  ScalingConfiguration:
    AutoPause: false
    MinCapacity: 2
    MaxCapacity: 32

数据源配置:

<bean name="dataSource" class="com.zaxxer.hikari.HikariDataSource">
    <property name="jdbcUrl"
              value="#{'jdbc:mysql:aurora') + '//${database.host}:${database.port:3306}/${database.name}'}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>
    <property name="driverClassName" value="org.mariadb.jdbc.Driver"/>

已解决

问题在于客户端用来建立数据库连接的用户的访问限制。

4

0 回答 0