ガハハ

学生の学習記録

ElastiCacheの学習 〜AWS学習 6日目〜

社内esaにまとめてたら満足してしまっていた、気をつけねば

ElastiCacheとは

  • 1つ以上のノードをクラスタ化して提供するサービス
  • ノードとは固有DNSを持った1つのRedis(もしくはmemcache)サーバを指す
  • クラスタとは1つ以上のノードが集まり、1つのキャッシュサーバのように振る舞っているもの

ノードタイプ

マルチAZ

  • プライマリノードで障害が発生した場合にレプリケーションラグの低いリードレプリカをプライマリノードへ昇格させる
    • レプリケーションラグ: リードレプリカへのデータ反映が非同期な為、リードレプリカのバージョンが古い可能性がある

オートディスカバリ

  • memcached専用機能
  • ノードの追加・削除をする際に、他のサーバーのElastiCacheへのエンドポイントを更新するため必要な再起動の手間をなくす機能

シャード(Shard)

  • 水平分割機能
    • id 1~100 までをサーバAへ、id 101~200 までをサーバBへ、id 201~300 をサーバCへの様な分割手法
  • (ElastiCacheの) Redisのシャードの最大数は15サーバ

Redis

BGSAVE

  • バックグラウンドで保存を行う
    • lastsaveで保存が終了したかの確認が可能
  • 書き込みが多いシステムの場合メモリ使用量が二倍になる場合がある

障害への対応

障害が起きるパターンと対応

  • Redis パフォーマンス向上案 まとめ
    • Redisもスロークエリが発生する
    • インターバルタイムアウトを調整する。短すぎると勝手にコネクションが切断されるので要注意。
    • Redisはシングルスレッドである。よって、スロークエリがあると瞬殺される。
  • Redisをストレージとして使用している
    • SwapUsageが上がり続けてしまう
  • レコードに expire 、redisの生存期間の設定をする
  • gem redis-rb でElastiCacheのプライマリクラスタが変更されると、redis-rbはDNSが変更された事に気づけない

参考