エンジンバージョンとアップグレード - Amazon ElastiCache for Redis

エンジンバージョンとアップグレード

ElastiCache for Redis のバージョンは、メジャーとマイナーコンポーネントで構成されるセマンティックバージョンで識別されます。例えば、Redis 6.2 では、メジャーバージョンは 6、マイナーバージョンは 2 です。独自設計型クラスターを操作する場合、ElastiCache for Redisは Redis 6.2.1 などの PATCH コンポーネントも公開します。パッチバージョンは 1 です。

メジャーバージョンは API 非互換の変更用であり、マイナーバージョンは下位互換性のある方法で追加された新機能用です。パッチバージョンは、下位互換性のあるバグ修正と機能以外の変更用です。

ElastiCache サーバーレスのバージョン管理

ElastiCache サーバーレスは、アプリケーションに影響を与えたり、ダウンタイムを発生させたりすることなく、最新のマイナーおよびパッチソフトウェアバージョンをキャッシュに自動的に適用します。ユーザー操作は必要はありません。

新しいメジャーバージョンがリリースされると、ElastiCache サーバーレスからコンソールに通知が送信され、イベントが EventBridge に送信されます。コンソール、CLI、または API を使用してキャッシュを変更し、最新のエンジンバージョンを選択することで、キャッシュを最新のメジャーバージョンにアップグレードできます。

独自設計型 ElastiCache クラスターのバージョン管理

独自設計型 ElastiCache クラスターで作業する場合、キャッシュクラスターを動かすソフトウェアを、ElastiCache でサポートされる新しいバージョンにアップグレードするタイミングを制御できます。キャッシュを最新のメジャーバージョン、マイナーバージョン、パッチバージョンにアップグレードするタイミングを制御できます。クラスターまたはレプリケーショングループを変更し、新しいエンジンのバージョンを指定することで、クラスターまたはレプリケーショングループに対するエンジンのバージョンのアップグレードを開始します。

キャッシュクラスターを実現するプロトコルに準拠したソフトウェアを、ElastiCache でサポートされる新しいバージョンにアップグレードするかどうかと、アップグレードの時期を管理します。このレベルのコントロールにより、特定のバージョンとの互換性を維持する、本稼働環境にデプロイする前にアプリケーションで新しいバージョンをテストする、および独自の条件とタイムラインでバージョンのアップグレードを実行することができます。

バージョンのアップグレードは互換性のリスクがあるため、自動では実行されません。それらを自分で開始する必要があります。

クラスターまたはレプリケーショングループを変更し、新しいエンジンのバージョンを指定することで、クラスターまたはレプリケーショングループに対するエンジンのバージョンのアップグレードを開始します。詳細については、次を参照してください:

独自設計型クラスターを使用する際のアップグレードに関する考慮事項

注記

以下の考慮事項は、独自設計型クラスターをアップグレードする場合にのみ適用されます。ElastiCache サーバーレスには適用されません。

