54
36

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.

Redisの各構成比較

Last updated at Posted at 2018-01-28

はじめに

他のRedis構築に関するページは以下をご参考ください。
Redis構築のまとめ

環境

CentOS 6.8
Redis 3.2.5(当時の安定バージョン)

各検証内容

方式 検証内容 公式ドキュメント
Replication Redis Replication検証 https://redis.io/topics/replication
Cluster Redis Cluster検証 https://redis.io/topics/cluster-tutorial
Sentinel Redis Sentinel検証(近日UP予定) https://redis.io/topics/sentinel

各方式の比較

No 項目 Replication方式 Cluster方式 Sentinel方式
1 必要台数 2台 6台 3台
2 構成 Master1台
Slave1台
Master3台
Slave3台
Master1台
Slave1台
Sentinel1台(1台に3プロセス)
3 最低稼働台数 1台 3台 1台
4 サービス不能になる可能性があるダウン台数 1〜2台 2〜4台
障害時の挙動参照
2〜3台
5 フェイルオーバー(昇格)可否 不可 可能 可能
6 データ参照 1台あればデータ参照可能 落ちたサーバのデータは取得できない 復活すると参照できる
7 データ保持方法 Masterに保持し、SlaveがMasterをReplicationする 3台のMasterにデータを分散して保持 Masterに保持し、SlaveがMasterをReplicationする
8 参照時の負荷 普通 少ない 普通
9 可用性 普通 高い 高い
10 メモリ 普通 必然的にデータが分散するため期待できる 普通
11 サーバの追加 可能 可能(Clusterを再構成するコマンド実行が必要) 可能(即sentinel監視下に入る)
12 Masterダウン時の処理 なし SlaveのMaster昇格 ・SentinelでMasterダウンを検知
・SlaveのMaster昇格
13 フェイルオーバーまでの時間 昇格しない 即昇格 昇格まで0.X〜X秒必要
(sentinelがMasterダウンを検知してから昇格させるため)
14 Redis外での実装 アプリケーション側orLB等でIPの切替が必要?
→sentinel client-reconfig-scriptで任意のシェルを実行することで対策
AliasIPを使用したSentinelのサーバ切り替え検証
15 採用企業(検証ブログより) akatsuki GMO
Cyber Agent
16 特徴的な機能 リシャーディング機能
17 全体のメリット ・Masterが落ちても データの不整合が起きない
(Slaveが即座にReplicationしてくれるため)
・複数台マスタとして存在するので負荷分散、可用性に長けている
・Redisサーバの切替をRedis内で行ってくれる
・リシャーディング機能がある
・最高N-1/N台落ちても稼働することができる
・Clusterと比べてデータの不整合が起きづらい
・サーバ追加がしやすい
18 全体のデメリット ・可用性が他二つと比べると低い
・Masterが落ちると終わる
・2台落ちるとデータが飛ぶ
・落ちたサーバのデータを一時参照できなくなる
・2台落ちるだけでClusterがダウンする可能性がある(紐付いているMasterとSlave)
・Redis外でIPの切替処理が必要
・Clusterと比べて昇格まで少し時間が掛かる
・Master復帰が即座に行われると再起動前後に差異があっても認識されず、データが破壊される可能性がある
19 検証できていない点 特になし ○落ちたMasterからのデータが取得できなくなることの対策はできないか
→できるならClusterを採用する可能性もある
slaveofを使おうとしたが、cluster modeの時は使用できないようだった

○その他どれくらいの負荷に対応しているか
○Masterが落ちてからどれくらい短い時間で検知して自動フェールオーバが可能か

○Masterが停止して即起動した場合にデータが破損しないか問題

○その他どれくらいの負荷に対応しているか

目的に対する構成のオススメ度

どのような目的によってオススメの構成をまとめました。
こちらについては所感なので参考程度に。

目的 Redisの導入 Replication方式 Cluster方式 Sentinel方式 備考
処理速度を上げたい MySQLと比べても明らかに速い
参考)redis、それは危険なほどのスピード
データ量が多い
データを確実に保持したい
データを長期的に保持したい × キャッシュとして使用することでRedisのメリットとなる。
ストレージとして使うとメモリが溢れて停止する可能性がある。
参考)Redis本番障害から学んだコードレビューの勘所
データ更新頻度が多い
データ参照頻度が多い Clusterはスレーブの参照を分散しているので参照への負荷に強い
サーバ稼働台数が多い ×
サーバ稼働台数が少ない
可用性 Cluster/Sentinelは稼働台数によって可用性が高くなる
保守性
54
36
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
54
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?