Category: Amazon ElastiCache


Amazon ElastiCache for Redis の リードレプリカの自動フェイルオーバのテスト

by AWS Japan Staff | on | in Amazon ElastiCache, データベース |

“信頼するが、確認する”

– ロナルド・レーガン米国大統領、1987

このコメントで、レーガン大統領は、核軍縮条約の哲学について、ロシアの諺を引用しました。DevOpsにも同じ考え方が当てはまります!

 

Amazon ElastiCache for Redisは、自動化されたフェイルオーバとリカバリを備え、高可用性を提供しています。ElastiCacheクラスタを作成したければ、 Redis Cluster モードを使用し、クラスタ内のシャード数を設定します。各シャードには、1つのプライマリノード(読み取りと書き込み用)と0〜5つのレプリカノード(読み取りとフェールオーバー保護用)があります。1つのクラスタは、レプリカがゼロ(1ノード)のシャードと同じくらい小さくても、5つのシャード(5つのレプリカ(合計90ノード))を持つことができます。

 

AWSでは障害が頻繁に発生することはありませんが、いずれのマシンでも障害は発生します。レプリカノードに障害が発生すると、障害が検出され、数分でノードが置き換えられます。

 

Redis Cluster では、プライマリノードに問題が起きた時に、Redis Cluster は障害を検知しレプリカノードを新しいシャードのプライマリとして昇格させます。このプロセスは大体30秒程で実施されます。問題の起きたノードは入れ替えられ、クラスタのレプリカノードとして復帰します。Redis ClusterとElstiCacheを、エンジンとして Redis 3.2.4 と Cluster モードを有効にすることによって使うことができます。

 

これを信じてください…しかし検証するべきです。

 

ElastiCacheのテストフェイルオーバのおかげで検証は簡単です。マネジメントコンソールかAWS CLIを使用し、ElasiCache クラスタのいずれかのノード障害をシミュレートする事ができます、そして、どのようなプロセスで貴方のアプリケーションが動くのかも見ることができます。マルチシャード、もしくはシングルシャードの環境でもテストは可能です。さらに古いRedis 2.8の環境でもテストは可能です。
コンソールまたはAWS CLIを使用して、ElastiCacheクラスタ内の任意のノードの障害をシミュレートし、自分のアプリケーションでフェールオーバープロセスがどのように機能するかを確認できます。マルチシャード環境とシングルシャード環境、さらに古いRedis 2.8ブランチ環境でもフェールオーバーをテストできます。コンソールでこれを行うには、クラスタとシャードを選択してノードビューを表示し、次にフェールオーバープライマリを選択します。マネジメントコンソールでテストを行う際には、クラスタとシャードを選択してNode Viewを確認し、次にFailover primaryを選択します。

 

使用には注意してください。どのようなクラスタでも同じように動きます。なぜならどのクラスタも開発環境、テスト、本番かをAWSが知るすべが無いためです。その本番のクラスタで実行しても良い事が確信していない限りは本番ノードでは障害を発生させないでください。

 

自動フェイルオーバのテストを試してみてください!

 

翻訳は桑野が担当しました。原文はこちら

発表: Amazon ElastiCache で Redis バックアップおよび復元を実現、クラスターのサイズ変更も可能に

by AWS Japan Staff | on | in Amazon ElastiCache |

インメモリキャッシュは、アプリケーション設計時またはソリューション構築時の大規模なパフォーマンス強化やコスト削減と同等に扱われます。ここで、サービスが 1 つのみの場合は、スケーリングする機能を強化しながら、継続的にクラウド内のインメモリキャッシュをより簡単にデプロイおよび活用できるようにします。冗談はさておき、この優れた機能を実現するクラウドサービスとは、もちろん Amazon ElastiCache です。Amazon ElastiCache は、パフォーマンスの高いインメモリデータストアまたはキャッシュをクラウドで実現する AWS マネージドサービスです。I/O 集約型または計算量の多いデータの低レイテンシー、安全性、アクセスを実現するための分散環境を作成、スケール、管理する簡単な方法を提供します。また、ElastiCache では、Amazon CloudWatch を通じて、キャッシュシステムのノードの主要なパフォーマンスメトリクスの可視性を強化すると同時に、障害が発生したノードを検出して置換することで、インメモリデータ構造サーバやキャッシュのインフラストラクチャを管理するオーバーヘッドを抑えることができます。この優れたサービスで、Redis バックアップおよび復元とクラスターのサイズ変更を実現しました。

