データ階層化 - Amazon ElastiCache (Redis OSS)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

データ階層化

レプリケーショングループを構成し、r6gd ファミリーのノードタイプを使用するクラスターでは、メモリとローカル SSD (ソリッドステートドライブ) ストレージの間でデータが階層化されます。データ階層化は、データをメモリに保存することに加えて、各クラスターノードで低コストのソリッドステートドライブ (SSDsワークロードに新しい価格パフォーマンスオプションを提供します。これは、データセット全体の最大 20% に定期的にアクセスするワークロードや、SSD 上のデータにアクセスする際に増加するレイテンシーを許容できるアプリケーションに最適です。

データ階層化を使用するクラスターでは、 は保存するすべての項目の最後のアクセス時間を ElastiCache モニタリングします。使用可能なメモリ (DRAM) が完全に消費されると、 ElastiCache は最も長い時間使われていない (LRU) アルゴリズムを使用して、アクセス頻度の低い項目をメモリから SSD に自動的に移動します。SSD 上のデータがその後アクセスされると、リクエストを処理する前に ElastiCache 、自動的かつ非同期的にデータをメモリに戻します。データのサブセットにのみ定期的にアクセスするワークロードがある場合、データ階層化は容量を優れたコスト効率でスケールするための最適な方法となります。

データ階層化を使用する場合、キー自体は常にメモリに残り、LRU によってメモリとディスクの値の配置が制御されます。一般に、データ階層化を使用する際は、キーサイズを値のサイズよりも小さくすることをお勧めします。

データ階層化は、アプリケーションワークロードへのパフォーマンスの影響を最小限に抑えるように設計されています。例えば、500 バイトの文字列値を想定した場合に、メモリ内のデータへのリクエストと比較すると、SSD に保存されたデータへのリクエストには平均で 300 マイクロ秒のレイテンシーが生じることが予想されます。

最も大きいデータ階層化ノードサイズ (cache.r6gd.16xlarge) では、単一の 500 ノードクラスターに最大 1 ペタバイトを保存できます (1 つのリードレプリカを使用する場合は 500 TB)。データ階層化は、 でサポートされているすべての Redis OSS コマンドとデータ構造と互換性があります ElastiCache。この機能を使用するためのクライアント側の変更は必要ありません。

ベストプラクティス

推奨されるベストプラクティスを以下に示します:

  • データ階層化は、データセット全体の最大 20% に定期的にアクセスするワークロードや、SSD 上のデータにアクセスする際に増加するレイテンシーを許容できるアプリケーションに最適です。

  • データ階層化ノードで利用可能な SSD 容量を使用する場合は、値のサイズをキーサイズよりも大きくすることをお勧めします。DRAM と SSD の間で項目を移動すると、キーは常にメモリに残り、値だけが SSD 階層に移動されます。

制限事項

データ階層化には以下の制限があります。

  • データ階層化は、レプリケーショングループの一部であるクラスターでのみ使用できます。

  • 使用するノードタイプは、us-east-2us-east-1us-west-2us-west-1eu-west-1eu-central-1eu-north-1eu-west-3ap-northeast-1ap-southeast-1ap-southeast-2ap-south-1ca-central-1sa-east-1 のリージョンで使用できる r6gd ファミリーのものである必要があります。

  • Redis OSS 6.2 以降のエンジンを使用する必要があります。

  • r6gd クラスターのバックアップは、r6gd を使用しなければ別のクラスターに復元できません。

  • データ階層化クラスターのバックアップを Amazon S3 にエクスポートすることはできません。

  • オンライン移行は、r6gd ノードタイプで実行されるクラスターではサポートされていません。

  • データ階層化クラスター (r6gd ノードタイプを使用するクラスターなど) からデータ階層化を使用しないクラスター (r6g ノードタイプを使用するクラスターなど) へのスケーリングはサポートされていません。詳細については、「スケーリング ElastiCache (Redis OSS) 」を参照してください。

  • 自動スケーリングは、Redis OSS バージョン 7.0.7 以降のデータ階層化を使用するクラスターでサポートされています。詳細については、「Auto Scaling ElastiCache (Redis OSS) クラスター」を参照してください。

  • データ階層化では、volatile-lruallkeys-lruvolatile-lfuallkeys-lfu、および noeviction の maxmemory ポリシーのみがサポートされます。

  • フォークレスセーブは、Redis OSS バージョン 7.0.7 以降でサポートされています。詳細については、「同期とバックアップの実装方法」を参照してください。

  • 128 MiB を超える項目は SSD に移動されません。

料金

R6gd ノードは R6g ノード (メモリのみ) と比較して 4.8 倍の合計容量 (メモリ + SSD) を備えており、最大使用率で実行すると 60 % 以上のコスト削減を実現できます。詳細については、「 のElastiCache 料金」を参照してください。

モニタリング

ElastiCache (Redis OSS) は、データ階層化を使用するパフォーマンスクラスターをモニタリングするために特別に設計されたメトリクスを提供します。SSD と比較した DRAM 内の項目の比率をモニタリングするには、CurrItems「Metrics for Redis OSS」で メトリクスを使用できます。パーセンテージは、 (ディメンション: 階層 = メモリ * CurrItems 100) / (ディメンションフィルターCurrItems なし) として計算できます。

設定されたエビクションポリシーで許可されている場合、メモリ内の項目の割合が 5% を下回ると、 ElastiCache (Redis OSS) は項目のエビクションを開始します。削除ポリシーが設定されているノードでは、書き込みオペレーションにメモリ不足エラーが発生します。

メモリ内の項目の割合が 5% を下回る場合は、クラスターモードが有効なクラスターのスケールアウトまたはクラスターモードが無効なクラスターのスケールアップを検討することをお勧めします。スケーリングの詳細については、「」を参照してくださいRedis でのクラスターのスケーリング OSS (クラスターモードが有効)。データ階層化を使用する Redis OSS クラスターのメトリクスの詳細については、「」を参照してくださいRedis OSS のメトリクス

データ階層化の使用

レプリケーショングループの一部としてクラスターを作成する場合は、r6gd ファミリーから cache.r6gd.xlarge などのノードタイプを選択し、データ階層化を使用します。ノードタイプを選択すると、データ階層化が自動的に有効になります。

クラスター作成の詳細については、クラスターの作成 を参照してください。

を使用してレプリケーショングループを作成する場合 AWS CLI、cash.r6gd.xlarge などの r6gd ファミリーからノードタイプを選択し、 --data-tiering-enabledパラメータを設定して、データ階層化を使用します。

r6gd ファミリーからノードタイプを選択する際に、データ階層化をオプトアウトすることはできません。--no-data-tiering-enabled パラメータを設定すると、オペレーションは失敗します。

Linux、macOS、Unix の場合:

aws elasticache create-replication-group \ --replication-group-id redis-dt-cluster \ --replication-group-description "Redis OSS cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --cache-subnet-group-name default \ --automatic-failover-enabled \ --data-tiering-enabled

Windows の場合:

aws elasticache create-replication-group ^ --replication-group-id redis-dt-cluster ^ --replication-group-description "Redis OSS cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled

このオペレーションを実行すると、以下のようなレスポンスが表示されます。

{ "ReplicationGroup": { "ReplicationGroupId": "redis-dt-cluster", "Description": "Redis OSS cluster with data tiering", "Status": "creating", "PendingModifiedValues": {}, "MemberClusters": [ "redis-dt-cluster" ], "AutomaticFailover": "enabled", "DataTiering": "enabled", "SnapshotRetentionLimit": 0, "SnapshotWindow": "06:00-07:00", "ClusterEnabled": false, "CacheNodeType": "cache.r6gd.xlarge", "TransitEncryptionEnabled": false, "AtRestEncryptionEnabled": false } }

データ階層化を有効にして、バックアップからクラスターにデータを復元する

(コンソール)、 ()、または (ElastiCache API AWS CLI) を使用して、データ階層化を有効にした新しいクラスターにバックアップを復元できます。r6gd ファミリーのノードタイプを使用してクラスターを作成すると、データ階層化が有効になります。

データ階層化を有効にして新しいクラスターにバックアップを復元するには (コンソール)
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/elasticache/ で ElastiCache コンソールを開きます。

  2. ナビゲーションペインで [バックアップ] を選択します。

  3. バックアップのリストで、復元元のバックアップ名の左にあるチェックボックスをオンにします。

  4. [復元] を選択します。

  5. [クラスターの復元] ダイアログボックスに入力します。すべての [Required] (必須) フィールドと、デフォルト値から変更するその他のフィールドに入力します。

    1. [クラスター ID] – 必須。新しいクラスターの名前。

    2. クラスターモードが有効 (スケールアウト) — Redis OSS (クラスターモードが有効) クラスターの場合は、これを選択します。

    3. Node Type - cache.r6gd.xlarge または r6gd ファミリーの他のノードタイプを指定します。

    4. [シャード数] – 新しいクラスター (API/CLI: ノードグループ) に必要なシャード数を選択します。

    5. [Replicas per Shard] – 各シャードに必要なリードレプリカのノード数を選択します。

    6. [Slots and keyspaces] – シャード間でキーを分散する方法を選択します。キーの分散を指定する場合は、各シャードのキー範囲を指定するテーブルを作成します。

    7. [Availability zone(s)] – クラスターのアベイラビリティーゾーンの選択方法を指定します。

    8. [Port] – 新しいクラスターで別のポートを使用する場合のみ、これを選択します。

    9. [Choose a VPC] – このクラスターを作成する VPC を選択します。

    10. パラメータグループ – 選択したノードタイプの Redis OSS オーバーヘッドに十分なメモリを予約するパラメータグループを選択します。

  6. すべての設定が正しいことを確認したら、[作成] を選択します。

クラスター作成の詳細については、クラスターの作成 を参照してください。

を使用してレプリケーショングループを作成する場合 AWS CLI、データ階層化はデフォルトで、r6gd ファミリーから cache.r6gd.xlarge などのノードタイプを選択し、 --data-tiering-enabledパラメータを設定することによって使用されます。

r6gd ファミリーからノードタイプを選択する際に、データ階層化をオプトアウトすることはできません。--no-data-tiering-enabled パラメータを設定すると、オペレーションは失敗します。

Linux、macOS、Unix の場合:

aws elasticache create-replication-group \ --replication-group-id redis-dt-cluster \ --replication-group-description "Redis OSS cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --cache-subnet-group-name default \ --automatic-failover-enabled \ --data-tiering-enabled \ --snapshot-name my-snapshot

Linux、macOS、Unix の場合:

aws elasticache create-replication-group ^ --replication-group-id redis-dt-cluster ^ --replication-group-description "Redis OSS cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled ^ --snapshot-name my-snapshot

このオペレーションを実行すると、以下のようなレスポンスが表示されます。

{ "ReplicationGroup": { "ReplicationGroupId": "redis-dt-cluster", "Description": "Redis OSS cluster with data tiering", "Status": "creating", "PendingModifiedValues": {}, "MemberClusters": [ "redis-dt-cluster" ], "AutomaticFailover": "enabled", "DataTiering": "enabled", "SnapshotRetentionLimit": 0, "SnapshotWindow": "06:00-07:00", "ClusterEnabled": false, "CacheNodeType": "cache.r6gd.xlarge", "TransitEncryptionEnabled": false, "AtRestEncryptionEnabled": false } }