ドキュメントは以下です。
実際の挙動がどうなるのかを確認しました。
最小容量と最大容量
アプリケーションの Auto Scaling が管理する Aurora レプリカの最大数を指定できます。この値は 0–15 に設定される必要があります。
アプリケーションの Auto Scaling が管理する
ということなので、
既設のDBインスタンスの台数には影響しません。
例
DBインスタンスを3台保有するDBクラスタが存在し、 そのDBクラスタにAuto scaling policy を設定する場合
DB Cluster: db-cluster-01 DB Instance: db-instance-01 (Writer) db-instance-02 (Reader) db-instance-03 (Reader) Auto scaling policy: Minimum capacity: 0 Maximum capacity: 15
Auto scaling によるスケールアウトが発生し、 n台追加された場合、既存の db-instance-01〜03 + n台 となります。
追加されるDBインスタンスは prefix application-autoscaling-
で作成されます。
application-autoscaling なのですが、 マネジメントコンソールの AWS Auto Scaling には表示されません。
RDS の DB Cluster Logs & events
タブで確認可能です。
CLI では application-autoscaling では出力されます。
aws application-autoscaling describe-scaling-policies --service-namespace rds
トリガー
DB Cluster へ Auto scaling policy を追加すると、
CloudWatch Alarm に prefix TargetTracking-cluster:〜
の2つが追加されます。
- TargetTracking-cluster:{DBClusterIdentifier}-AlarmHigh-〜
- {TargetValue} for 3 datapoints within 3 minutes
- TargetTracking-cluster:{DBClusterIdentifier}-AlarmLow-〜
- ({TargetValue} x 90%?) for 15 datapoints within 15 minutes
このAlarmの Description には DO NOT EDIT OR DELETE.
との記載があります。
文字通り変更削除は非推奨なのでしょうが、Alarm を直接変更する事は自体はできます。
注意点として、 RDS 側の設定で Auto scaling policy を変更した場合、Alarm は更新されるのではなく、新規作成(旧Alarmは削除)されます。
メトリクスは対象のDBClusterの Role: READER
、Average です。
"metrics": [ [ "AWS/RDS", "CPUUtilization", "Role", "READER", "DBClusterIdentifier", "db-cluster-01" ] ],
スケールアウトアクティビティ
新しい Aurora レプリカの昇格階層は、最も低い優先順位 (デフォルトでは 15) に設定されています。
TargetTracking-〜-AlarmHigh-〜
の State が In alarm
である場合に、Aurora レプリカ(Reader)数を増やします。
(※ State が In alarm
の状態が継続していると、クールダウン期間後に再発動します)
メトリクス状態により複数台同時に起動する事があります。
db-instance-01〜03 + n台 の設定が15を超過している場合でも、起動できるのは最大で15台までです。特にWarning、Error出力はありませんでした。
スケールインアクティビティ
Aurora Auto Scaling では、自身が作成した Aurora レプリカのみ削除されます。
TargetTracking-〜-AlarmLow-〜
の State が In alarm
である場合に、Aurora レプリカ(Reader)数を減らします。
(※ State が In alarm
の状態が継続していると、クールダウン期間後に再発動します)
複数台同時の削除は行われず、1台ずつ削除されます。
また、あまり実施しないとは思いますが、手動で application-autoscaling-
のDBインスタンスを削除しても特にエラーなどは発生しませんでした。