Amazon ElastiCache に精通している方であれば、ElastiCache で次の 2 つのインメモリキー値エンジンがサポートされていることをご存じでしょう。

  • Memcached: パフォーマンスの高いオープンソースの分散メモリオブジェクトキャッシュシステム。データベースの負荷を軽減して動的なウェブアプリケーションを高速化することを当初の目的として 2003 年に開発されました。
  • Redis: オープンソースのインメモリデータ構造ストア。Redis クラスターを使用して、組み込みレプリケーション、アトミックオペレーションサポート、さまざまなレベルのオンディスクの永続性、高可用性を実現しながら、キャッシュ、メッセージング、データベースのブローカーとして開発され、2009 年に発表されました。

2016 年 10 月、Redis 3.2.4 使用の Redis クラスターがサポートされるようになり、ElastiCache Redis のユーザーは Redis クラスターを活用できるだけでなく、次のことが行えるようになりました。

  • クラスターレベルのバックアップの作成
  • バックアップ内のクラスターのシャード単位でのスナップショットの生成
  • 最大 15 シャードの間で 3.5TiB のデータのワークロードのスケール

ElastiCache や関連する機能を活用した Redis の使用については、「Amazon ElastiCache for Redis」の製品ページを参照してください。Redis バックアップおよび復元とクラスターのサイズ変更機能が発表され、ElastiCache は、マネージド型の Redis クラスター経験に確実に移行できるように Redis のサポートをますます強化しています。この機能には、ElastiCache と Redis ユーザーのどちらにとっても、次のような利点があります。

  • シャード数やスロット配置が異なる Redis クラスターにバックアップを復元可能
  • ユーザーによる Redis ワークロードのサイズ変更が可能
  • シャードされた Redis クラスターを作成する入力として、Redis データベースファイル (RDB) スナップショットを使用可能
  • シャードされた Redis クラスターの作成に必要なデータ入力として、EC2 実装 (Redis クラスターと単一シャード Redis の両方) で Redis のスナップショットを使用可能

これらのタスクを実現するために、ElastiCache は、バックアップの各スナップショット間で Redis キー空間を解析し、要求されたシャードやハッシュスロットの数に応じて、新しいクラスター内にキーを再分散します。RDB スナップショットを作成して、S3 に格納し、ElastiCache で希望のシャードおよびスナップファイルの数を指定します。Redis データストアを Redis クラスターに格納する面倒な作業も ElastiCache で行うことができます。中には、ElastiCache の「Redis バックアップおよび復元とクラスターのサイズ変更」機能を本当に簡単に活用できるのか、と考える方がいるかもしれません。検証している時間はありません。AWS マネジメントコンソールに移動し、ElastiCache を用いて外部の RDB スナップショットを新しいクラスターで復元し、新たにリリースされた拡張を使用します。まず、AWS マネジメントコンソールで、「Amazon S3 コンソール」に移動します。ElastiCache への外部の Redis スナップショットの復元をテストするために、AWS の一部ピアから受け取った Redis .rdb スナップショットファイルがいくつかあります。ElastiCache Redis クラスターの入力としてスナップショットにアクセスできるように、これらのファイルを Amazon S3 に配置します。

S3 コンソールで、テストおよび開発の目的で作成した S3 バケット、aws-blog-tew-posts に移動します。提供された .rdb スナップショットファイルをこの S3 バケットにアップロードします。

