[toc]
昨年にAWSで体験した、苦い思い出の一つに、Amazon RDSのメンテナンスによる意図しないアップグレードがありました。
EC2インスタンスのメンテナンス情報はメールで来ていたので、RDSなど他のプロダクトもメンテナンスがある場合はメールで通知されるものだと思っていました。しかし、実際はメール通知されることなく、(自分達にとっては)突然メンテナンスが実施されてしまったのです。メンテナンス中はRDSへの接続ができないのでその間はシステムがダウンすることになり、数分間でしたが、影響範囲はとても甚大でした。
Amazon Auroraに移行していたので、Auroraがそういう仕様なのかなと思い、サポートに問い合わせてみたところ、メール通知されるなくアップグレードのスケジュールが行われることがあるため、DescribePendingMaintenanceActions APIを使うことでメンテナンス情報を確認してほしいとのことでした。正直、EC2よりもRDSの方がクリティカルなプロダクトなので、それこそメール通知してほしいものですが、仕方ないので先ほどのAPIを使ってメンテナンス情報を取得するPythonスクリプトをLambdaで日次実行してSlackにポストするようにしました。
RDSのメンテナンスについてドキュメントを読んでいてもイマイチ理解できないことがあったので、サポートに問い合わせたり、調べたりして得たことを紹介します。ただし、まだ調査中でもあるので今後も更新したいと思います。
メンテナンスの種類
- Available(利用可能) と Required(必須) の2つがあります。
Required(必須)
所定の日時以降のメンテナンスウィンドウで、自動的にメンテナンスが実施されます。必ずしも次回のメンテナンスウィンドウ時にメンテナンスが実施されるわけではないみたいです。予定日時については後述します。
Available(利用可能)
特に操作をしなければ、次回以降のメンテナンスウィンドウではメンテナンスは実施されません。無期限に延期が可能です。
スケジュールの種類
Requiredの場合、メンテナンスのスケジュールが設定されており、DescribePendingMaintenanceActions APIから確認することができます。CLIの場合、次のようになります。
$ aws rds describe-pending-maintenance-actions
AutoAppliedAfterDate
次回のメンテナンスウインドウの日時。「次のメンテナンスウィンドウでアップグレード」が選択されたのと扱いになります。
ForcedApplyDate
メンテナンスウィンドウに関係なく強制的にアップグレードが自動で適用される日時
CurrentApplyDate
オプトイン(後述)後、保留中のアクションが実施される日時
なお、Availableの場合は、AutoAppliedAfterDate, ForcedApplyDate は設定されていません。
オプトイン(Opt-in)の種類
Required, Available ともに共通です。
Upgrade Now(今すぐアップグレード)
メンテナンスウインドウ関係なく、即座に適用されます(=メンテナンスが実施され、DBインスタンスが再起動されたりします)。
Upgrade at Next Window(次のウィンドウでアップグレード)
次回のメンテナンスウインドウでアップデートが適用されます。
例
describe-pending-maintenance-actions コマンドを使って、メンテナンス情報を取得してみます。
先日、Amazon Auroraに監査機能が追加されましたね。この機能を使うには、Auroraのバージョンを1.10.1にする必要があるので、メンテナンス情報を取得することができます。タイミングとしては丁度良かったです。
Amazon Aurora Clusterに監査機能を追加 | Amazon Web Services ブログ Database Engine Updates 2017-01-12
$ aws rds describe-pending-maintenance-actions
{
"PendingMaintenanceActions": [
{
"PendingMaintenanceActionDetails": [
{
"Action": "system-update",
"Description": "Aurora 1.10.1 release. Release notes: http://tinyurl.com/aurora-jan2017"
}
],
"ResourceIdentifier": "arn:aws:rds:ap-northeast-1:xxxxxxxxxxxx:cluster:XXXXXXX"
}
]
}
メンテナンス情報は1件だけでした。AutoAppliedAfterDate, ForcedApplyDate は設定されていないため、このメンテナンスはAvailableであることがわかります(マネジメントコンソール上からでも確認できます)。したがって、このメンテナンスは必須ではないので、任意のタイミングでのアップグレードが可能です。
最後に
Amazon RDSのメンテナンス情報についてまとめてみました。 Requiredなメンテナンスがあった場合にどのようになるかはまだ遭遇していないので、今後も内容をアップデートしていきます。