メニュー
Amazon ElastiCache
ユーザーガイド (API Version 2015-02-02)

ElastiCache コンポーネントと機能

このセクションのトピックで、Amazon ElastiCache デプロイメントの主なコンポーネントの概要を確認できます。

ElastiCache ノード

ノードとは、ElastiCache のデプロイにおける最小の構成要素です。ノードは他のノードから分離するか、一定の関係を設定できます。

ノードは、安全なネットワークに接続された RAM の固定サイズの断片です。各ノードでは、クラスターの作成時に選択された項目に応じて、Memcached または Redis のインスタンスが実行されます。必要に応じて、異なるインスタンスタイプにノードのクラスターを拡大または縮小できます。詳細については、「スケーリング」を参照してください。

クラスター内の各ノードは同じインスタンスタイプで、同じキャッシュエンジンを実行します。各キャッシュノードはそれぞれ Domain Name Service (DNS) 名とポートを持っています。それぞれ関連付けられている異なるメモリ量で、複数のタイプのキャッシュノードがサポートされています。サポートされるインスタンスタイプノードのリストについては、「サポートされているノードの種類」を参照してください。

従量課金制ノードを購入して、ノードの使用分に対してのみ料金を支払うか、大幅な割引価格でリザーブドノードを購入できます。使用率が高い場合は、リザーブドノードを購入するほうがコストを削減できます。クラスターを常に使用しており、急激な使用率の増加には一時的にノードを追加して対処している場合は、多数のリザーブドノードを購入してほとんどの時間実行することができます。一時的にノードを追加する必要がある場合は従量制料金で購入できます。リザーブドノードの詳細については、「ElastiCache リザーブドノード」を参照してください。

Memcached エンジンでは自動検出がサポートされます。— 自動検出は、クライアントプログラムが、キャッシュクラスター内のすべてのノードを識別し、それらのすべてのノードへの接続を開始して維持する機能です。自動検出を使用すると、アプリケーションは個々のノードに手動で接続する必要がありません。その代わり、アプリケーションは設定エンドポイントに接続します。設定エンドポイントの DNS エントリには、各キャッシュノードエンドポイントの CNAME エントリが含まれています。したがって、設定エンドポイントに接続することによって、アプリケーションはクラスター内のすべてのノードについてすぐに知ることができ、すべてのノードに接続できます。アプリケーションで個々のキャッシュノードエンドポイントをハードコードする必要はありません。自動検出の詳細については、「ノードの自動検出 (Memcached) 」を参照してください。

ノードの詳細については、「ElastiCache ノード」を参照してください。

ElastiCache シャード (Redis)

Redis シャード (API および CLI ではノードグループと呼ばれる) は、1 ~ 6 の関連ノードのグループです。Redis (クラスターモードが無効) クラスターには、常に 1 つのみのシャードが含まれます。Redis (クラスターモードが有効) クラスターには、1 ~ 15 のシャードを含めることができます。

複数ノードシャード は、1 つの読み書き可能プライマリノードと 1 ~ 5 のレプリカノードを含めることで、レプリケーションを実装します。詳細については、「ElastiCache レプリケーション (Redis)」を参照してください。

イメージ: Redis シャードの構成

Redis シャードの構成

シャードの詳細については、「シャード (Redis) 」を参照してください。

ElastiCache クラスター

Redis クラスター は、単一または複数の ElastiCache シャード (Redis) の論理グループです。データは Redis (クラスターモードが有効) クラスター内のシャード間で分割されます。

Memcached クラスター は、単一または複数の ElastiCache ノード の論理グループです。データは Memcached クラスター内のノード間で分割されます。

クラスターを対象とした多くの ElastiCache オペレーションがあります。

  • クラスターの作成

  • クラスターの変更

  • クラスター (Redis のすべてのバージョン) のスナップショットを作成する

  • クラスターの削除

  • クラスターのエレメントの表示

  • クラスター間で送受信されるコスト配分タグの追加または削除

詳細については、次の関連トピックを参照してください。

