4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ElastiCache for Redisをイチから構築

Last updated at Posted at 2020-10-29

経緯

業務でAWSを触る機会が増えてきたので、インプットの備忘録として、
概要と簡単な設計での構築手順を記載します!

##ElastiCacheとは

分散インメモリキャッシュサービスの構築管理及び、
スケーリングを容易に実施することができるサービスです。
AWSが提唱している11のベストプラックティス一つのキャッシュの活用と最適なデータベースの選択に影響します。

1.インメモリとは
データをメモリ上で動作させる仕組みで、ディスク上で動作させる場合と比較して、
高速に処理をすることが可能

2.キャッシュとは
一度アクセスしたデータを保持することで、次回アクセス時に高速にアクセス
できる様にする仕組み

インメモリキャッシュとは
1 + 2 より、メモリを活用して高速にキャシュへのアクセスを可能にした、
データベースの仕組みになります。

下記の様に2回目以降のアクセスをキャッシュからデータを取得することにより
高速にアクセスが可能になる。
またDBのアクセス負荷を軽減することで、可用性を高めることができる。

png.png

ElastiCacheの特徴

  • キャッシュクラスタを数クリックで起動すること
  • フルマネージド型でモニタリング、自動障害検出、復旧、拡張
    バックアップに対応して、高可用性を実現している。
  • スケーラブルで変化するアプリケーションニーズに応じて、スケールイン、スケールアウト、スケールアップできる。
  • 高スループットかつ低レイテンシーなインメモリデータストアからデータを取得して、大量のデータを扱うアプリケーションを構築したり、既存のアプリケーションのパフォーマンスを改善したりすることが可能
  • 2種類のオープンソースのmemcahed,redisから選択することができる。

RedisとMemocahedの違い

ざっくり理解するなら、シンプルでスケーラブルなキャッシュレイヤーを構築する場合は、
Memocached を利用する。それ以外はRedisのを利用する。

共通点
・ 高速に値をRead/Writeできるインメモリキャッシュ型のDB

相違点
redis
・ シングルスレッドで動作
・ スナップショット機能がある
・ データを永続化できる。
・ インメモリデータセットのソート、ランク付けが必要
・ pub/sub機能を利用することができる。
・ 位置情報クエリを利用することができる

Memoched
・ マルチスレッドで動作
・ スナップショット機能がない
・ データを永続化できない
・ フェイルオーバーや復元ができない
・ 需要の増減に応じて、スケールアウト、スケールインが可能

利用事例

アプリケーションでデータの即時反映が必要なケースなどに活用していく。
具体的な基本的な利用パターンが下記のようになります。

・ よくある利用事例
クライアントからのアクセスに対して、RDSとElasticCacheにアクセスをわけ、DBの負荷軽減と高速アクセスを行う。
また、S3からデータをElasticCacheに取り込むことで、高速な表示を実現することができる。
png.png

・ pub/subを利用したイベント処理の利用事例(イベントの処理用として)
RedisのPublish(パブリッシュ)とSubcribe(サブスクライブ)のを利用して、イベント処理を行う。
上記の機能を利用し「イベントを起こす側」と「イベント処理を行う側」を分離することができる。
具体的な利用例としては、JSのイベント処理で、onclickではなく、addEventListenerして複数イベントをセットすることなどが挙げられる。
png.png

構築手順(ElasticCach for Redis)

ElasticCach簡易的に構築していく。EC2とRDSの説明については割愛

1.ElasticCachのRedisクラスターを作成する
2.EC2インスタンスからRedisに接続してデータ登録

1.今すぐ始めるをクリック

_2020-10-23_10.07.47.png

2.Redisの設定手順

※利用したことがなければ、無料枠を使用できるので、料金はかからない。
2-1 今回はRedisを選択し、クラスターモード(並列処理を行い高性能にする)を選択する
2-2 エンジンバージョンから、ポート、パラメーターグループはデフォルトを選択
2-3 t2microの最小サイズを選択、アルファベットは世代、数字がメモリサイズを表してる
2-4 シャードの数、シャードないのレプリカ数を決めて、性能を調整する。今回はデフォルト
2-5 複数のAZ(アベイラビリティーゾーン)を設定し、冗長性の確保できる。
今回はサブネットグループを新規作成して、publicの1aと1cに配置する。
2-6 詳細の設定でより詳細にredisの設定をすることができる。
今回は設定を変更せず、デフォルトで作成する
  ・ スロット及びキースペース 処理の分散方法を指定。均等分散が通常
  ・ アベイラビリティーゾーンの配置 AZごとにシャードを分散配置できる
  ・ セキュリティ SG、暗号化の設定
  ・ クラスターへのデータのインポート S3からのデータインポート  
2-7 起動をクリックし、redisの構築完了

・クラスタとは
シャードをまとめる論理グループ。クラスターモードを有効にするとクラスタ1つに対し、複数のシャードを持つことができる。
無効の場合はクラスタ1つに対し、シャードが1つ

・シャードとは
ノードをまとめるグループ。2つのノードを使用することで、レプリケーションを作成できる。
シャードはプライマリーノード(read/write)を1つ、セカンダリーノード(read)を5つ持つことができる。

・ノードとは
ElasticCachの最小単位

クラスタが最大単位でその中にシャード、シャードの中にノードがあるイメージ
クラスタ > シャード > ノード

_2020-10-24_10.09.59.png

_2020-10-24_10.35.47.png

(参考)Memcachedの方が選択項目が少なく、単純なキャッシングなどシンプルなケーズで利用される。

_2020-10-23_10.15.01.png

EC2作成

同じサブネットグループ内に作成する。
今回、EC2の作成は省略します。

SG(セキュリティグループ)の設定

EC2からredisへエンドポイントを使用してアクセスするため、EC2に割当てられている
セキュリティグループのインバウンドルールにredisのポート番号を追加する。
_2020-10-24_16.12.41.png

EC2にログインして、疎通確認

ec2にログインし、redisクライアントをインストール。
エンドポイントからredisにアクセスし、テストデータの登録を行い確認する。

#ec2にssh接続
ssh -i [pemキー] ec2-user@[publicIP]

#yumのアップデート
yum update

#管理者権限にログイン
sudo su

#Redisクライアントのインストール
amazon-linux-extras install redis5.0

#Redisへの接続
redis-cli -c -h [エンドポイント名をコピー] -p 6379

#データを登録する
set test hogehoge

#データを取得する
get test

最後に

ElastiCacheを削除し忘れて、無料枠を超えると高額になってしまうので、
勉強用に作成する場合は、疎通確認後削除をした方が良いかと思います。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?