はじめに
RDSのオートスケーリングをEC2インスタンスのオートスケーリングと同様のものと考えていたが、認識が異なっていたため、RDSのオートスケーリングとは何か、AuroraやEC2の場合と比べて何が違うのかをまとめたいと思った。
RDSのオートスケーリングとは
まず、RDSインスタンスを作成する場合について考えてみる。
RDSインスタンスを作成する際には、DBの容量を指定する必要がある。
2019年6月19日以前までは、DBの容量が不足した際に、手動で容量を追加する必要があった。
しかし、2021年6月19日以降は、自動的に容量を追加すること(オートスケーリング)が可能となった。
https://aws.amazon.com/jp/about-aws/whats-new/2019/06/rds-storage-auto-scaling/
具体的には、以下の条件全てに合致する場合に自動的にDB容量が追加される。
- 使用可能な空き領域が、割り当てられたストレージの10%未満になった場合
- 低ストレージ状態が5分以上の場合
- 最後のストレージ変更から 6時間以上経過している場合
追加されるDBのサイズは、次のうちいずれか大きい方の増分となる。
- 5 GiB
- 現在割り当てられているストレージの10% ※60 GiB割り当てられているなら、6 GiB。
- 直近 1 時間の FreeStorageSpace(使用可能なストレージ領域の容量) メトリクスの変動に基づいて予測される 7 時間のストレージの増分。 ※RDS DB インスタンスのストレージサイズが 100 GiB で 10.1 GiB の空き容量があり、ストレージの消費量が通常 1 時間あたり 100 MB の場合、100 MB × 7 時間 = 700 MB
オートスケールの詳細については、公式ページに記載されている。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/monitoring-cloudwatch.html
AWS管理コンソール上からは以下の手順で操作することが出来る。
以下の設定は、Aurora以外のDBを選択した際の管理コンソール画面となる。
[補足] Auroraのオートスケーリングについて
Auroraの場合は、オートスケーリングで「Auroraレプリカ」を追加することが可能。
Auroraの構成として、SQL処理を行う「データベースインスタンス」とデータを格納する「クラスターボリューム」に分かれている。
「データベースインスタンス」は、さらに、「プライマリDBインスタンス」と「Auroraレプリカ」に分かれている。
SQL処理の中で、データの読み取り、更新を行うDBが「プライマリDBインスタンス」となり、データの読み取りのみを行うDBが「Auroraレプリカ」となる。
詳細については、公式ページに記載されている。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.html
AWS管理コンソール上からは以下の手順で操作することが出来る。
注意点
EC2のオートスケーリング、Auroraのオートスケーリングどちらもインスタンスそのものを自動的に増やしているが、RDSのオートスケーリングは、データを格納する容量を自動的に増やしている点に注意する。日常生活で例えると、家を掃除する際に、掃除する人を増やすという観点がEC2やAuroraのオートスケーリングに該当し、掃除する時の収納を増やすという観点がRDSのオートスケーリングに該当すると考える。
RDSのオートスケーリングは推奨されるのか
ちなみに、データロード(DBの読み取り)の増加が予想される場合は (RDS DB インスタンスの現在のストレージサイズの 20% を超えるロードなど)、データロードの前に RDS DB ストレージのサイズを手動で増加させることがベストプラクティスであると公式ページに記載されている。そのため、推奨設定ではないと考えている。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-autoscaling-low-free-storage/