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

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

Avatar for Hiroki Ohtake Hiroki Ohtake
July 28, 2025
82

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

Avatar for Hiroki Ohtake

Hiroki Ohtake

July 28, 2025
Tweet

Transcript

  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)