【AWS】Auroraオートスケール:③Cron式スケジュール設定


はじめに

Auroraのオートスケールを記事にしたいと思います、長いのでシリーズ記事とします

  1. 【AWS】Auroraオートスケール:①オートスケール概要
  2. 【AWS】Auroraオートスケール:②オートスケール設定
  3. 【AWS】Auroraオートスケール:③Cron式スケジュール設定  ※現在の記事
  4. 【AWS】Auroraオートスケール:④Cron式スケジュール変更
  5. 【AWS】Auroraオートスケール:⑤カスタムメトリクスでリードレプリカ数経過観察
  6. 【AWS】Auroraオートスケール:⑥チューニング・ブラッシュアップ等

Aurora Auto ScalingのCron式スケジュール設定内容

Auroraの構築は済んでいて 下記図のような簡単な環境が出来ている前提で進めていきます。

今回はAWS CLIコマンドを使用して、Auroraオートスケール内に時間指定で最小キャパシティを増やす方法を行います。
※2020年12月時点ではAWSマネジメントコンソール画面で設定は出来ません。

対象のEC2サーバへログインし、Auroraへアクセスします

まずは状態確認を行います
下記のようにコマンドを実行し、スケジュールが何も設定されていないことを確認します

[root@xxxx-server ~]# aws --region ap-northeast-1 application-autoscaling describe-scheduled-actions \
> --service-namespace rds  \
> --resource-id cluster:test-aurora-cluster
{
    "ScheduledActions": []
}
[root@xxxx-server ~]#

下記のようなコマンドを実行します
内容:1時から最小キャパシティ3台、最大キャパシティ5台へ設定

aws --region ap-northeast-1 application-autoscaling put-scheduled-action \
--service-namespace rds \
--schedule "cron(0 8 * * ? *)" \
--scheduled-action-name 'test-aurora-cluster-schedule' \
--resource-id cluster:test-aurora-cluster \
--scalable-dimension rds:cluster:ReadReplicaCount \
--scalable-target-action 'MinCapacity=3,MaxCapacity=5'

[root@xxxx-server ~]# aws --region ap-northeast-1 application-autoscaling put-scheduled-action \
> --service-namespace rds \
> --schedule "cron(0 8 * * ? *)" \
> --scheduled-action-name 'test-aurora-cluster-schedule' \
> --resource-id cluster:test-aurora-cluster \
> --scalable-dimension rds:cluster:ReadReplicaCount \
> --scalable-target-action 'MinCapacity=3,MaxCapacity=5'
[root@xxxx-server ~]#
項目 設定値 説明
service-namespace rds サービスは「rds」を設定
schedule cron(0 8 * * ? *) Cron式スケジュールを設定 
※日本時間で17時
scheduled-action-name test-aurora-cluster-schedule 任意のCron式スケジュールの名前
resource-id cluster:test-aurora-cluster 対象Auroraクラスタ名
scalable-dimension rds:cluster:ReadReplicaCount この値は rds:cluster:ReadReplicaCount に設定
scalable-target-action MinCapacity=3,MaxCapacity=5 最小、最大キャパシティを設定

Cron式スケジュールについてはAWSユーザガイトをご確認ください
スケジュールに基づくスケーリングApplication Auto Scaling

再度、内容確認のコマンドを実行し、Cron式スケジュールが設定されていることを確認します

[root@xxxx-server ~]# aws --region ap-northeast-1 application-autoscaling describe-scheduled-actions \
> --service-namespace rds  \
> --resource-id cluster:test-aurora-cluster
{
    "ScheduledActions": [
        {
            "ScheduledActionName": "test-aurora-cluster-schedule",
            "ScheduledActionARN": "arn:aws:autoscaling:ap-northeast-1:xxxxxxxxxxxx:scheduledAction:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:resource/rds/cluster:test-aurora-cluster:scheduledActionName/test-aurora-cluster-schedule",
            "ServiceNamespace": "rds",
            "Schedule": "cron(0 8 * * ? *)",
            "ResourceId": "cluster:test-aurora-cluster",
            "ScalableDimension": "rds:cluster:ReadReplicaCount",
            "ScalableTargetAction": {
                "MinCapacity": 3,
                "MaxCapacity": 5
            },
            "CreationTime": "2020-11-xxTxx:xx:xx.840000+00:00"
        }
    ]
}
[root@xxxx-server ~]#

17時になり正常に3台目が作成されました

オートスケールのCron式スケジュールが正常に動作していると、下記のようなログが出力されます。

これでAuroraオートスケールにCron式スケジュールを組み込む対応が完了しました
負荷が高まる処理やイベント時には事前に台数を増やしておく事で安心を得る事が出来ます。

次回

4.【AWS】Auroraオートスケール:④Cron式スケジュール変更

参考

Aurora レプリカでの Amazon Aurora Auto Scaling の使用