Amazon Web Services ブログ
発表: Amazon ElastiCache で Redis バックアップおよび復元を実現、クラスターのサイズ変更も可能に
インメモリキャッシュは、アプリケーション設計時またはソリューション構築時の大規模なパフォーマンス強化やコスト削減と同等に扱われます。ここで、サービスが 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