RDS / ElastiCache のメンテナンスウィンドウを 1 週間を超えて延期したいときの対処方法

2021.06.26

困っていた内容

RDS で予定されたメンテナンスイベントを先延ばしにしたいです。

現在は 2021-06-26(土)で、メンテナンスの期限は 2021-07-26(月)09:00 JST です。

RDS のコンソール、AWS CLI などで確認したところ保留中のメンテナンスがあります。

メンテナンスウィンドウは水曜日の 03:00 - 03:30(JST)に設定されています。

これを 2021-07-05(月)の週に実施したい場合、どのように対応すればいいでしょうか?

どう対応すればいいの?

以下の順番にメンテナンスウィンドウを変更してください。

  1. 2021-06-28 月曜日 にメンテナンスウィンドウを 日曜日 03:00 - 03:30 へ変更
  2. 2021-07-02 金曜日 にメンテナンスウィンドウを 木曜日 03:00 - 03:30 へ変更
    2021-07-05 の週で月・火・水曜日希望の場合は、このタイミングで希望の曜日を指定し、3. の実施は不要
  3. 2021-07-06 火曜日 にメンテナンスウィンドウを希望の曜日・時間帯へ変更
  4. 「2.」「3.」で指定したメンテナンスウィンドウ期間が過ぎても保留中のメンテナンスがある場合のみ、サービス影響の少ない時間帯に手動でメンテナンスを適用

必ずしもメンテナンスウィンドウ内でメンテナンスが実施される保証はありませんので、4. を実施する可能性も考慮してください。

RDS / ElastiCache のメンテナンスについて知ろう

RDS / ElastiCache のメンテナンスは先延ばしにできるもの・できないものの 2 種類があります。

どちらのパターンでも、必ずメンテナンスウィンドウで指定した曜日・時間帯にメンテナンスが実施されるわけではありません。

メンテナンスウィンドウは基本的にベストエフォートで実施されます。

メンテナンスが先延ばしにできるかどうかの判断は、AWS からお知らせされたメール(件名: A new Amazon ElastiCache service update is available [AWS Account: 123456789012] など)に記載された期限をよく確認してください。

期限が確認できたら、以下のシナリオを参考に対応してください。

メンテナンスの期限に余裕がなく、先延ばしできない場合

想定シナリオ

名前 時間
現在 2021-06-26(土)
メンテナンスウィンドウ 水曜日 03:00 - 03:30(JST)
期限 2021-07-03(土)09:00(JST)

このシナリオでは、2021-07-03(土)09:00(JST)を迎えた後に AWS サービスによって順次強制的にメンテナンスが行われます。

強制的なメンテナンス(突然の一時的なサービス停止の可能性)を避けたければ、以下いずれかの対応を行ってください。

パターン 1

  • 次のメンテナンスウィンドウ(2021-06-30 水曜日 03:00 - 03:30 JST)までに手動でメンテナンスを実施する
    • アクセスの少ない時間帯など、サービス影響を最小限に抑えながらメンテナンスを適用する

