Amazon Web Services ブログ

Redis 向け Amazon ElastiCache グローバルデータストアが利用可能に

インメモリデータストアは、アプリケーションのスケーラビリティのために広く使用されており、開発者は、頻繁にアクセスされる (揮発性または永続的) データを保存することの恩恵を長年にわたって享受しています。Redis のようなシステムは、データベースとバックエンドを着信トラフィックから疎結合化し、本来ならそれらに到達するはずだったほとんどのトラフィックを排し、ユーザーのアプリケーションレイテンシーを削減するのに役立ちます。

これらのサーバーを管理することが重要なタスクであることは明白で、何が起きようとも、それらを維持し、実行し続けるために細心の注意を払わなければなりません。以前の業務において、私のチームは、物理キャッシュサーバーのクラスターをホスティングスイート間で移動する必要がありました。1 つずつ外部バッテリーに接続し、外部電源プラグを抜き、それらをラックから取り出し、オフィス用の台車 (!) で他のスイートまで運び、再びそれらをラックに入れていたのです! サービスを中断することなく実行できましたが、これが完了すると私たち全員は安堵のため息をつきました。高トラフィックのプラットフォームでキャッシュデータを失うと、大変なことになるからです。そのことを考えれば羨ましい限りです。幸いなことに、クラウドインフラストラクチャはより柔軟です! インシデントが発生した場合のサービスの中断を最小限に抑えるために、Memcached および Redis のマネージドインメモリデータストアである Amazon ElastiCache に、クラスターモード、自動フェールオーバーを備えたマルチAZなど、多くの高可用性機能を追加しました。

Redis は多くの場合、低レイテンシートラフィックをグローバルユーザーに提供するために使用されることから、お客様は、AWS リージョンをまたいで Amazon ElastiCache クラスターをレプリケートできるようになることを望んでいます。当社はこれらに耳を傾け、解決に向けて動きました。そして本日、このレプリケーション機能が Redis クラスターで利用可能になったことをお知らせできることを大変嬉しく思います。

Amazon ElastiCache Global Datastore For Redis の紹介
簡単に言えば、Amazon ElastiCache Global Datastore for Redis を使用すると、1 つのリージョンのクラスターを最大 2 つの他のリージョンのクラスターに複製できます。お客様は、通常、次の目的でこれを行います。

  • ネットワークレイテンシーを削減し、アプリケーションの応答性を向上させるために、キャッシュされたデータをユーザーの近くに置く。
  • リージョンの一部または全部が完全に利用できない場合に備えた災害復旧機能を構築する。

グローバルデータストアのセットアップは非常に簡単です。最初に、アプリケーションから書き込みを受信するプライマリクラスターとしてのクラスターを選択します。これは、新しいクラスター、または Redis 5.0.6 以降を実行する既存のクラスターのいずれかにすることができます。次に、他のリージョンにプライマリから更新を受信する最大 2 つのセカンダリクラスターを追加します。

このセットアップは、単一ノードクラスターを除くすべての Redis 設定で使用できます。もちろん、単一ノードクラスターをレプリケーショングループクラスターに変換し、それをプライマリクラスターとして使用できます。

最後に重要なことですが、グローバルデータストアの一部であるクラスターは、通常どおりに変更およびサイズ変更できます (ノードの追加または削除、ノードタイプの変更、シャードの追加または削除、レプリカノードの追加または削除)。

簡単なデモを見てみましょう。

リージョンをまたいで Redis クラスターを複製する
3 クラスターのグローバルデータストアをゼロから構築する方法を示します。プライマリクラスターは us-east-1 リージョンに配置され、2 つのセカンダリクラスターは us-west-1 および us-west-2 リージョンに配置されます。簡単にするために、すべてのクラスターに同じデフォルト設定 (3 つの cache.r5.large ノード、マルチ AZ、1 つのシャード) を使用します。

AWS コンソールに移動して、[Global Datastore] をクリックし、次に [Create] をクリックしてグローバルデータストアを作成します。データストアをサポートする新しいクラスターを作成するか、既存のクラスターを使用するかを尋ねられます。前者にすることを決め、global-ds-1-useast1 という名前のクラスターを作成します。