独自設計型クラスターをアップグレードする際は、以下を考慮してください。

  • エンジンのバージョニングは、パッチの適用方法をできる限り制御できるように設計されています。ただし、ElastiCache には、システムまたはキャッシュソフトウェアに重大なセキュリティ脆弱性が発生する可能性が低い場合に、お客様に代わってクラスターにパッチを適用するための権限あります。

  • ElastiCache for Redis では、Redis 6.0 以降、複数のパッチバージョンを提供するのではなく、Redis OSS マイナーリリースごとに 1 つのバージョンが提供されます。

  • Redis エンジンバージョン 5.0.6 以降では、最小限のダウンタイムでクラスターバージョンをアップグレードできます。このクラスターは、アップグレード中のすべての読み取りと、数秒かかるフェールオーバー操作中を除き、ほとんどすべてのアップグレード中の書き込みに対応します。

  • 5.0.6 より前のバージョンで ElastiCache クラスターをアップグレードすることもできます。関連するプロセスは同じですが、DNS の伝播中にフェイルオーバー時間が長くなる可能性があります (30 秒~1 分)。

  • Redis 7 から、ElastiCache for Redis は、Redis (クラスターモードが無効) と Redis (クラスターモードが有効) の切り替えをサポートしています。

  • Amazon ElastiCache for Redis エンジンのアップグレードプロセスは、既存のデータをベストエフォートで保持するように設計されており、Redis レプリケーションが正常に実行される必要があります。

  • エンジンをアップグレードすると、ElastiCache for Redis は既存のクライアント接続を終了します。エンジンのアップグレード中のダウンタイムを最小限に抑えるため、エラー再試行とエクスポネンシャルバックオフによるRedis クライアントのベストプラクティスと、メンテナンス中のダウンタイムを最小限に抑えるためのベストプラクティスを実装することをお勧めします。

  • エンジンをアップグレードすると、Redis (クラスターモード無効) から Redis (クラスターモード有効) に直接アップグレードすることはできません。以下の手順では、Redis (クラスターモードが無効) から Redis (クラスターモードが有効) にアップグレードする方法を示しています。

    Redis (クラスターモード無効) から Redis (クラスターモードが有効) エンジンバージョンにアップグレードするには
    1. Redis (クラスターモードが無効) クラスターまたはレプリケーショングループのバックアップを作成します。詳細については、「手動バックアップの取得」を参照してください。

    2. バックアップを使用して、1 つのシャード (ノードグループ) を持つ Redis (クラスターモードが有効) クラスターを作成してシードします。新しいエンジンのバージョンを指定し、クラスターまたはレプリケーショングループの作成時にクラスターモードを有効にします。詳細については、「外部で作成されたバックアップによる新しい独自設計型クラスターのシード」を参照してください。

    3. 古い Redis (クラスターモードが無効) クラスターまたはレプリケーショングループを削除します。詳細については、「クラスターの削除」または「レプリケーショングループの削除」を参照してください。

    4. 新しい Redis (クラスターモードが有効) クラスターまたはレプリケーショングループを、必要なシャード (ノードグループ) の数に合わせてスケールします。詳細については、Redis (クラスターモードが有効) でのクラスターのスケーリング を参照してください。

  • 例えば、5.0.6 から 6.0 にメジャーエンジンのバージョンをアップグレードする場合は、新しいエンジンバージョンと互換性のある新しいパラメータグループも選択する必要があります。

  • 単一の Redis クラスターや、マルチ AZ が無効になっているクラスターの場合、「Redis スナップショットを作成するのに十分なメモリがあることの確認」で説明されているように、Redis 用に十分なメモリを確保することをお勧めします。このような場合、プライマリはアップグレードプロセスの実行中、リクエストに対応できません。

  • マルチ AZ が有効になっている Redis クラスターの場合、書き込みの受信トラフィックが少ない期間中にエンジンのアップグレードを予定することもお勧めします。Redis 5.0.6 以降にアップグレードする場合は、アップグレードプロセス中も、プライマリクラスターで引き続きサービスリクエストを利用できます。

    複数のシャードを含むクラスターおよびレプリケーショングループは、次のように処理および修正されます。

    • すべてのシャードは並行して処理されます。シャードでは、いつでも 1 つのアップグレードオペレーションのみが実行されます。

    • 各シャードでは、プライマリが処理される前にすべてのレプリカが処理されます。シャードにレプリカが少ない場合、他のシャードのレプリカが処理を終了する前に、そのシャードのプライマリが処理されることがあります。

    • すべてのシャード間で、プライマリノードはシリーズで処理されます。一度にアップグレードできるプライマリノードは 1 つだけです。

  • 現在のクラスターまたはレプリケーショングループで暗号化が有効になっている場合、暗号化をサポートしていないエンジンバージョン (3.2.6 から 3.2.10 など) にアップグレードすることはできません。

エンジンバージョンのアップグレード方法

クラスターまたはレプリケーショングループのバージョンアップは、ElastiCache コンソール、AWS CLI、または ElastiCache API を使用して、より新しいエンジンバージョンを指定することで開始します。詳細については、以下のトピックを参照してください。

クラスターおよびレプリケーショングループを変更する方法
クラスター レプリケーショングループ
AWS Management Console を使用する場合 AWS Management Console を使用する場合
AWS CLI を使用する場合 AWS CLI を使用する場合
ElastiCache API の使用 ElastiCache API の使用

ブロックされた Redis エンジンのアップグレードの解決

以下の表に示すように、保留中のスケールアップオペレーションがある場合、Redis エンジンのアップグレードオペレーションはブロックされます。

保留中のオペレーション ブロックされたオペレーション
スケールアップ 即時のエンジンのアップグレード
エンジンのアップグレード 即時のスケールアップ
スケールアップとエンジンのアップグレード 即時のスケールアップ
即時のエンジンのアップグレード
ブロックされた Redis エンジンのアップグレードを解決するには
  • 次のいずれかを行います:

    • [すぐに適用] チェックボックスをオフにすることで、Redis エンジンのアップグレードオペレーションを次のメンテナンスウィンドウに予定します。

      CLI では、--no-apply-immediately を使用します。API では、ApplyImmediately=false を使用します。

    • Redis のエンジンアップグレードオペレーションを実行する次のメンテナンス期間 (またはその後) まで待ちます。

    • [すぐに適用] チェックボックスをオンにすることで、Redis のスケールアップオペレーションをこのクラスターの変更に追加します。

      CLI では、--apply-immediately を使用します。API では、ApplyImmediately=true を使用します。

      このアプローチにより、エンジンのアップグレードがすぐに実行されて、次のメンテナンスウィンドウ中のエンジンのアップグレードはキャンセルされます。