はじめに
FargateにRDS Proxyを使用する機会があったため、手順をまとめます。
RDS Proxyについてはこちら↓
Amazon RDS Proxy を使用すると、アプリケーションでデータベース接続をプールおよび共有して、アプリケーションのスケーリング能力を向上させることができます。RDS Proxy は、アプリケーション接続を維持しながらスタンバイ DB インスタンスに自動的に接続することで、データベースの障害に対するアプリケーションの耐障害性を高めます。RDS プロキシを使用すると、データベースにAWS Identity and Access Management(IAM)認証を適用し、クレデンシャルをAWS Secrets Managerに安全に保存することもできます。
コネクションプーリングはこちらがわかりやすいです↓
ちなみに、VPCEndpointは、RDSProxy作成時、自動で作成されます。
現在のProxy対象のDB
- RDS for MySQL- MySQL 5.6、5.7 および 8.0
- RDS for PostgreSQL –バージョン 10.10 以降のマイナーバージョン、バージョン 11.5 以降のマイナーバージョン、およびバージョン 12.5 以降のマイナーバージョン
- 上記のAuroraも対象です。
事前構築
- Aurora MySQL 5.6
- fargate
構築は、ALB→fargate→Aurora
という流れになります。
Proxyを導入すると、ALB→fargate→Proxy→Auroa
という構築になります。
下記記事を参考にしました。
Secrets Managerを作成
RDSのデータベース認証情報のSecretsを作成します。
Auroraのマスターユーザー
とマスターパスワード
を入力します。
暗号キーは、デフォルトのDefaultEncryptionKey or aws/secretsmanagager
でよいです。
Proxyのセキュリティーグループを作成
ProxyとAuroraのSGのを設定します。
基本的に、ALB→fargate→Proxy→Auroa
という流れですので、ProxyとAuroraのインバウンド設定が必要です。
fargate(サーバー)のSGは、ELBのみ許可しています。
設定 | タイプ | ポート | ソース |
---|---|---|---|
fargate | カスタムTCP | 80 | ALBのSG |
Proxy | MySQL/Aurora | 3306 | fargateのSG |
Aurora | MySQL/Aurora | 3306 | ProxyのSG |
Proxyを作成
- データベース
:作成済みのAurora
- リーダーエンドポイント
:含める
-
Secrets Manager シークレット
:先程作成したSecrets
-
IAM ロール
:IAM ロールを作成
(Secretsが使えるように、Proxy用のIAMロールを作成してくれる) -
IAM 認証
:無効
(IAMロールのみの認証になる) -
サブネット
:RDSに割り当てたサブネットグループと同じ物を選択します
-
VPC セキュリティグループ
:先程作成したSG
サブネットは、auroraと同じprivate subnetを選択してください
ライターとリーダーエンドポイントが作成されるため、fargateの接続先エンドポイントを修正し、デプロイすると、Proxyに接続できます!
ライターとリーダーエンドポイント作成時、VPCEndpoint2つ自動で作成されます。
料金
Auroraのうち、2vCPU以下の低スペックの場合、RDSProxy自体は、
0.018USD * 2 * 24 * 31 = 26.7$
月にかかります。
ただし、VPUEndPointsも自動で作成されるため、 0.014USD * 24 * 31 = 10.4$
月にかかります。
(リーダーエンドポイントも作成すると、2倍の 20.8$
月にかかります。)
なかなかのコストがかかりますね。
CloudWatchメトリクス
Proxyのメトリクス一覧はこちら↓
参考