質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

210閲覧

Aws RDS Auroraにて、オートスケールしたレプリカが自動で削除されるようにしたい。

ZaPro

総合スコア0

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2023/10/12 05:15

編集2023/10/12 07:12

実現したいこと

  • 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" } ] },

抽象的な質問で恐れ入りますが、どなたかご教示いただけますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2023/10/12 06:27

スケールインポリシーの設定はしましたか? スケーリングの設定をどこでどうやったのか、できればスクリーンショットなどで貼ってください
ZaPro

2023/10/12 07:09

ご確認いただきありがとうございます。 こちら追記をさせていただきました。 また、オートスケールのログを確認したところ、「AutoScalingAnticipatedFlapping」とのエラーが発生しており、これが原因のようなのですが、理由が分からずにいます。 よろしくお願いします。
yu_1985

2023/10/12 07:35

AutoScalingAnticipatedFlappingについては調べてみましたか?
ZaPro

2023/10/12 07:40

はい、検索をしてみましたが、あまりにも情報がなく、AWSの公式のドキュメントの以下の文章しか見つけることが出来ませんでした。 ``` オートスケーリングアルゴリズムは、フラッピングの原因となるため、スケーリングアクションを実行しないことを決定しました。フラッピングは、スケールインとスケールアウトの無限ループです。つまり、スケーリングアクションが実行されると、メトリクス値が変化して、逆方向に別のスケーリングアクションが開始されます。 ``` おそらくスケールアウトのしきい値が、低すぎるとスケールイン、スケールアウトを繰り返してしまうため、それを防ぐためにエラーとしているのかと思うのですが、適切なしきい値は何なのかが分からずにおります。。
ZaPro

2023/10/12 07:53

失礼しました。ルールを把握しておりませんでした。 該当記事は削除いたしました。
yu_1985

2023/10/12 08:02

実際のメトリクス値を確認してみてはどうでしょうか
guest

回答1

0

スケールイン自体は可能です。

ご提示の状況においては、AutoScalingAnticipatedFlappingとあるように、この状態でスケールインを起こすとクラスタのCPU使用率がターゲット値の60%を超えてしまい、再度スケールアウトを起こすため、AutoScalingしないことを決定した、というものです。

例えば、
Writer : 80% / Reader: 80%でスケールアウトし、Selectが分散され、
Writer : 80% / Reader: 40% / Reader : 40%

となったと仮定した場合、平均値としては160% ÷ 3=53%程度になりターゲットを下回りますが、だからと言ってReaderをスケールインしたら再び80%/80%の状態に戻ってしまい、スケールアウトが必要になり、スケーリングがループしてしまう、という状況です。

スケールインしてレプリカとWriterの台数が減った場合のメトリクスの平均がターゲットを下回る必要があるかと思いますので、接続してきているクライアントからのトランザクションがもっと落ち着く必要があるかと思います。
現在の状態が落ち着いた状態、ということならばターゲット値の調整が必要です。

例えばターゲット値が90%ならば、Writer+Reader x 2の状態で 60% 平均になってくればスケールインします。
現在はターゲット値が60%ですので、Writer+Reader x 2の平均が 40% あたりまで下がらないとスケールインできません(フラッピングと判断されてしまう)。

投稿2023/10/24 10:03

KeisukeKoga

総合スコア125

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問