部署在 Amazon ECS(使用 Fargate)上的应用程序在连接无服务器 Aurora DB 时遇到问题。我可以使用堡垒主机、具有公共 IP 和 SSH 隧道的同一 VPC 中的 EC2 实例成功连接到这个无服务器数据库。数据库连接对provisioned
EngineMode 成功,但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"/>
已解决:
问题在于客户端用来建立数据库连接的用户的访问限制。