Aurora Serverless を使用する機会がありましたので、調べたことをまとめてみました。
1. 自動スケーリングのしきい値
設定に応じて、Aurora Serverless は、CPU 使用率、接続、および使用可能メモリの各しきい値に関するスケーリングルールを自動的に作成します。
スケールアップ&ダウンの条件はCPU、メモリ、同時接続数のAWS側の閾値をもとにスケールアップ&ダウンされる。 現時点はこちらで閾値を設定することはできなそうでした。
2. 自動スケーリングアップ
スケーリングポイントは、データベースが安全にスケーリングオペレーションを開始できる時点です。以下の条件では Aurora Serverless がスケーリングポイントを見つけられない場合があります。
長期実行クエリまたはトランザクションが進行中である
一時テーブルまたはテーブルロックが使用中である
スロークエリが発生している場合などはスケールアップできいないので注意が必要です。
(クエリを強制終了してスケールアップするオプションもあります。)
■自動スケーリングダウン
スケールアップ後のスケールダウンのクールダウン期間は 15 分です。スケールダウン後の再スケールダウンのクールダウン期間は 310 秒です。
■注意点
- 1つのクエリに時間がかかっている場合スケールアップの条件を満たしていたも自動でスケールアップされない
- テーブルロックがかかっている場合も同様にスケールアップされない。
(クライアントとの接続を切って、強制的にスケールアップさせる設定を入れることも可能です。)
手動でスケールアップすることも可能です。
手動の際も、クライアントの接続を強制的に切って変更することも可能
3. ACUあたりの同時接続数 (検証済み)
1ACU: 90
2ACU: 180
4ACU: 270
8ACU: 1000
■1ACU(2GB)の場合
mysql> select @@max_connections;
+-------------------+
| @@max_connections |
+-------------------+
| 90 |
+-------------------+
1 row in set (0.00 sec)
■2ACU(4GB)の場合
mysql> select @@max_connections;
+-------------------+
| @@max_connections |
+-------------------+
| 180 |
+-------------------+
1 row in set (0.00 sec)
■4ACU(8GB)の場合の
mysql> select @@max_connections;
+-------------------+
| @@max_connections |
+-------------------+
| 270 |
+-------------------+
1 row in set (0.00 sec)
■8ACU(16GB)の場合
mysql> select @@max_connections;
+-------------------+
| @@max_connections |
+-------------------+
| 1000 |
+-------------------+
1 row in set (0.00 sec)
4. AZ障害
Aurora Serverless とフェイルオーバー
Aurora Serverless DB クラスターの DB インスタンスが使用不能になるか DB クラスターがあるアベイラビリティーゾーン (AZ) に障害が発生した場合、Aurora は別の AZ に DB インスタンスを再作成します。この機能は、自動マルチ AZ フェイルオーバーとも呼ばれます。
このフェイルオーバーメカニズムは、Aurora プロビジョンドクラスターのフェイルオーバーよりも時間がかかります。Aurora Serverless のフェイルオーバー時間は、AWS リージョン内の他の AZ の需要やキャパシティーの可用性によって異なるため、現在定義されていません。
Aurora では、コンピューティングキャパシティーとストレージは分離されるため、クラスターのストレージボリュームは複数の AZ に分散されます。停止が DB インスタンスまたは関連する AZ に影響する場合でも、データは引き続き利用することができます。
フェールオーバーの時間は未定義ですが、AZ障害時は自動でAZ変更してくれるので良いですね。
■参考資料
仕組み
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html
同時接続数について
https://dev.classmethod.jp/articles/aurora-serverless-maxconnection/
料金
https://aws.amazon.com/jp/rds/aurora/pricing/
https://dev.classmethod.jp/articles/calculate-amazon-aurora-serverless-costs/
注意点
https://dev.classmethod.jp/articles/lessons-learned-from-up-and-running-aurora-serverless/