一般的なクラスターの設定

選択したエンジンによって、クラスター設定は異なります。

Memcached は、1 つのリージョンのお客様あたり最大 100 のノードと、1 ~ 20 のノードを持つ各クラスターをサポートします。Memcached クラスターのノードにデータを分割することができます。

Redis クラスターには 1 ~ 15 のシャード (API ではノードグループと呼ばれる) が含まれており、それぞれがデータのパーティションです。Redis (クラスターモードが無効) クラスターには、常に 1 つのみのシャードが含まれます。

以下は、Memcached エンジンと Redis エンジンの一般的なクラスター設定です。

Memcached クラスター

Memcached エンジンを実行している場合、クラスターは 1 ~ 20 個のノードを持つことができます。データベースをノード間で分割できます。アプリケーションによって各ノードのエンドポイントに対して読み書きされます。詳細については、「ノードの自動検出 (Memcached) 」を参照してください。

耐障害性を改善するために、クラスターのリージョン内のさまざまなアベイラビリティーゾーン (AZs) に Memcached ノードを配置します。この方法により、1 つのアベイラビリティーゾーンで発生した障害がクラスター全体とアプリケーションに与える影響を最小限できます。詳細については、「障害の軽減」を参照してください。

Memcached クラスターの需要の変化に合わせて、ノードの追加や削除で規模を拡大したり縮小したりできます。また、新しいノードにまたがってデータを再分割できます。データを分割するときは、整合性のあるハッシュを使用することをお勧めします。整合性のあるハッシュの詳細については、「効率的な負荷分散のための ElastiCache クライアントの設定」を参照してください。

 画像: Memcached クラスター: 単一ノードおよび複数ノードクラスター

Memcached クラスター: 単一ノードおよび複数ノードクラスター

Redis クラスター

Redis (クラスターモードが有効) クラスターには、1~15 のシャード (API と CLI ではノードグループと呼ばれる) が含まれます。Redis (クラスターモードが無効) クラスターには、常に 1 つのシャードのみ (API と CLI では 1 つのノードグループ) が含まれます。Redis シャードには、1 ~ 6 のノードが含まれます。シャードに複数のノードがある場合、シャードでは、1 つを読み書き可能プライマリノード、その他を読み取り専用レプリカノードとするレプリケーションが可能です。

耐障害性を高めるために、Redis クラスターでは 2 つ以上のノードを含め、自動フェイルオーバーを備えたマルチ AZ を有効にすることをお勧めします。詳細については、「障害の軽減」を参照してください。

Redis (クラスターモードが無効) クラスターの需要の変化に応じて、別のノードインスタンスタイプにクラスターを移動することで、クラスターをスケールアップまたはスケールダウンできます。アプリケーションで読み取りのワークロードが高い場合は、Redis (クラスターモードが無効) クラスターに読み取り専用レプリカを追加することをお勧めします。それにより、読み取りを適切な数のノード間に分散させることができます。

ElastiCache では、Redis (クラスターモードが無効) クラスターのより大きいノードタイプへの動的な変更がサポートされています。スケールアップ/ダウンの詳細については、「Redis (クラスターモードが無効) クラスターのスケーリング」または「レプリカノードを含む Redis のクラスターのスケーリング」を参照してください。

ElastiCache レプリケーション (Redis)

ここでの説明を読み進める前に、「Redis の ElastiCache の用語」を参照して、ElastiCache コンソールと ElastiCache API および AWS CLI との用語の違いを理解してください。

レプリケーションは、2~6 のノードをシャード (API と CLI ではノードグループと呼ばれる) にまとめることで実装されます。これらのノードの 1 つは読み書き可能プライマリノードです。他のすべてのノードは読み取り専用レプリカノードです。

