0
0

CDK For TerraformでAurora AutoScaleの導入

  • サンプルコード
    // Aurora Cluster Aurora AutoScaling
    const autoScaleEnabled = true;
    const autoScaleMinDbcount = 0; // 0にしても既存のReaderインスタンスは影響をうけない
    const autoScaleMaxDbcount = 5; // 最大は15台まで
    const autoScaleTargetValue = 70;
    if (autoScaleEnabled == true) {
      const appAutoScalingTarget = new aws.appautoscalingTarget.AppautoscalingTarget(this, 'replicas', {
        minCapacity: autoScaleMinDbcount,    // 最大台数 環境別に設定する
        maxCapacity: autoScaleMaxDbcount, // 最小台数 環境別に設定する
        resourceId: `cluster:sample-db-cluster`,
        scalableDimension: 'rds:cluster:ReadReplicaCount',
        serviceNamespace: 'rds',
      });

      new aws.appautoscalingPolicy.AppautoscalingPolicy(this, 'AuroraReadReplicaAutoScalingPolicy', {
        name: 'AuroraReadReplicaAutoScalingPolicy',
        policyType: 'TargetTrackingScaling',
        resourceId: appAutoScalingTarget.resourceId,
        scalableDimension: appAutoScalingTarget.scalableDimension,
        serviceNamespace: appAutoScalingTarget.serviceNamespace,
        targetTrackingScalingPolicyConfiguration: {
          predefinedMetricSpecification: {
            predefinedMetricType: 'RDSReaderAverageCPUUtilization',
          },
          disableScaleIn: false, // スケールインを無効にする
          targetValue: autoScaleTargetValue, // スケールする時のCPU利用栗
          scaleInCooldown: 600, // スケールインのクールダウン時間 600秒
          scaleOutCooldown: 300, // スケールアウトのクールダウン時間 300秒

        },
      });
    }

ややこしいのが disableScaleIn の値で
これをfalseにしておかないと(デフォルトはfalseですが)
オートスケールで作成されたインスタンスのスケールインが発生しなくなります。

あまりスケールインを無効にするケースが思いつかないですが、
基本はfalseでいいと考えています。

最小台数ですが、コメントの通り、
0にしても既存のReaderインスタンスには影響を与えません。

ただ既にReaderインスタンスが1台稼働している場合は
1にしても変化はありません。
Writerインスタンスが1 Readerインスタンスが1の状態で
Readerインスタンスを2台にする場合は 0 から2にしてあげる必要があります。

「じゃあ1にしておけばいいじゃん」となるのですが、
弊社都合でRDSの台数は別パラメータで管理しており、
明示的に変更するときに2箇所変更しないといけなくなるオーバーヘッドを
考慮して0で一旦固定としています。

尚、オートスケールは既存台数を認識してはいるものの、
明示的に作成したReaderインスタンスは勝手にスケールインしないようにしているようです。

注記にもあるのですが、どうゆうことか理解がおいついておらず、
実際に試してみて確認しました。

注記
最小容量と最大容量は、Aurora DB クラスターに対して設定されます。指定された値は、その Aurora DB クラスターに関連付けられたポリシーすべてに適用されます。

参考:https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.Integrating.AutoScaling.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0