話題の記事

Amazon ElastiCache (Redis)のMulti-AZを構成する

2014.10.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2014/10/28更新 : プライマリノードの切り替えについて追記しました。

ども、大瀧です。
本日、AWSのキャッシュサーバー as a ServiceのElastiCache(Redis)にMulti-AZ機能がリリースされました。早速試してみたので、レポートしてます!

Multi-AZ機能とは

Multi-AZ機能とは、Amazon RDSで提供されている、AWSのデータセンターであるアベイラビリティゾーン(AZ)レベルの障害に対応する可用性機能です。

ElastiCache(Redis)では、従来から複数AZへのキャッシュノードの配置とノード間レプリケーションがサポートされていましたが、プライマリーノードのフェイルオーバーが手動でした。キャッシュノードの障害検知プライマリーノードの自動フェイルオーバーが今回のアップデートで追加されたと考えると良いでしょう。

RDSのMulti-AZと異なる点として、利用料金があります。RDSでは、Single-AZとMulti-AZで異なる料金設定(Multi-AZはSingle-AZの料金の1.X倍)でしたが、ElastiCacheではレプリカノードがフェイルオーバー先ノードとして扱われるため、Multi-AZを組むためには1ノード構成の最低2倍(レプリカを追加すれば3倍/4倍)のコストがかかります。

また、ElastiCacheではmemcachedを構成することもできますが、こちらはMulti-AZはサポートされません。複数AZにキャッシュノードを配置することはできますが、ノード間のレプリケーションは動作しないため、キャッシュノード側でデータの冗長性を確保することはできません。

構成手順

では、Multi-AZが有効なElastiCache(Redis)キャッシュクラスタを構成してみます。ElastiCacheの管理画面で[Get Started Now](クラスタ未作成の場合)ないし[Launch Cache Cluster]からクラスタ作成ウィザードを開きます。

[Select Engine]画面では、赤いRedisのアイコン画像をクリックし、[Next]をクリックします。

redis-multi-az01

[Specify Cluster Details]画面では、クラスタの設定を選択していきます。[Multi-AZ]のチェックをオンにすることでMulti-AZが有効になります。

redis-multi-az02

同じ画面の後半では、クラスタ名やノードタイプを選択します。Multi-AZを有効にするとノードタイプではt2.*を選択することができません。検証用に費用を抑えたい場合は、m1.smallなどを選択するとよいでしょう。今回はm3.mediumを選択しました。リードレプリカ数は、最大5まで選択できます。プライマリノード障害時には、これらのリードレプリカのいずれかが新しいプライマリノードとしてフェイルオーバーすることになります。[Next]をクリックします。

redis-multi-az03

詳細設定画面では、VPCやAZの配置、バックアップ、メンテナンスウィンドウを設定します。AZの配置は既定で複数AZを選択するようになっています。それぞれ確認し、[Next]をクリックします。

redis-multi-az04
redis-multi-az05

確認画面では各設定を確認し、[Launch Cache Cluste]をクリックすると、キャッシュクラスター作成が開始します。Redisの場合はmemcachedと異なり、キャッシュクラスタあたり1ノードで、レプリケーショングループという単位でレプリケーションおよびMulti-AZが機能します。

redis-multi-az06

クラスタ作成が完了したら、メニューの[Replication Groups]からレプリケーショングループを選択し、詳細画面下方の[Node Group Details]にある[Primary Endpoint]を確認します。通常、Redisクライアントからこのエンドポイントにアクセスします。他のレプリカノードはスタンバイではなくリードレプリカとして利用できるので、[Nodes]の[Read Endpoint]を利用することも可能です。

redis-multi-az07

ちなみに、Multi-AZを有効にしていると表右側のDemote/Promoteボタンを押すことができません。プライマリノードの手動切り替えは、一度Multi-AZをオフにし、レプリカノードでPromoteを実行してプライマリを切り替えたのち、再度Multi-AZを有効化します。

まとめ

ElastiCache(Redis) Multi-AZにより、冗長性のあるキャッシュクラスタが組めるようになりました!
RDSよりもパフォーマンスが必要とされるケースの、有効な選択肢のひとつとして活用ください!

参考資料