S3 バケットの名前は DNS 標準に準拠しなければなりません。DNS 標準に準拠するために、バケット名は 3 文字以上で、小文字の英文字、数字、ハイフンのみを使用し、先頭と末尾の文字は小文字の英文字または数字でなければなりません。当たり前かもしれませんが、バケット名は IP アドレスフォーマットにすることはできません。S3 バケットの制約の詳細については、「こちら」を参照してください。.rdb ファイルが正常に aws-blog-tew-posts バケットにアップロードされたら、これらのバックアップファイルへの S3 パスをメモします。上記のファイルの場合、パスは、aws-blog-tew-posts/dump_1.rdb または aws-blog-tew-posts/dump_10.rdb になります。ファイルをフォルダに配置する場合は、フォルダ名をこのパスに含む必要があります。例: thebucketname/thefoldername/thefilename

ElastiCache からこれらのファイルにアクセスするには、該当サービスに各ファイルの読み取り権限があることを確認します。アクセス権限を付与するには、被付与者を対象リージョンの正規化 ID として割り当てることで各 .rdb ファイルの読み取り権限をアップデートしてから、開く/ダウンロードのアクセス権限をこのユーザーに付与します。中国 (北京)、AWS GovCloud (米国) を除くすべてのリージョンの正規化 ID は次のとおりです。

540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

[Save] ボタンをクリックすると、ElastiCache Redis クラスターの入力としてこれらのファイルを使用するように設定されます。

次に、ElastiCache コンソールに移動します。ここで、新たに ElastiCache Redis クラスターを作成し、このクラスターを S3 バケット内のファイルに配置された RDB スナップショットのいずれかのデータに追加します。dump_1.rdb スナップショットファイルを選択して、この新しいクラスターを追加するデータ入力として使用します。今年 10 月に Redis Cluster 3.2.4 のサポートによって追加された ElastiCache Redis 機能や、クラスターのサイズ変更に対応した新しいバックアップおよび復元機能について説明するため、Redis クラスターを新たに作成し、クラスターモードが有効であることを確認します。この時点で、Redis (クラスターモードが有効) クラスターを使用して作成されたバックアップから Redis (クラスターモードが無効) クラスターに復元することはできません。まず、ElastiCache コンソールダッシュボードの [今すぐ始める] ボタン、またはコンソールビューの [作成] ボタンをクリックします。

[Amazon ElastiCache クラスターの作成] ダイアログウィンドウで、キャッシュの [Redis] を選択し、[有効なクラスターモード (スケールアウト)] のチェックボックスがオンになっていることを確認します。新しいクラスターの名前は、tew-rediscluster となり、クラスターモードを有効にしているため、ElastiCache Redis のエンジンバージョンは、3.2.4 です。このクラスターの Redis ポートは、デフォルトの 6379 のままにしておきます。

ElastiCache 拡張の Redis バックアップおよび復元機能の主な利点は、元々バックファイルで使用されていた数と異なるシャード数で新しいクラスターを構築することができるクラスターのサイズ変更機能です。新しい Redis クラスターを構成するために、唯一の RDB スナップショットファイルである dump_1.rdb を使用します。このファイルは、シャードが 1 つのみの小さな Redis インスタンスバックアップです。ただし、新しい tew-rediscluster を作成する際、1 つのシャードに 2 つのレプリカを含む 3 つのシャードを選択しました。さらに、RDB スナップショットより、元のインスタンスとは異なるサイズの新しいクラスターのノードタイプを指定することもできます。前述の通り、dump_1.rdb は、以下に示した tew-rediscluster 向けに選択したノードタイプより大幅に小さい Redis インスタンスのバックアップです。

他にも、ElastiCache Redis クラスターを作成するために必要なオプションやデータ入力がありますが、このブログ投稿には記載していません。ただし、ElastiCache Redis クラスターの作成に必要な各ステップを行う場合は、『クラスターを起動する』の「AWS ElastiCache の開始」のドキュメントで詳細を確認してください。ElastiCache Redis クラスターの作成に必要な情報をすべて入力したら、ElastiCache で S3 バケットのファイル場所を指定して、クラスターに .rdb ファイルを追加する方法を指定します。作成ダイアログの「クラスターへのデータのインポート」セクションにおいて、「シードする RDB ファイルの S3 の場所」テキストボックスdump_1.rdb への S3 パスを入力します。S3 ファイルパスの命名法は、Bucket/Folder/ObjectName が適用されるため、S3 内の RDB ファイルへのパスとして、aws-blog-tew-posts/dump_1.rdb を入力します。最後に、[作成] ボタンをクリックします。

