リソースセンターのご利用開始にあたって / 10 分間チュートリアル / ...
スケーラビリティと高可用性を実現する Redis クラスターの設定
Amazon ElastiCache for Redis クラスターモードの設定、構成、セキュリティ、プロビジョニング
このチュートリアルでは、ElastiCache for Redis を使用して Redis クラスターを作成および設定する方法を学習します。クラスターモードを有効にすると、Redis クラスターのスケーラビリティと高可用性が向上します。Redis は小規模なデータで開始し、アプリケーションの拡大に合わせて、簡単にスケーリングできます。また、さまざまなアベイラビリティーゾーンにレプリカを配置して、読み込みキャパシティーを増やすこともできます。このチュートリアルでは、Redis クラスターのデプロイのベストプラクティスについても取り上げます。
Redis クライアントのエコシステムは非常に充実しており、クラスターモード機能にも対応しています。これにより、クライアントはローカルキャッシュ内のハッシュスロットの場所を追跡できるため、シャーディングされたデータの操作性や信頼性が高くなり、システム全体のパフォーマンスが向上します。
このチュートリアルで作成した ElastiCache ノードは、無料利用枠の対象です。
要件
この機能を直接体験するには、チュートリアルの途中で Redis クラスターに接続する必要があります。つまり、Redis クライアントがインストールされている EC2 インスタンスにアクセスする必要があります。Redis クライアントがインストールされた EC2 インスタンスをすでにお持ちの場合は、ステップ 1 にスキップできます。それ以外の場合は、Amazon EC2 インスタンスに接続し、以下の手順に従って Redis クライアントをインストールします。
C コンパイラがない場合は、以下を実行してインストールします。
$ sudo yum install gcc
Redis クライアントをダウンロードしてコンパイルします。
$ curl -O http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make distclean # Ubuntu systems only
$ make
これで、チュートリアルを開始する準備が整いました。
このチュートリアルについて | |
---|---|
時間 | 10 ~ 20 分 |
料金 | 無料利用枠の対象 |
ユースケース | スケーリング、高可用性、リアルタイムアプリケーション |
製品 | AWS ElastiCache for Redis、AWS 無料利用枠 |
対象者 | 開発者 |
レベル | 初心者 |
最終更新日 | 2019 年 6 月 5 日 |
ステップ 1: ElastiCache ダッシュボードを開く
[ElastiCache ダッシュボード] を開きます。
ステップ 3: Redis 設定を構成する
3.2 — ノードタイプを cache.t2.micro に変更します。このチュートリアルではこのノードタイプでも問題ありませんが、本番クラスターではノードのサイズがワークロードに依存するため、m5 または r5 インスタンスファミリーから始める必要があります。
3.4 — [シャードあたりのレプリカ] で 2 を選択します。これにより、各マスターノードに 2 つのレプリカが作成されます。障害が発生した場合、自動フェイルオーバーがトリガーされ、レプリカのいずれかがマスターノードのロールを引き継ぎます。
3.5 — サブネットグループを選択します。サブネットグループの詳細については、ドキュメントを参照してください。
ステップ 6: データをクラスターにインポートする
この例では、シード RDB ファイルをロードしないため、この構成手順はスキップできます。このオプションが利用可能であることを覚えておいてください。
ステップ 9: 確認して作成する
フォームのすべてのフィールドを簡単に確認したら、[作成] を押します。
9.1 — [作成] をクリックします。
Redis クラスターが初期化され、[利用可能] 状態になったら、ステップ 10 に進みます。
Amazon CLI を使用する場合は、以下のコマンドで一度に Redis クラスターを作成できます。
Amazon CLI を使用する場合は、以下のコマンドで一度に Redis クラスターを作成できます。
$ aws elasticache create-replication-group \
--replication-group-id elc-tutorial \
--replication-group-description "Tutorial example" \
--num-node-groups 3 \
--cache-node-type cache.t2.micro \
--cache-parameter-group default.redis5.0.cluster.on \
--engine redis \
--engine-version 5.0.3 \
--cache-subnet-group-name sn-value \
--security-group-ids sg-value \
--node-group-configuration \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1b','us-east-1c',Slots=0-5460" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1b',ReplicaAvailabilityZones='us-east-1c','us-east-1a',Slots=5461-10921" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1a','us-east-1b',Slots=10922-16383"
--security-group-ids の引数では、sg-value を、使用するセキュリティグループの ID に置き換える必要があります。
--cache-subnet-group-name の引数では、sn-value をサブネットグループの名前に置き換えます。サブネットグループを作成する必要がある場合は、次のコマンドを使用します。
$ aws elasticache create-cache-subnet-group \
--cache-subnet-group-name elc-tutorial-subnet \
--cache-subnet-group-description "Tutorial Subnet Group" \
--subnet-ids sn-ids
sn-ids の値には、サブネット ID のリストを指定します。
Amazon API を使用する場合は、以下のリクエストで Redis クラスターを作成します。
https://elasticache.us-east-1.amazonaws.com/
?Action=CreateReplicationGroup
&CacheParameterGroup=default.redis5.0.cluster.on
&Engine=redis
&EngineVersion=5.0.3
&ReplicationGroupDescription=Tutorial%20example
&ReplicationGroupId=elc-tutorial
&NumNodeGroups=3
&PrimaryClusterId=elc-primary
&ReplicasPerNodeGroup=2
&Version=<version>
&SignatureVersion=4
&SignatureMethod=HmacSHA256
&Timestamp=<timestamp>
&X-Amz-Credential=<credential>
前のリクエストで、Version、Timestamp、および X-Amz-Credential の値を指定する必要があります。
ステップ 11: フェイルオーバーをトリガーする
これで、Redis クラスターが正常に稼働できる状態になりました。クラスターモードには、ノードが停止した場合にクラスターの自己修復を行う機能があります。この機能をテストするには、手動フェイルオーバーをトリガーします。これにより、マスターのロールを引き継ぐためにリードレプリカが選択された後、フェイルオーバーが実行されます。その結果、新しいマスターに接続できるようになります。それまでの間、新しいレプリカが自動的に追加されるため、クラスターのマスターが 1 つ、レプリカが 2 つの状態が維持されます。
ステップ 10 のエンドポイントを使用して、ノードのロールを確認します。
11.1 — エンドポイントのロールを確認します。
endpoint:6379> ROLE
1) "master"
...
マスターに接続します。マスターに接続していない場合は、別のエンドポイントを使用します。最大 3 回試すことができます。
マスターノードが見つかったら、次のようにします。
ステップ 12: クラスターを削除する
チュートリアル完了後、Redis クラスターが不要になったときに削除する方法について学習します。
Redis クラスターを削除するには、[ElastiCache ダッシュボード] に移動して、次の手順に沿って進めます。
12.1 — 左側のペインで [Redis] を選択します。
これにより、すべての Redis クラスターのリストが表示されます。
お疲れ様でした。
クラスターモードが有効な Redis クラスターが作成されました。ノードはアベイラビリティーゾーン間に分散され、自動フェイルオーバーで構成されました。また、Redis クラスターのデプロイのベストプラクティスについても学習しました。
推奨する次の手順
詳細
Redis クラスターの詳細については、ブログ投稿 Redis クラスター 101 を参照してください。 開始方法の詳細、開発者ガイド、技術ブログについては、リソースページを参照してください。
適切なノードサイズを選択する
Redis ノードのサイズを決めるのは簡単ではないかもしれませんが、ニーズに基づいて適切なノードサイズを選択する上で役立つガイドラインが用意されています。
キャッシング戦略
最後に、パフォーマンスと信頼性を向上させるためのキャッシング戦略とベストプラクティスを参照してください。