各レプリカノードは、プライマリノードからのデータのコピーを維持します。レプリカノードは、非同期レプリケーションメカニズムを使用して、プライマリノードとの同期を維持します。アプリケーションは、クラスターのどのノードからでも読み込みことができますが、書き込むことができるのはプライマリノードのみになります。リードレプリカは、読み取りを複数のエンドポイントに分散させることで拡張できます。リードレプリカは、データの複数のコピーを維持することで、耐障害性が向上します。複数のアベイラビリティーゾーンにリードレプリカを配置することで、耐障害性が向上します。耐障害性の詳細については、「障害の軽減」を参照してください。

Redis (クラスターモードが無効) クラスターでは、1 つのシャード (API と CLI ではノードグループと呼ばれる) がサポートされています。Redis (クラスターモードが有効) クラスターは、1~15 のシャード (API と CLI ではノードグループと呼ばれる) をサポートします。

以下の図では、コンソールのビューと用語を使用して、Redis (クラスターモードが無効) と Redis (クラスターモードが有効) クラスターのレプリケーションを示しています。

 画像: Redis のレプリケーション (コンソールビュー)、1 つのシャードと複数のシャード

Redis のレプリケーション (コンソールビュー)、1 つのシャードと複数のシャード

API と CLI の観点からのレプリケーションでは、以前のバージョンとの互換性を維持するために異なる用語を使用していますが、結果は同じです。以下の表では、レプリケーションの実装に関する API および CLI の用語を示しています。

レプリケーション: Redis (クラスターモードが無効) および Redis (クラスターモードが有効) の比較

次の表では、Redis (クラスターモードが無効) レプリケーショングループと Redis (クラスターモードが有効) レプリケーショングループのさまざまな機能を比較しています。

Redis (クラスターモードが無効) Redis (クラスターモードが有効)
ノードグループ 1 1 ~ 15
ノードグループあたりのレプリカ数 0 ~ 5 0 ~ 5
データのパーティション化 いいえ はい
レプリカの追加/削除 はい いいえ
ノードグループの追加/削除 いいえ いいえ
サポートの拡大 はい いいえ
エンジンアップグレードのサポート はい 該当なし
レプリカをプライマリに昇格 はい いいえ
自動フェイルオーバーを備えたマルチ AZ オプション 必須
バックアップ/復元 はい はい
注:
どのプライマリにもレプリカがなく、プライマリに障害が発生した場合‡、そのプライマリのデータがすべて失われます。
バックアップと復元を使用して Redis (クラスターモードが有効) を移行できます。
バックアップと復元を使用して Redis (クラスターモードが有効) クラスターのサイズを変更できます。

すべてのシャード (API と CLI ではノードグループ) とノードは同じリージョンに存在する必要があります。ただし、そのリージョン内の複数のアベイラビリティーゾーンに個別のノードをプロビジョニングできます。

リードレプリカでは、データが 2 つ以上のノード (プライマリと 1 つ以上のリードレプリカ) にレプリケートされているので、潜在的なデータ損失からデータが保護されます。信頼性を高め、より迅速な復旧を可能にするために、異なるアベイラビリティーゾーンに 1 つ以上のリードレプリカを作成し、AOF を使用する代わりに自動フェイルオーバーを備えたマルチ AZ を有効にすることをお勧めします。自動フェイルオーバーを備えたマルチ AZ が有効になっている場合、AOF は無効になります。詳細については、「レプリケーション: 自動フェイルオーバーとマルチ AZ (Redis)」を参照してください。

レプリケーション: 制限と例外

  • AOF は cache.t1.micro のノードタイプではサポートされていません。

  • 自動フェイルオーバーを備えたマルチ AZ は Redis バージョン 2.6.8 以降でのみサポートされています。

  • 自動フェイルオーバーを備えたマルチ AZ はノードタイプ T1 および T2 ではサポートされていません。

AOF とマルチ AZ の詳細については、「障害の軽減」を参照してください。

リージョンとアベイラビリティーゾーン

Amazon ElastiCache は、世界中の複数のリージョンで利用できます。したがって、ビジネスの要件に合った場所で ElastiCache クラスターを起動できます。たとえば、お客様の最寄りのリージョンで起動するか、または特定の法的要件を満たすことができます。

