Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Auroraリードレプリカが Auto Scalingしてくれなかった話

Hiroki Ohtake
July 28, 2025
180

Auroraリードレプリカが Auto Scalingしてくれなかった話

Hiroki Ohtake

July 28, 2025

Transcript

22 slides
  1. 大嵩 洋喜 2023年 4月 新卒入社 2023年 7月~ クラウドインテグレーション事業部配属 ~現在 多数の案件で、AWSインフラ構築&運用保守や監視構築を担当

    アイレット株式会社 お お た け ひ ろ き 経歴 クラウドインテグレーション事業部 インフラエンジニア Profile 2025 Japan All AWS Certifications Engineers 資格 音楽(メタル)、ドラム、ゲーム(FPS)、映画 趣味 @rockyx0609
  2. Aurora Auto Scaling の概要 6 接続およびワークロード要件を満たすために、Aurora Auto Scaling は、Aurora DB

    クラスター用にプロビジョニングされる Aurora レプリカ (リーダー DB インスタンス) の 数を動的に調整します。Aurora Auto Scaling は、Aurora MySQL と Aurora PostgreSQL の両方で使用できます。Aurora Auto Scaling により、お使いの Aurora DB クラ スターは急激な接続やワークロードの増加を処理できます。接続やワークロードが減ると、Aurora Auto Scaling は未使用のプロビジョニングされた DB インスタンスに対す る料金が発生しないように、不要な Aurora レプリカを削除します。 AWS Management Console を使用し、事前定義されたメトリクスに基づいてスケーリングポリシーを適用できます。代わりに、AWS CLI または Aurora Auto Scaling API を使用し、事前定義済みまたはカスタムのメトリクスに基づいたスケーリングポリシーを適用することも可能です。 Aurora レプリカでの Amazon Aurora Auto Scaling 単純に、水平オートスケールです。
  3. 前提 8 • Aurora Postgre SQL です • リードレプリカとライターが 1台ずつ

    • リードレプリカを Auto Scaling します ◦ CPU使用率を閾値とした既存のスケールポリシーがある ◦ 毎日23:30に、定時でスケールアウトをしたい
  4. 設定方法 9 定時のスケールは、 AWS CLIのみで設定可能です aws application-autoscaling register-scalable-target \ --service-namespace

    rds \ --resource-id cluster:Auroraクラスタ名 \ --scalable-dimension rds:cluster:ReadReplicaCount \ # ここでリードレプリカを指定 --min-capacity 1 \ --max-capacity 15 aws application-autoscaling put-scheduled-action \ --schedule "cron(30 23 * * ? *)" \ # ここでcronを指定 --timezone "Asia/Tokyo" \ --scalable-target-action MinCapacity=6 \ --scheduled-action-name rds-scaleout-daily-2330 \ --service-namespace rds \ --resource-id cluster:Auroraクラスタ名 \ --scalable-dimension rds:cluster:ReadReplicaCount
  5. 設定できたか確認してみる 11 ❯ aws application-autoscaling describe-scheduled-actions --resource-id cluster:クラスタ名 --service-namespace rds

    --scalable-dimension rds:cluster:ReadReplicaCount { ~割愛~ { "ScheduledActionName": "rds-scaleout-daily-2330", "ScheduledActionARN": "arn:aws:autoscaling:ap-northeast-1:XXXX:scheduledAction:XXXX:resource/rds/cluster: クラスタ名:scheduledActionName/rds-scaleout-daily-2330", "ServiceNamespace": "rds", "Schedule": "cron(30 23 * * ? *)", "Timezone": "Asia/Tokyo", "ResourceId": "cluster:クラスタ名", "ScalableDimension": "rds:cluster:ReadReplicaCount", "ScalableTargetAction": { "MinCapacity": 6 }, "CreationTime": "2025-04-11T17:53:06.353000+09:00" },
  6. 実際の対策 16 23:30にスケールアウトしたい場合、20~50分の間で繰り返す 猶予を持たせて 5分ずつ繰り返す cron(20-50/5 23 * * ?

    *) aws application-autoscaling put-scheduled-action \ --schedule "cron(20-50/5 23 * * ? *)" \ # ここでcronを指定 --timezone "Asia/Tokyo" \ --scalable-target-action MinCapacity=6 \ --scheduled-action-name rds-scaleout-daily-2330 \ --service-namespace rds \ --resource-id cluster:Auroraクラスタ名 \ --scalable-dimension rds:cluster:ReadReplicaCount
  7. 設定方法 19 日時指定もできます aws application-autoscaling put-scheduled-action \ --schedule "at(2025-07-28T23:30:00)" \

    # ここで日時を指定 --timezone "Asia/Tokyo" \ --scalable-target-action MinCapacity=6 \ --scheduled-action-name rds-scaleout-daily-2330 \ --service-namespace rds \ --resource-id cluster:Auroraクラスタ名 \ --scalable-dimension rds:cluster:ReadReplicaCount at(2025-07-28T23:30:00)

More Decks by Hiroki Ohtake