38
37

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 5 years have passed since last update.

Redis Cluster 覚え書き

Last updated at Posted at 2015-04-19

Redis Cluster についてのメモ。

Redis 3.0 で正式に追加された機能。
実験的な実装としては以前からあった。

公式情報

概要

Redis Cluster 機能を使うと、Redis インスタンスをクラスタリングすることができる。
通常のレプリケーション構成ではなく、複数の master ノードを束ねて協調動作させ、クラスタ全体で保持するデータ量をスケールアウトさせることができる。

特徴

  • Redis の単一キーのコマンドはすべてサポート
  • Redis の複数キーのコマンドはキーがすべて同じノードにあれば OK
  • 全ノードがクライアントからのリクエストを受け付ける
    • 自分がデータを持ってない場合、エラーを返して正しいノードにリダイレクトさせる
      • リクエストを正しいノードにプロキシすることはしない
  • 全ノードがお互いに通信する
    • Gossip プロトコル
  • master/slave, フェールオーバー
    • 各masterに1つ以上のslaveをレプリケーションさせることができる
    • master ダウン時は slave にフェールオーバーする
    • slave が1台もいなくなった場合、他の master の slave が複数いれば、slave を譲り受けることができる。Replica Migration
  • リシャーディング機能
    • ノードを追加してデータを再配置し、スケールアウトすることができる
  • 設計思想
    • 1000ノードオーダーでスケールアウト可能
    • 書き込み安全性、可用性も担保する

他の分散KVSとの違い

以下が特徴的だと思う。

  • ノードに master/slave の role があること
  • リクエストに対するデータを持っていないノードに問い合わせたとき、正しいノードにリダイレクトされる。

他の分散KVSだと、ノードに role の区別はなく、データの在り処を内部的に解決して返してくれる、というものが多いような気がする。
Cassandra とか、 Riak とか。

更に仕様を詳しく知りたい人へ

ざっと掴みたい人向け

参考記事

チュートリアルやってみた記事

その他参考記事

個人的に気になる点

  • 仕様について
    • 非クラスタのRedisをクラスタ版に置き換える場合、これまでのRedisクライアントは書き替える必要がある?
      • リダイレクトが発生するので、ありそうな話。
    • ある master の系統が slave 含めて全滅したときは勝手にリシャーディングしてくれる?
      • これまで読んだドキュメントの情報だと、クラスタがダウンしそう。
      • たぶん手動で MIGRATE 操作を行って、クラスタのノード数を減らすことはできる

最後に

メモですが、誤りなどありましたらお知らせ下さい。
不定期に更新するかもしれません。

38
37
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
38
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?