これで完了です。ElastiCache で新しい Redis クラスターを作成できるようになりました。間もなくすると、新しい Amazon ElastiCache Redis クラスターが ElastiCache コンソールで選択できるようになります。外部の RDB スナップショットファイルより復元されたデータでこのクラスターを作成することができました。

外部の RDB スナップショットを用いて ElastiCache Redis クラスターを作成する方法を説明しましたが、既存の ElastiCache Redis クラスターのバックアップを使用してバックアップを作成または復元することもできます。新たにリリースされた本機能の詳細をお知りになりたい場合は、『Amazon ElastiCache User Guide』の「バックアップからの復元とクラスターのサイズ変更」を参照してください。Amazon ElastiCache を使用したアプリケーションのパフォーマンス強化の詳細については、「AWS Amazon ElastiCache」の製品の詳細、リソース、お客様の声を参照してください。

Tara

Amazon ElastiCache for Redisアップデート – Sharded Clusterの追加やエンジンバージョンを更新 –

by AWS Japan Staff | on | in Amazon ElastiCache |

多くのAWSのお客様に高速で、インメモリデータストアとして Amazon ElastiCacheをご利用頂いています。

2013年にAmazon ElastiCache for Redisリリースし、スナップショットのS3へのエクスポート機能エンジンバージョンの更新スケールアップ機能タグMulti-AZで自動フェイルオーバー機能を数年で追加してきました。

本日、新機能をElastiCache for Redisへ追加しました。詳細は以下の通りです。

  • Sharded Clusterサポート – 3.5 TiB以上をインメモリデータとして扱う事が出来るsharded clusterを作成可能になりました
  • コンソールの改善 – 以前より簡単にクラスタの作成やメンテナンスが行えるようになりました
  • エンジンアップデート – Redis 3.2の機能をご利用頂けるようになりました
  • Geospatial Data – 地理空間データの処理を行え、利用可能になりました

更に詳細を見ていきましょう!

 

Sharded Clusterサポート / 新コンソール

今まではElastiCache for Redisは1つのプライマリノードと5つまでのread replicaを含んだクラスタに対応していました。この構成では、メモリサイズがクラスタあたり237 GiBに制限されていました。

1クラスタで15シャードまで作成出来るようになったことで、クラスタ全体のメモリ容量を拡大することが可能になり、最大3.5 TiBまでのデータをインメモリデータとして格納出来ます。それぞれのシャードは5つまでread replicaを作成可能で、1秒あたり2,000万読み込み、450万書き込みの性能を提供します。

シャードモデルは、read replicaと合わせて利用することでクラスタ全体の可用性とパフォーマンスを向上します。データは複数のノードに分散され、read replicaは高速で自動的なフェイルオーバーをプライマリノードに障害が起こった際に提供します。

シャードモデルの利点を活かすために、cluster対応のRedisクライアントを使う必要があります。クライアントは、16,384個のスロットをシャード毎に均等に分散されたハッシュテーブルとして扱い、保存するデータを各シャードにマップします。

ElastiCache for Redisはクラスタ全体を1つのバックアップとリストア用途のユニットとして扱います。そのため、各シャード毎のバックアップを管理したり考えたりする必要がありません。

コンソールの機能が改善され、スケールアウトクラスタを簡単に作成可能になりました。(Redisエンジンを選択した後にCluster Mode enabled (Scale Out)にチェックを入れている点を注目して下さい)

ec_redis_create_so_cluster

新しい便利なメニューで適切なノードタイプを選択を手助けしてくれます

ec_redis_pick_your_node_not_your_nose

sharded clusterは、AWS Command Line Interface (CLI)AWS Tools for Windows PowerShellElastiCache APIAWS CloudFormationテンプレートからも作成可能です。

 

エンジンアップデート

