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

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

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

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

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

次の点に注意してください。

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

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

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

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

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

  • Amazon 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 を使用します。

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