(Fargate を使用して) Amazon ECS にデプロイされたアプリケーションは、サーバーレス Aurora DB との接続の問題に直面しています。踏み台ホスト、パブリック IP および SSH トンネルを備えた同じ VPC 内の EC2 インスタンスを使用して、このサーバーレス DB に正常に接続できます。DB 接続は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)
DB クラスター構成: 自動一時停止機能を無効にし、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"/>
解決済み:
問題は、クライアントが DB 接続を確立するために使用していたユーザーのアクセス制限にありました。