Heroku Data for Redis のメンテナンス
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2024年04月15日(月)
Table of Contents
Heroku では、Heroku Data for Redis データベースのメンテナンスタスクを実行する場合があります。一般的なタスクには、基礎となるインフラストラクチャの更新があります。たとえば、オペレーティングシステムや必要なライブラリへのパッチ適用、Redis 自体のアップグレードなどがあります。Heroku ではこれらのメンテナンスタスクを自動的に処理します。
データメンテナンス CLI プラグインのコマンドを使用して、計画的なメンテナンスを管理することもできます。この記事の data:maintenances:*
コマンドを実行する前にプラグインをインストールしてください。
メンテナンスを実行するには 3 つの方法があります。
メンテナンスウィンドウは、Mini 層プランを除くすべての Heroku Data for Redis プランで使用できます。
データメンテナンス CLI プラグインのコマンドは、redis:maintenance
コマンドの機能を強化および拡張したものです。redis:maintenance
コマンドはまだ使用できますが、Heroku では、これを非推奨にしてデータメンテナンス CLI プラグインのコマンドに置き換えることを計画しています。
必要なメンテナンスの確認
データベースのメンテナンスが必要かどうかは、redis:info
を使用して確認できます。
$ heroku redis:info
=== redis-softly-4514 (REDIS_URL)
Plan: Premium 7
Status: available
...
Maintenance: required by 2016-02-01 00:00:00 +0000
data:maintenances:info
コマンドで確認することもできます。
$ heroku data:maintenances:info REDIS_URL -a example-app
Fetching maintenance... done
addon_attachments: REDIS_URL
addon_description: premium HA
addon_kind: heroku-redis
addon_name: redis-lively-12345
addon_plan: premium-0
addon_window: Fridays 18:00 to 22:00 UTC
app_name: example-app
completed_at: 2023-04-28T18:04:21.141+00:00
duration_approximate: ~ 3 minutes
duration_seconds: 186
method: failover
reason: routine_maintenance
required_by: 2023-05-03T08:54:02.518+00:00
scheduled_for: 2023-04-28T18:00:00.000+00:00
server_created_at: 2022-12-26T08:30:37.872+00:00
started_at: 2023-04-28T18:01:14.191+00:00
status: completed
window: Fridays 18:00 to 22:00 UTC
Redis の重要なセキュリティパッチや、基盤となるソフトウェアおよびハードウェアのメンテナンスのため、Heroku Data for Redis データベースは定期的に更新されます。メンテナンスタスクは少なくとも 90 日ごとに実行されます。
メンテナンスウィンドウの設定
データベースをプロビジョニングすると、デフォルトのメンテナンスウィンドウは月曜日から金曜日の 18:00~23:00 UTC (10:00~15:00 PT) に設定されます。データベースのメンテナンスウィンドウは、Premium、Private、Shield の Heroku Data for Redis プランで指定できます。ウィンドウが始まる曜日と時刻 (UTC) を指定できます。
$ heroku data:maintenances:window:update REDIS_URL Sunday 14:30 -a example-app
メンテナンスウィンドウを設定すると、メンテナンスがアプリケーションとユーザーに及ぼす影響が最小化されます。メンテナンスイベントがビジネスに及ぼす影響が最も小さい時期を選ぶことをお勧めします。
次回のメンテナンスウィンドウの日時を知らせるメールが届きます。日時は heroku data:maintenances:info
コマンドを使用して確認できます。このコマンドは、メンテナンスイベントのスケジュールがいつに設定されているか、また実行の準備ができているかどうかを示します。
メンテナンスウィンドウの長さは 4 時間です。Heroku では、指定されたウィンドウの開始時刻にできるだけ近い時間からメンテナンスを開始するよう配慮しています。メンテナンスイベントに必要な実際の時間は処理内容によって異なりますが、通常、Redis データベースがオフラインになるのは数分間だけです。ウィンドウを指定しない場合、無作為に選択されます。
メンテナンスウィンドウの再スケジュール
データベースのメンテナンスウィンドウは、data:maintenances:window:update
コマンドをもう一度実行して、ウィンドウの新しい開始時刻を指定すると変更できます。
手動でのメンテナンスの実行
メンテナンスを実行するには 3 つの方法があります。
- Heroku で自動的にメンテナンスを実行します。
- メンテナンスモードを使用して手動でメンテナンスを実行します。
- メンテナンスモードを使用せずに手動でメンテナンスを実行します。
手動でメンテナンスを開始する前に、まず、データベースに関連付けられているアプリをメンテナンスモードにすることをお勧めします。
自動実行
メンテナンスを実行する最も一般的な方法は、Heroku で自動的に実行することです。Heroku では、お客様のデータベースのメンテナンスウィンドウを使用して、メンテナンスを自動的に実行するのに最適な時間を決定します。
メンテナンスモードが有効な場合
次のコマンドは、アプリをメンテナンスモードにして、関連付けられたデータベースでメンテナンスを手動で実行する方法を示しています。
$ heroku maintenance:on -a example-app
Enabling maintenance mode for ⬢ example-app... done
$ heroku data:maintenances:run REDIS_URLL -a example-app
Starting maintenance for redis-clean-29349... done
$ heroku maintenance:off -a example-app
Disabling maintenance mode for ⬢ example-app... done
この方法には、ユーザーのランディングページがクリーンになるなどの利点がありますが、メンテナンスモードの有効化と無効化を手動で行うことから、全体としてはダウンタイムが長くなる可能性があります。
メンテナンスモードが無効な場合
最初にメンテナンスモードを有効にせずにメンテナンスを手動で実行するには、アプリ名を指定した --confirm
フラグが必要です。
$ heroku data:maintenances:run REDIS_URL --confirm example-app
このコマンドは、HA スタンバイまたは非表示のスタンバイ (キャッチアップ済みの場合) にすぐにフェイルオーバーします。アプリケーションはすぐに再起動し、以前のスタンバイだった新しいプライマリをポイントします。このオプションの影響は、メンテナンスが Heroku によって実行される場合と同様です。
制限
メンテナンスウィンドウの設定とメンテナンスの手動実行は、Premium、Private、Shield プランでのみ行うことができます。
Heroku では、メンテナンスウィンドウに関するお客様の要望にお応えできるよう最善を尽くしますが、保証はいたしかねます。お客様のデータのセキュリティまたは整合性が脅かされる緊急事態が発生した場合、当社の裁量によって通常のウィンドウ以外の時期にメンテナンスを実行する可能性があります。