swastudy’s diary

AWSに関することは楽しみに書いてます。

RDS Proxy: サーバーレスアーキテクチャでの利用注意点 #connection #latency

RDS Proxyは、特にServerlessアーキテクチャのようなアーキテクチャで、ますます広く使用されるようになっています。 RDS Proxyを使用する際に注意するポイントを以下に示します。

アプリケーション側(Lambda、EC2など)

  • RDS Proxyは、アプリケーションとデータベース間の接続を調整します。接続には2つの部分があります:client connectionsはアプリケーションとプロキシの間の接続であり、database connectionsはプロキシとデータベースの間の接続です。 RDS Proxyはアプリケーション側の接続を開いたり閉じたりしません。アプリケーションがそれを行う必要があります。 LambdaでRDS Proxyを使用して接続を開いたり閉じたりする方法の例を参照できます。

  • RDS Proxyは、Multiplexingと呼ばれる技術を使用して、クライアント接続とデータベース接続を調整します。ただし、RDS Proxyが調整できない場合、pinningと呼ばれるエラーが発生します。ほとんどの問題はアプリケーション側から発生します。AWSのガイドに従ってpinningエラーを回避するのを参照できます。

RDS Proxyのモニタリング

  • RDS Proxyは自動的にライターインスタンスに接続するデフォルトエンドポイントを作成しますが、ユーザーはリーダーインスタンスに接続するためのリーダーエンドポイントを作成する必要があります。それぞれのエンドポイントには、Proxyのロググループ内の異なるロググループストリームがあります。 たとえば、pinningエラーの場合、"The client session was pinned to the database connection",というメッセージを持つロググループにアラームを設定するか、DatabaseConnectionsCurrentlySessionPinnedメトリックを表示できます。

  • RDS Proxyを監視するためのいくつかのメトリックは次のとおりです。

ClientConnectionsSetupFailedAuth:認証または TLS の設定ミスのために失敗したクライアントとプロキシの間の接続エラーを通知します。

DatabaseConnectionsSetupFailed:IAMポリシー、セキュリティグループの問題、またはその他の認証の困難さによって引き起こされる、プロProxyがデータベースに接続できないエラーを通知します。

AvailabilityPercentage:Proxyに関連付けられたターゲットグループがアプリケーションへの接続をルーティングするために利用可能な時間の割合を提供します。これは、Proxyに接続しているデータベースインスタンスクラスターのダウンタイムを特定するのに役立ちます。

DatabaseConnections <= MaxDatabaseConnectionsAllowed:データベース接続(DatabaseConnections)の数が頻繁に閾値(MaxDatabaseConnectionsAllowed)に達する場合、データベースインスタンスをスケーリングするか、RDS Proxyのmax_connectionsパラメータを増やす必要があります。

QueryDatabaseResponseLatency、QueryResponseLatency:アプリケーションとデータベース間の遅延の問題。

その他

アーキテクチャ的には、RDS ProxyはNLBを使用してインターネットまたは他のVPCからデータベースへの接続を許可するためにも使用されます。