デフォルトでは、AWS SDK、AWS CLI、ElastiCache API、ElastiCache コンソールは米国西部 (オレゴン) リージョンを参照しています。ElastiCache が他のリージョンでも利用可能になると、そのリージョンのエンドポイントもアプリケーションの HTTP リクエスト、AWS SDK、AWS CLI、ElastiCache コンソールで利用できるようになります。

各リージョンは、他のリージョンと完全に分離されるように設計されています。各リージョンには複数のアベイラビリティーゾーンがあります。別のアベイラビリティーゾーンでノードを起動して、最大限の耐障害性を実現できます。リージョンとアベイラビリティーゾーンの詳細については、「リージョンとアベイラビリティーゾーンの選択」を参照してください。

 イメージ: リージョンとアベイラビリティーゾーン

リージョンとアベイラビリティーゾーン

ElastiCache でサポートされているリージョンおよびそのエンドポイントについては、「サポートされているリージョンおよびエンドポイント」を参照してください。

ElastiCache エンドポイント

エンドポイントは、アプリケーションが ElastiCache ノードまたはクラスターに接続するのに使用する一意のアドレスです。

Memcached のエンドポイント

Memcached クラスターの各ノードには、独自のエンドポイントがあります。クラスターには、設定エンドポイントと呼ばれるエンドポイントもあります。自動検出を有効にして設定エンドポイントに接続した場合、クラスターからノードの追加や削除を行った後であっても、アプリケーションは自動的に各ノードエンドポイントを検出します。詳細については、「ノードの自動検出 (Memcached) 」を参照してください。

単一ノード Redis クラスターのエンドポイント

単一ノード Redis クラスターのエンドポイントは、読み取りおよび書き込みのためにクラスターに接続するのに使用されます。

複数ノード Redis クラスターのエンドポイント

複数ノード Redis (クラスターモードが無効) クラスターには、2 種類のエンドポイントがあります。プライマリエンドポイントは常に、プライマリロールで特定のノードが変わっても、クラスター内のプライマリノードに接続します。クラスターへのすべての書き込みには、プライマリエンドポイントを使用します。

Redis (クラスターモードが無効) クラスター内のリードエンドポイントは常に、特定のノードを参照します。リードレプリカを追加または削除するたびに、アプリケーションで関連するノードエンドポイントを更新する必要があります。

Redis (クラスターモードが有効) クラスターには、1 つの設定エンドポイントがあります。設定エンドポイントに接続することで、アプリケーションはクラスター内のシャードごとにプライマリおよびリードエンドポイントを検出できます。

詳細については、「ElastiCache エンドポイントの検索」を参照してください。

ElastiCache パラメータグループ

キャッシュパラメータグループは、サポートされるエンジンソフトウェアのランタイム設定を管理する簡単な方法です。Memcached と Redis には、メモリの使用状況、削除のポリシー、項目サイズなどを制御する多くのパラメータがあります。ElastiCache パラメータグループは、一連の Memcached または Redis 固有のパラメータで、クラスターに適用してそのクラスター内のすべてのノードで正確に同じ設定が行われることを保証します。

サポートされているパラメータのリスト、デフォルト値、変更可能なパラメータについては、以下を参照してください。 DescribeEngineDefaultParameters (describe-engine-default-parameters).

ElastiCache パラメータグループの詳細については、「パラメータとパラメータグループ」を参照してください。

ElastiCache のセキュリティ

セキュリティ強化のため、ElastiCache ノードのアクセスは、ホワイトリストに登録された Amazon EC2 インスタンスで実行されているアプリケーションに制限されます。キャッシュサブネットグループまたはセキュリティグループを使用することで、クラスターにアクセスできる Amazon EC2 インスタンスを制御できます。

デフォルトでは、すべての新しい ElastiCache クラスターが Amazon Virtual Private Cloud (Amazon VPC) 環境で起動されます。サブネットグループを使用して、特定のサブネットで実行されている Amazon EC2 インスタンスからのクラスターアクセスを許可できます。クラスターを Amazon VPC の外部で実行することを選択した場合、セキュリティグループを作成して、特定の Amazon EC2 セキュリティグループ内に実行されている Amazon EC2 インスタンスを承認できます。