Amazon ElastiCache for RedisはRedis3.2に対応しました。このバージョンは3つの興味深い機能を持っています。

  • Enforced Write Consistency – 新しいWAITコマンドはそれ以前の全ての書き込みコマンドに対して、プライマリノードと設定された数のread replicaから確認応答が返ってくるまで呼び出し元をブロックします。この変更はRedisを強い一貫性を持ったデータストアにするものではありません。しかし、新しく昇格したread replicaが直前にプライマリノードに書き込まれた出たデータを保持している可能性を向上します
  • SPOP with COUNTSPOPコマンドはsetからランダムにエレメントを削除してそれを返却します。1つ以上のエレメントを1回でリクエスト出来るようになりました
  • Bitfields – BitfieldsはRedis stringとして保存されていた小さい整数のコレクションをビットマップとして保存することでメモリ効率を良くする方法です。BITFIELDコマンドを使うことで、 (GET) や(SET, increment, decrement) をbyteアライメントや文字境界を気にすること無く扱うことが出来るようになります

私達のRedisの実装は、サーバプロセスをフォークする事なくスナップショットを取得する機能を持っています。過負荷状態では標準のフォークを利用したスナップショットはスワップによるパフォーマンスの低下を引き起こす可能性があります。私達の実装ではメモリ利用率が50%を越えていたとしても動作をし、問題を解決します。この機能は少し低速なため、必要になった場合にこの機能を利用します。

その他にも私達の実装では新しいread replicaがプライマリノードと同期する時のパフォーマンスを向上しています。これと似た性能向上を新しく昇格したプライマリノードと既存のread replicaが同期する際にも実装しています。

今までお伝えした通り、私達のエンジンはオープンソースバージョンのものと互換性があり、皆様のアプリケーションに変更は必要ありません。

 

Geospatial Data

地理空間データ(緯度・経度)を保存したりクエリ出来るようになりました。以下が関連するコマンドです。

  • GEOADD – 地理空間データを保存
  • GEODIST – 2地点間の距離を取得
  • GEOHASHGeohash (geocoding)を取得
  • GEOPOS – keyでしてされた地点のアイテムを取得
  • GEORADIUS – 指定された地点の半径内のアイテムを取得
  • GEORADIUSBYMEMBER – 他のアイテムの半径内に収まるアイテムを取得

 

今日からご利用頂けます

Sharded clusterを含む今回ご紹介した全ての機能は全てのAWSリージョン今日からご利用頂けます。

Jeff; (翻訳は星野が担当しました。原文はこちら)

Amazon ElastiCache アップデート – RedisのSnapshotをAmazon S3へエクスポートする事が可能になりました

by AWS Japan Staff | on | in Amazon ElastiCache |

Amazon ElastiCache はポピュラーなインメモリキャッシュエンジンであるMemcachedRedisをサポートしています。
Memcachedは低速なディスクベースのデータベース等の結果を高速にキャッシュする事ができ、Redisは永続的にデータを保存できるデータストアとして高速に動作します。Redisはレプリケーションやフェイルオーバなどをサポートすることでの高可用性の確保と、複雑なデータ構造での保存を標準サポートしています。

 

本日Redisユーザのみなさんに、非常に興味深く、注目すべき新しい機能をリリースしました。まず、実行されているRedis キャッシュクラスタのスナップショットを作成する事は既に可能です。スナップショットは永続的なバックアップや、新しいキャッシュクラスタを作成するために使用することができます。おさらいとしてキャッシュクラスタのスナップショットを作成する方法は次のとおりです:

RedisスナップショットがS3バケットへとエクスポートできるようになりました。S3バケットはスナップショットと同一リージョンに存在し、ElastiCacheに適切なIAMの権限(List、Upload/Delete、View 権限)を付与する必要があります。この機能はいくつかの用途を想定しています:

 

ディザスタリカバリ – スナップショットを他の場所にコピーし保管する

分析 – S3上のスナップショットのデータから使用状況等を分析する

種データ配布 – 別のリージョンにスナップショットを元にした新しいRedisキャッシュクラスタを構築する

