[アップデート] Redshift クラスターのリサイズをスケジュール設定できるようになりました

Redshiftクラスターのリサイズをスケジューリングすることが可能になりました!標準機能として提供されますので非常に簡単に実装できるようになっています!
2019.11.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本日のアップデートで Redshift クラスターのリサイズオペレーションをスケジュール設定できるようになりました!

何が嬉しいのか

例えば特定の時間のみリサイズしてノード数を増やし、負荷が落ち着いたであろう時間帯に再度リサイズしてノード数を減らす、といったスケジューリングを Redshift の標準機能として実装できるようになりました。

前提条件

  • Redshift リリースバージョン 1.0.11262以降でサポートされます
  • 対応リージョン
  • まだドキュメントが更新されていないため対応リージョンについては不明ですが、東京リージョンでは既に指定可能でした

注意点

最近、Redshift の管理コンソールが更新されているかと思います。本アップデートは、新コンソールでのみ利用可能なようです。

旧コンソールを見る限りは、スケジュール指定するようなメニューは見当たりませんでした。

やってみる

それでは新コンソールで試していきます。検証環境は下記のとおりです。

項目
リージョン 東京リージョン
クラスタータイプ マルチノード
ノードタイプ dc2.large
ノード数 2
クラスターバージョン 1.0.11420

クラスター管理画面から「アクション」-「サイズ変更」を開きます。リサイズタイプは「伸縮自在なサイズ変更(Elastic Resize)」を選択します。ちなみに、アップデートのタイトルから Elastic Resize のみサポートかと思っていましたが、「従来のサイズ変更(Classic Resize)」でもスケジュール指定ができました。「elastic resize でスケジューリングがサポートされた」のではなく、「柔軟な(elastic)リサイズスケジューリングがサポートされた」というタイトルのようですね。

次にスケジュールの選択を行いますが、選択肢は3つです。

  • Resize the cluster now(今すぐ)
  • Schedule resize at a later time(一度だけのスケジュール)
  • Schedule recurring resize events(繰り返しスケジュール)

今回は追加された後者2つのメニューを見ていきます。

スケジュールの指定(Schedule resize at a later time)

Schedule resize at a later time を選択した場合、以下のようなメニューになります。「新しいクラスター設定」では現状のノード数 2 → 4 となるように指定します。

次に「Schedule resize」でスケジュール名と、日時を指定します。時刻指定は UTC になるのでご注意ください。(以下、2019年11月27日 15:40(JST) の例)

なお、Resize time でカレンダー指定の場合、当日(2019/11/27)が指定できなかったのですが、直接入力すると設定することができました。

さいごに Redshift Scheduler が使用する IAM ロールを指定します。今回は、AmazonRedshiftFullAccess ポリシーをアタッチしたロールを作成し、信頼ポリシーは以下のように設定しています。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "scheduler.redshift.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

登録が完了すると、「Schedule」タブから確認することができます。(すでに実行されたあとにキャプチャしたので、先程登録したものは Completed になっています)

スケジュールの指定(Schedule recurring resize events)

Schedule recurring resize events を選択した場合、以下のようなメニューになります。

次に「Schedule resize」でスケジュール名を指定し、Starts onEnds on で繰り返し期間を指定します。

次に拡張および縮小時のノード数とスケジュールを指定します。Increase size every では「日次」「週次」「月次」の指定が可能となっています。日次の場合は以下のようなメニューです。

週次の場合は以下のようなメニューになります。週のなかで、どの曜日で実行するかを指定することも可能です。

月次の場合は以下のようなメニューになります。日付指定や、第何週の何曜日や、最終週の何曜日といった柔軟な指定も可能です。

Redshift Scheduler 用の IAM ロールを指定して、登録します。以下は日次で指定を行った場合に登録されたスケジュールの例です。繰り返しスケジュールの場合、Schedule type が Recurring になっていることがわかります。また、拡張用のスケジュールは スケジュール名+up、縮小用は スケジュール名+down というスケジュール名で登録されていました。

動作確認

今回は Schedule resize at a later time で指定した場合の動作を確認しました。2019/11/27 15;40(JST) にノード数 2 → 4 への Elastic Resize をスケジュール実行した際のイベントログが以下になります。

設定されたスケジュールでイベントが発生し、最終的に completed で完了していますね。

ノード数が 4 に拡張されていることもコンソールから確認できましたね!

Classic Resize でも動きました

タイトルが紛らわしかったので念の為、Classsic Resize で 2 → 3 ノードへのリサイズを試してみましたが、問題なく動きました。

さいごに

予測可能なワークロードに対するリサイズ計画を非常に簡単に実装できるようになりました!負荷が落ち着くであろう時間帯に縮小リサイズすることで無駄なコストの発生も押さえることができますのでオススメの機能アップデートですね!

執筆時点においては、ドキュメントがまだ更新されていないようですので、細かい制限など押さえきれてない部分もあるかと思いますが、ひとまず簡単な動作検証としてご紹介いたしました。

以上!大阪オフィスの丸毛(@marumo1981)でした!