みなさん、こんにちは。サニービュー事業部の小寺です。

RDSを使われている方も多いのではないでしょうか。今日はRDS Proxyについて、お届けします。サービスの概要や活用シーンなど理解が深まれば幸いです。

■RDS Proxyとは

RDS Proxyとは、Amazon RDS 向けの高可用性フルマネージド型データベースプロキシです。 アプリケーションのスケーラビリティやデータベース障害に対するリカバリー、安全性の向上を実現します。

https://pages.awscloud.com/rs/112-TZM-766/images/EV_amazon-rds-aws-lambda-update_Jul28-2020_RDS_Proxy.pdfより引用

以下の4つの特徴があります。

(1)接続プーリングができる

接続プーリングは、接続したり、接続を切ったり、多数の同時接続をしていることに伴うオーバーヘッドを削減するための方法です。接続の開閉によるTLS/SSL のハンドシェイク、認証、ネゴシエーション機能などのCPU負荷を削減することができます。

(2)RDS Proxy の認証

データベースサーバーがネイティブのユーザー名 / パスワード認証しか対応
していない場合でも、RDS Proxy への接続はIAM認証を利用することができます。
アプリケーションコードに認証情報をハードコーティングしないことによるセキュリティレベルを向上させることができます。AWS Secrets Manager によるデータベース認証情報の⼀元管理も行うことができます。

(3) TLS/SSL が使える

データベースサーバーが TLS1.0 / 1.1 しか対応していない場合でも、RDS Proxyとアプリケーション間の接続は TLS1.2 を利用することができます。
※RDS Proxy は AWS Certificate Manager (ACM) の証明書を使用します。

プロキシとデータベース間のすべての接続に TLS を適用するには、プロキシを作成または変更するときに [Transport Layer Security が必要] 設定を有効にすればOKです。

(4)フェイルオーバーによる高可用性

フェイルオーバーは、元のデータベースインスタンスが使用できなくなったときに、別のインスタンスに置き換える高可用性の機能です。フェイルオーバーは、マルチ AZ 設定の RDS DB インスタンスに適用されます。また、ライターインスタンスに加えて 1 つ以上のリーダーインスタンスが含まれている Aurora DB クラスターにも適用されます。

元の DB インスタンスが使用できなくなると、RDS Proxy はアイドル状態のアプリケーション接続を切断せずにスタンバイデータベースに接続します。アプリケーションからの再接続は不要になります。

このフェイルオーバーの高速化により、通常の再起動やデータベース問題に伴う停止よりも、アプリケーションの停止が短くなるメリットがあります。Aurora および RDS データベースのフェールオーバー時間が、最大で66% 短縮されます。

■どんなときに便利?

とても便利なRDS Proxyの活用シーンについてです。

・「接続が多すぎます」エラーが頻繁に発生する DB インスタンスやクラスターは、プロキシ経由の接続がおすすめです。プロキシを使用すると、アプリケーションは多数のクライアント接続を受け入れることができます。
・小さめのAWS インスタンスクラス (T2 や T3 など) を使用する DB インスタンスやクラスターの場合、プロキシを使用すると、メモリ不足状態を回避できます。
・AWS Lambda 関数も、プロキシの使用に適しています。Lambda関数で行うデータベース接続は、RDS Proxy の接続プールを使用することでメリットがあります。Lambda アプリケーションコードでデータベース認証情報を管理する代わりに、Lambda 機能に設定済みの IAM 認証を使うことができます。
・PHP や Ruby on Rails などの言語やフレームワークを使用するアプリケーションにもおすすめです。
通常、多数のデータベース接続を開いたり閉じたりします。また、接続プーリングが組み込まれていないからです。
・長期にわたって多数の接続を開いたままにするアプリケーションにもおすすめです。
RDS Proxy を使用すると、アプリケーションは、DB インスタンスまたはクラスターに直接接続する場合よりも多くの接続を開いたままにできます。
・IAM 認証や Secrets Manager は設定が複雑であるという理由で、すべての DB インスタンスやクラスターにはり用されていない場合があります。その場合は、既存の認証方法をそのまま使ったうえで、認証をプロキシに委任することができます。

■RDS ProxyがサポートするDBエンジン

RDS Proxyでは以下のDBエンジンをサポートしています。

〇MySQL
RDS for MySQL 5.6 / 5.7
Aurora MySQL バージョン1.x / 2.x
〇PostgreSQL
RDS for PostgreSQL
Aurora PostgreSQL 10.11以降 、11.5 以降

※Amazon RDS for MySQL 5.6 は、2021年8月3日 00:00:01 (JST 日本標準時間の2021年8月3日 09:00:01)にサポート対象外として利用ができなくなることが確定しているので、ご注意ください。

■利用するときの注意事項

  • Aurora クラスターにおいて、RDS Proxy が対応しているのはWriter インスタンスのみです。
  • 読み取りのワークロードの負荷分散には従来のReaderエンドポイントを利用してください。
  • Aurora サーバーレスクラスター、マルチマスタークラスターにおいては RDS Proxy は使えません。
  • RDS Proxy はデータベースと同じVPCに存在する必要があり、パブリックアクセス不可 ( データベースのパブリックアクセスは可)です。

■まとめ

いかがでしたでしょうか。
RDS Proxyの特徴です。
• 接続プーリングにより、大量の接続要求によるデータベースの負荷を削減
• 高速フェイルオーバーによる可用性の向上
• アプリケーションのセキュリティ向上

とても便利な機能がいっぱいですね。対応しているDBエンジンが限られてしまいますが、活用していきたいと思います。

AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!