実現したいこと
- Aws RDS Auroraでプライマリ1台とリードレプリカ1台+オートスケールで増減するリードレプリカn台の構成とし、負荷のかかっていない通常の状態では、プライマリ1台とリードレプリカ1台の2台構成としたい
前提
負荷を掛け、スケールアウトし、リードレプリカが追加されることまでは確認ができているのですが、
追加されたレプリカがスケールインせずいます。
最低限のコストとするためにも、オートスケールでスケールアウトしたレプリカは負荷がかかっていない状態では削除されていてほしいのですが、これは実現可能な構成なのでしょうか?
試したこと
オートスケールの設定(「Aurora レプリカの平均 CPU 使用率」で設定)をし、レプリカの最小容量を1に、負荷を掛け、スケールアウトし、リードレプリカが追加されることまでは確認ができているのですが、追加されたレプリカがスケールインせずいます。
【追記①】
スケーリングポリシーはAWSのコンソール上から登録を行っています。
自分の認識が誤っていたようで、最小容量は手動で作成したリードレプリカの台数を含めた台数とのことでしたので、「1」としています。

【追記②】
aws application-autoscaling describe-scaling-activitiesにて、オートスケールの履歴を確認したところ、
「AutoScalingAnticipatedFlapping」とのエラーが発生していました。
{ "ActivityId": "******", "ServiceNamespace": "rds", "ResourceId": "cluster:******", "ScalableDimension": "rds:cluster:ReadReplicaCount", "Description": "Attempting to scale due to alarm triggered", "Cause": "monitor alarm TargetTracking-******-AlarmLow-****** in state ALARM triggered policy ****", "StartTime": "2023-10-12T15:50:51.781000+09:00", "StatusCode": "Failed", "NotScaledReasons": [ { "Code": "AutoScalingAnticipatedFlapping" } ] },
抽象的な質問で恐れ入りますが、どなたかご教示いただけますと幸いです。
よろしくお願いいたします。
スケールインポリシーの設定はしましたか?
スケーリングの設定をどこでどうやったのか、できればスクリーンショットなどで貼ってください
ご確認いただきありがとうございます。
こちら追記をさせていただきました。
また、オートスケールのログを確認したところ、「AutoScalingAnticipatedFlapping」とのエラーが発生しており、これが原因のようなのですが、理由が分からずにいます。
よろしくお願いします。
AutoScalingAnticipatedFlappingについては調べてみましたか?
はい、検索をしてみましたが、あまりにも情報がなく、AWSの公式のドキュメントの以下の文章しか見つけることが出来ませんでした。
```
オートスケーリングアルゴリズムは、フラッピングの原因となるため、スケーリングアクションを実行しないことを決定しました。フラッピングは、スケールインとスケールアウトの無限ループです。つまり、スケーリングアクションが実行されると、メトリクス値が変化して、逆方向に別のスケーリングアクションが開始されます。
```
おそらくスケールアウトのしきい値が、低すぎるとスケールイン、スケールアウトを繰り返してしまうため、それを防ぐためにエラーとしているのかと思うのですが、適切なしきい値は何なのかが分からずにおります。。
失礼しました。ルールを把握しておりませんでした。
該当記事は削除いたしました。
実際のメトリクス値を確認してみてはどうでしょうか