【ElastiCache】memcachedのMulti-AZ配置(ゾーンをまたいだノード分散配置)が来ました!!!

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

Multi-AZ・Single-AZについて表現を改めてました。
RDSなどのデータ同期を含むMulti-AZオプションとは多少仕組みが違うためです。

こんばんは、三井田です

Facebookを見てたら、速報を受信しました。
Amazon ElastiCache Flexible Node Placement

従来memcachedエンジンのElastiCacheクラスタは、ノードを全て同じゾーンに配置する仕様でした。

今回の機能拡張「Flexible Node Placement」で、ノードを複数ゾーンにまたがって分散配置できるようになりました。

早速 memcachedのノードを、Multi-AZに分散配置する手順を試してみました。

新規構築

ElastiCache (memcached)エンジンで新規構築する画面を紹介します。

Preference Zoneの選択肢が変わりました。

choose_az

Spread Nodes Across Zones

今回は、新しい選択肢の「Spread Nodes Across Zones」を選択します。

あらかじめ、Multi-AZでサブネットグループを作成しておき、それを選択します。

スクリーンショット 2014-07-31 2.41.50

あとは、Number of Nodesで指定した台数のノードを、AWSが適切にゾーンに分散して起動してくれます。

Specify Zones

従来のように特定のゾーンを選ぶには、「Specify Zones」でゾーンごとの台数を指定します。

スクリーンショット 2014-07-31 3.27.31

クラスタができました!

ノードが分散されました!台数を調整することで、最低限必要なキャッシュを分散配置し、ゾーン障害に耐える冗長構成とすることができます。 *1

スクリーンショット 2014-07-31 2.47.53

ノードの追加

ノード追加の際にもゾーンを選べるようになりました。

スクリーンショット 2014-07-31 2.47.53

Spread Nodes Across Zones

「Spread Nodes Across Zones」を選ぶと、AWSがよしなに分散してくれるようです。サブネットグループはMulti-AZで作成しておく必要があります。

スクリーンショット 2014-07-31 3.22.35

Specify Zones

「Specify Zones」を選ぶと、どのゾーンに何台配置するかを指定できます。

スクリーンショット 2014-07-31 3.01.37

まとめ

従来、ElastiCache (memcachedクラスタ)は、単一ゾーンにしか構成できなかったため、可用性を重視するとそれぞれのゾーンにクラスタを作成し、アプリケーションは、キャッシュの書込みは両方のクラスタに行い読み込みは自身のゾーンのクラスタから、というような工夫が必要でした。

今回の機能拡張では、ゾーン障害による全ノードへ不通といった状況は回避できるようになったと考えられます。

もちろん、従来通りひとつのゾーンに寄せて構成することもできます。

脚注

  1. 大規模なゾーン障害のときに、クラスタの状態がそれぞれのAZからどのように見えるのかは、今後検証しないといけませんね。「Spread Nodes Across Zones」の場合は、その辺も自動的にマネージしてくれると良いなと思ってます。