スナップショットのエクスポート
スナップショットをエクスポートするのは簡単です、スナップショットを選択し、Copy Snapshot をクリックしてください:

バケットのアクセス許可を確認してください。(詳細はExporting Your Snapshotを参照ください):

次に、新しくエクスポートするスナップショット名と希望する保存先のS3バケット名を入力してください:

ElastiCache はスナップショットをエクスポートし、指定したS3バケットにスナップショットを置きます:

ファイルは標準のRedisのRDBファイルとして保存され、使用することができます。

また、アプリケーション等のコードや、コマンドラインからも同様の作業を実行することができます。対象のS3バケットを指定し、プログラムコードから呼び出す場合はCopySnapshot、コマンドラインからはcopy-snapshotコマンドを使用してください。

この機能は既に利用可能で、本日から使い始めることができます!エクスポートには料金はかからず、通常のS3ストレージ料金だけで使うことができます。

— Jeff;

翻訳はSA桑野(@kuwa_tw)が担当しました。原文はこちら

 

 

ElastiCache for Redis の更新 – エンジンのアップグレードとスケールアップ

by AWS Japan Staff | on | in Amazon ElastiCache |

Amazon ElastiCache は、クラウド内のインメモリデータベースのデプロイ、運用、スケールの実行を簡単にするサービスです。ご存知のとおり、ElastiCache では Memcached エンジンと Redis エンジンがサポートされています。

Redis 向けの強化
本日、Redis ベースの ElastiCache クラスターがより詳細に制御できるようになる、ElastiCache の更新をローンチしました。You can now scale up to a larger node type while 保存された情報を ElastiCache に保持したまま (ベストエフォートベース)、より大きなノードタイプにスケールアップできるようになりました。ElastiCache for Redis のエンジンバージョンのアップグレードはこれまでずっと可能でしたが、保存された情報を保ったままでこれを実行できるようになりました。これらの変更は、両方とも、即時適用またはクラスターのメンテナンス期間の適用が実行できます。

ElastiCache for Redis のスケールアップとエンジンアップグレードのために、見えないところでさまざまな戦略が活用されています。スケーリングは Redis レプリケーションをベースにしています。エンジンのアップグレードでは、マルチ AZ がオフになったときにまずフォアグラウンドのスナップショットが使用され (SAVE)、マルチ AZ がオンのときにレプリケーションに続いて DNS スイッチが実行されます。

大きなノードタイプにスケールアップするには、AWS マネジメントコンソールで [Cache Cluster] を選択し、[Modify] をクリックします。新しい [Node Type] を選択し、変更を即時適用するかどうかを決定してから、[Modify] をクリックします。

同様に、新しいバージョンの Redis エンジンにアップグレードするには、新しいバージョンを選択してから [Modify] をクリックします。

この機会に、Redis のバージョン 2.8.24 と互換性のあるエンジンにアップグレードすることをお勧めします。このバージョンには Redis の安定性と堅牢性を高めるための多数の修正と強化が実施されています (その一部は ElastiCache チームによるものであり、詳細については「最新情報」を参照してください)。

これまで同様、同じオペレーションを ElastiCache API によって実行することもできます。 PHP 中での簡単な例を示します (AWS SDK for PHP による)。

PHP
// Scale to larger node size
$res = $client->modifyCacheCluster(['CacheNodeType' => 'cache.r3.4xlarge', 
                                    'ApplyImmediately' => true]);

// Upgrade engine version
$res = $client->modifyCacheCluster(['EngineVersion' => '2.8.24',
                                    'ApplyImmediately' => true]);

// Do both at once
$res = $client->modifyCacheCluster(['CacheNodeType' => 'cache.r3.4xlarge', 
                                    'EngineVersion' => '2.8.24', 
                                    'ApplyImmediately' => true]);

これら 3 つの例すべてで、ApplyImmediately パラメーターは変更がメンテナンス期間ではなく、直ちに適用されることを示しています。

詳細については、Scaling Your Redis Cluster をご覧ください。

サービス開始
この機能は今すぐ利用できます。


Jeff