vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

AWS RDS Auto Scaling の Capacity 制御

ドキュメントは以下です。

実際の挙動がどうなるのかを確認しました。

最小容量と最大容量

アプリケーションの 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 には表示されません。

f:id:htnosm:20211210090954p:plain

RDS の DB Cluster Logs & events タブで確認可能です。

f:id:htnosm:20211210090958p:plain

CLI では application-autoscaling では出力されます。

aws application-autoscaling describe-scaling-policies --service-namespace rds

トリガー

DB Cluster へ Auto scaling policy を追加すると、 CloudWatch Alarm に prefix TargetTracking-cluster:〜 の2つが追加されます。

f:id:htnosm:20211210091002p:plain

  • 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台ずつ削除されます。

f:id:htnosm:20211210091006p:plain

また、あまり実施しないとは思いますが、手動で application-autoscaling- のDBインスタンスを削除しても特にエラーなどは発生しませんでした。