ElastiCache セキュリティグループ

注記

ElastiCache セキュリティグループは、Amazon Virtual Private Cloud (Amazon VPC) 環境で実行されていないクラスターにのみ適用されます。ElastiCache ノードを Amazon VPC で実行している場合は、Amazon VPC セキュリティグループでキャッシュクラスターへのアクセスを制御します。これは、ElastiCache セキュリティグループとは異なります。

ElastiCache を Amazon VPC で使用する方法については、「Amazon Virtual Private Cloud (Amazon VPC) と ElastiCache」を参照してください。

ElastiCache を使用すると、セキュリティグループを使用して、クラスターへのアクセスを制御することができます。セキュリティグループは、クラスターへのネットワークアクセスをコントロールするファイアウォールのように動作します。デフォルトでは、クラスターへのネットワークアクセスはオフになっています。アプリケーションからクラスターにアクセスできるようにするには、特定の Amazon EC2 セキュリティグループのホストからのアクセスを明示的に有効にする必要があります。進入ルールの設定後、同じルールがそのセキュリティグループに関連するすべてのクラスターに適用されます。

クラスターへのネットワークアクセスを許可するには、セキュリティグループを作成して AuthorizeCacheSecurityGroupIngress API を使用するか、 authorize-cache-security-group-ingress AWS CLI コマンドを使用して目的の Amazon EC2 セキュリティグループを認証 (これにより Amazon EC2 インスタンスの許可を指定) します。セキュリティグループは、作成時にクラスターに関連付けるか、ElastiCache マネジメントコンソールまたは ModifyCacheCluster または (modify-cache-cluster) ElastiCache 用 AWS CLI のコマンド. を使用して、クラスターに関連付けることができます。

重要

IP レンジベースのアクセスコントロールは現在、クラスターでは有効になっていません。クラスターのすべてのクライアントは、Amazon EC2 ネットワーク内にある必要があり、前に説明したように、セキュリティグループによって許可されている必要があります。

セキュリティグループの詳細については、セキュリティグループ [EC2-Classic] を参照してください。

ElastiCache サブネットグループ

サブネットグループは、Amazon Virtual Private Cloud (Amazon VPC) 環境で実行しているクラスターに対して指定できるサブネット (通常はプライベート) の集合です。

Amazon VPC でクラスターを作成する場合は、キャッシュサブネットグループを指定する必要があります。ElastiCache はそのキャッシュサブネットグループを使用して、そのサブネット内でキャッシュノードに関連付けるサブネットおよび IP アドレスを選択します。

Amazon VPC 環境でのキャッシュサブネットグループの使用方法の詳細については、「Amazon Virtual Private Cloud (Amazon VPC) と ElastiCache」、「ステップ 4: アクセスを許可する」、「サブネットおよびサブネットグループ」を参照してください。

ElastiCache バックアップ/スナップショット (Redis)

バックアップは、Redis クラスターのポイントインタイムコピーです。バックアップは、既存のクラスターを復元するか、または新しいクラスターをシードするのに使用できます。バックアップは、クラスターのすべてのデータといくつかのメタデータで構成されます。バックアップは Memcached エンジンではサポートされません。

クラスターで実行されている Redis のバージョンによって、バックアッププロセスが成功するためには、異なる予約メモリの量が必要になります。詳細については、以下のトピックを参照してください。

ElastiCache イベント

ノード追加の失敗、ノード追加の成功、セキュリティグループの変更などのような重要なイベントがキャッシュクラスターで発生すると、ElastiCache は特定の Amazon SNS トピックに通知を送信します。主要イベントをモニタリングすることで、クラスターの現在の状態を知り、イベントに基づいて是正措置を取ることができます。

ElastiCache イベントの詳細については、「ElastiCache イベントのモニタリング」を参照してください。