パターン 2

  • メンテナンスウィンドウの曜日・時間帯を変更する
    • 現在から土曜日の 09:00(JST)までの好きな曜日・時間帯を指定する(メンテナンスウィンドウは変更が反映されるまで 24 時間ほどかかるケースがあるので、余裕を持って行う
    • 現在メンテナンスウィンドウを変更するなら、水曜日より前に指定すること(月・火曜日)、後に指定すること(木・金・現在より前の時間帯の土曜日)いずれも可能
    • メンテナンスウィンドウの曜日を日曜日に指定するとメンテナンスウィンドウの変更反映が間に合わず、再来週の日曜日の予定となる可能性あり(つまり、期限を迎えて強制的にメンテナンスされる可能性あり)
  • 指定したメンテナンスウィンドウの経過後にメンテナンスの保留状態がなくなったこと確認する
    • 保留状態のままなら(メンテナンスウィンドウでメンテナンスが適用されていなければ)、パターン 1 に沿って手動で実施するのが望ましい

パターン 3

  • メンテナンスウィンドウを変更せずに、水曜日 03:00 - 03:30 のメンテナンスウィンドウを待つ
  • 2021-07-01 木曜日にメンテナンスの保留状態がなくなったこと確認する
    • 保留状態のままなら(メンテナンスウィンドウでメンテナンスが適用されていなければ)、パターン 1 に沿って手動で実施するのが望ましい

メンテナンスの期限に余裕があり、先延ばしできる場合

想定シナリオ

名前 時間
現在 2021-06-26(土)
メンテナンスウィンドウ 水曜日 03:00 - 03:30(JST)
期限 2021-07-26(月)09:00(JST)

このシナリオでは、2021-07-26(月)09:00(JST)までメンテナンスを延長できる可能性があります。

繰り返しますが、延長できる可能性なので、「絶対予定通りメンテナンスされるだろう」という過度な期待は禁物です。予定通りやりたければ、マネージドサービスへ任せずに下記のパターン 2(手動)でやりましょう。

パターン 1

  • 次のメンテナンスウィンドウの 24 時間より前(2021-06-29 火曜日)までに、その時点より前のメンテナンスウィンドウ曜日・時間帯(今が土曜日 18:00 なら土曜日の17:00 - 17:30 が最長)を指定し、期限前まで繰り返す

余裕を持ったスケジュールの立て方(もっとも延長するパターン)

  1. 2021-06-28 月曜日 にメンテナンスウィンドウを 日曜日 03:00 - 03:30 へ変更
  2. 2021-07-02 金曜日 にメンテナンスウィンドウを 木曜日 03:00 - 03:30 へ変更
  3. 2021-07-06 火曜日 にメンテナンスウィンドウを 月曜日 03:00 - 03:30 へ変更
  4. 2021-07-10 土曜日 にメンテナンスウィンドウを 金曜日 03:00 - 03:30 へ変更
  5. 2021-07-14 水曜日 にメンテナンスウィンドウを 火曜日 03:00 - 03:30 へ変更
  6. 2021-07-18 日曜日 にメンテナンスウィンドウを 土曜日 03:00 - 03:30 へ変更
  7. 2021-07-22 木曜日 にメンテナンスウィンドウを 月曜日 09:00 までの任意の時間帯へ変更
    2021-07-22 は祝日のため、健全な運用のためには 2021-07-21 に対応した方が平和かも

パターン 2

  • パターン 1 でこれ以上延長する必要がないと判断できたタイミング、もしくは 2021-06-30 水曜日 03:00 - 03:30(JST)より前に手動でメンテナンスを実施する
    • アクセスの少ない時間帯など、サービス影響を最小限に抑えながらメンテナンスを適用する

パターン 3

  • パターン 1 でこれ以上延長する必要がないと判断できたタイミング、もしくは 2021-06-30 水曜日 03:00 - 03:30(JST)のメンテナンスウィンドウを待つ
    • 2021-07-01 木曜日にメンテナンスの保留状態がなくなったことを確認する
    • 保留状態のままなら(メンテナンスウィンドウでメンテナンスが適用されていなければ)、パターン 2 に沿って手動で実施するのが望ましい

まとめ

AWS サービスのメンテナンスは必ずしも期待した通りに動くとは限りません。

たとえば、メンテナンスの計画を立てている最中に、基盤側の障害の影響でメンテナンスが完了することもあります。

また、メンテナンスウィンドウ中にリソースの負荷が高いとそもそもメンテナンスは実施されません。

何もなくても、保留中のメンテナンスがメンテナンスウィンドウ内で実施されないケースもあります。

これらのことを念頭に置いて、A プランだけではなく B プランもしっかりと考えると、安心・安全に運用ができると考えています。

過去に何度も説明した経験がありますが、私自身もメンテナンスは不確定要素があり難しいと思っています。

毎回ドキュメントや AWS サポートに頼りっぱなしなので、この機会に少しでも問題解決になるヒントを公開できればと思いブログ化しました。

参考資料