[Next] をクリックし、us-west-1 リージョンでホストされているセカンダリクラスターの詳細を入力します。global-ds-1-us-west1 という想像力に欠ける名前を付けます。

次に、global-ds-1-uswest2 という名前の us-west-2 リージョンに別のセカンダリクラスターを追加します。[Global Datastore] に移動し、[Add Region] をクリックして、クラスターの詳細を入力します。

しばらくして、3 つのクラスターすべてが起動し、グローバルデータストアに関連付けられました。

us-east-1 リージョンでホストされている Amazon Elastic Compute Cloud (EC2) インスタンスで実行されている redis-cli クライアントを使用して、クラスターエンドポイントにすばやく接続し、実際に動作することを確認できます。

[us-east-1-instance] $ redis-cli -h $US_EAST_1_CLUSTER_READWRITE
> ping
PONG
> set paris france
OK
> set berlin germany
OK
> set london uk
OK
> keys *
1) "london"
2) "berlin"
3) "paris"
> get paris
"france"

これでよいでしょう。us-west-1 リージョンでホストされている EC2 インスタンスを使用して、プライマリクラスターに保存したデータが us-west-1 セカンダリクラスターに複製されていることを確認しましょう。

[us-west-1-instance] $ redis-cli -h $US_WEST_1_CLUSTER_READONLY
> keys *
1) "london"
2) "berlin"
3) "paris"
> get paris
"france"

よくできています。それでは、プライマリクラスターにさらにデータを追加しましょう。

> hset Parsifal composer "Richard Wagner" date 1882 acts 3 language "German"
> hset DonGiovanni composer "W.A.Mozart" date 1787 acts 2 language "Italian"
> hset Tosca composer "Giacomo Puccini" date 1900 acts 3 language "Italian"

そして、セカンダリクラスターで可能な限り迅速に確認します。

> keys *
1) "DonGiovanni"
2) "london"
3) "berlin"
4) "Parsifal"
5) "Tosca"
6) "paris"
> hget Parsifal composer
"Richard Wagner"

迅速にできました。別の端末に切り替えてコマンドを実行するまでに、新しいデータはすでにそこに存在していました。リージョンをまたいだトラフィックの一般的なネットワークレイテンシーは、リージョンに応じて 60 ミリ秒から 200 ミリ秒の範囲であるため、これはそれほど驚くことではありません。

さて、us-east-1 でホストされているプライマリクラスターでエラーが発生した場合はどうなるでしょうか? その場合は、セカンダリクラスターの 1 つを簡単に昇格させて、完全な読み取り/書き込み機能を持たせることができます。

適切な方法として、us-east-1 クラスターもグローバルデータストアから削除します。これが完了すると、グローバルデータストアは次のようになります。

次に、us-west-1 リージョンで EC2 インスタンスを使用し、クラスターの読み取り/書き込みエンドポイントに接続して、さらにデータを追加します。

[us-west-1-instance] $ redis-cli -h $US_WEST_1_CLUSTER_READWRITE
> hset Lohengrin composer "Richard Wagner" date 1850 acts 3 language "German"

そして、それが us-west-2 クラスターに複製されていることを確認します。

[us-west-2-instance] $ redis-cli -h $US_WEST_2_CLUSTER_READONLY
> hgetall Lohengrin
1) "composer"
2) "Richard Wagner"
3) "date"
4) "1850"
5) "acts"
6) "3"
7) "language"
8) "German"

すべてあります。グローバルデータストアにより、Amazon ElastiCache データをリージョンをまたいで簡単に複製できます!

今すぐご利用いただけます!
この新しいグローバルデータストア機能は、米国東部 (バージニア北部)米国東部 (オハイオ)米国西部 (北カリフォルニア)米国西部 (オレゴン)アジアパシフィック (ソウル)アジアパシフィック (シドニー)アジアパシフィック (シンガポール)アジアパシフィック (東京)欧州 (フランクフルト)欧州 (アイルランド)欧州 (ロンドン) で本日から利用可能です。AWS では皆さんからのフィードバックをお待ちしています。Amazon ElastiCache の AWS フォーラム、または通常の AWS サポート連絡先からご意見をお寄せください。

Julien;