雑多なインフラエンジニア日記

技術ブログでっす~

ElastiCacheについてメモ

メモ。
redisのほうが高機能ですね。

■全般

EC2上にmemcachedを構築するより、セットアップが楽、高可用性、
CloudWacth使用可なので便利。

RDSと同様、OSにログインは出来ない。

最近M3のインスタンスタイプが提供された。現在はmemcachedしか対応していない。

memcachedとredisだと、同じインスタンスタイプでも使えるメモリ量が異なる。
(redisのうほうが少ない)

コネクション数やキャッシュが溢れたなどはCloudWactchで見れる。(+SNSも)

VPC対応済み。VPC環境だとPublicIPは付与されない。

memcachedは認証の仕組みがない。(redisはある)

EC2-ClassicはCacheSG、VPCは通常通りVPC SGとなる。

パッチ適用時は再起動を伴うこともある。

ElastiCacheが停止するとDBへの負荷が上がる可能性があるので留意した設計にする。
(L7ヘルスチェックやSNS通知など)

基本的にはパラメータは変更する必要はない。

INもOUTもデータ転送での料金は発生しない。異なるAZ間は$0.01/GBかかる。

リザーブド、オンデマンドあり。EC2の場合はAZまで選ぶがElastiCacheは不要。
キャッシュエンジン指定は必要。


■memcahedエンジン

認証などのセキュリティ機能なし、レプリなどもなし。

CaccheClusterは、AZ跨げない。

AutoDiscovery for memcachedは、ConfigurationEndPointに接続するので、キャッシュノード
を意識する必要はない。
ただし、AWSが配布している専用ライブラリが必要、ライブラリはキャッシュノードの
接続情報を返すだけ。(なので、更新はキャッシュノード指定と推測される)

Evictions(キャッシュアウト回数)、SwapUsageが発生しだしたらスケールアップ、アウト
を検討する。


■redisエンジン

高機能なデータ構造、レプリあり。

S3上にスナップショット(RDB)を置いてロードができる。ElastiCache起動時にバケット名
など指定。ただし、データ移行元と移行先のElastiCacheのメモリ量に気をつけること。

CONFIG、SLAVEOFFコマンドは使えない。

パスワード設定は出来ないので、SGで担保する。

レプリは非同期、リードレプリカとなる。

AZを跨いでレプリ構成が組める。(AZ1:マスター、レプリカ、AZ2:レプリカなど)

レプリカをマスターに昇格することは可能。数分間ダウンは発生する。Endpointは引き継がれるのでアプリ側は接続先を意識する必要なし。

リードレプリカなし構成でノード障害が発生すると、データはロストする。
リードレプリカあり構成でプライマリ障害が発生すると、書き込みは不可、F/O直前までの
データは保全。

本家のSentinel(HA)と機能は異なる。

AOFを有効にすると、受信したコマンドをローカルストレージのAOFに記録されるので、
reboot時に復元可能。

ノード障害時は復元できないことがある?

Redisはシングルスレッドで動作するので1コア。4コアの場合、100%/4 で見る。


クラスタ

libcached、Twemproxyライブラリをアプリ側に実装できる?

メンテの事前通知はなく、フォーラム。
クラスタの場合は順次アップデートされるので全台停止はない。


■その他

キャッシュノードはクラッシュ時は自動で復旧する??
→ memcachedは自動復旧。redisも同じ。ただしredisのレプリ時は挙動が違う。

キャッシュのバックアップをS3に保存すること可能?
→ redisは自力で可能。今後リリース予定あり。


だいぶ書き殴りました・・・

以上です。