Edited at

redis clusterの作り方

More than 3 years have passed since last update.

redis3.0.0 RC2がリリースされました。

redis3.0.0から新しく入るredis clusterについて簡単な作り方のメモです。

CentOS使って、1サーバで6台のredis clusterを作ります。

(ほぼ、チュートリアルhttp://redis.io/topics/cluster-tutorialを日本語にしただけです)


1. ディレクトリの用意

$ mkdir ~/cluster-test

$ cd ~/cluster-test
$ mkdir 700{0,1,2,3,4,5}


2. 最小構成の設定ファイルを用意する

$ cd 7000

$ emacs redis.conf


redis.conf

port 7000

cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

上記の作業を7001~7005までportの設定値だけを変えながら繰り返します。

※cluster-config-fileは変える必要はありません


3. 各サーバの起動

6台全てのサーバを起動します。


ターミナルA

$ redis-server 7000/redis.conf



ターミナルB

$ redis-server 7001/redis.conf


  :

  :

ターミナルを複数開きます。自分はemacsなので、画面分割してやりました。

初回起動時には、

No cluster configuration found, I'm d9b3d1d86b5f5c928f882df6caddc0dbf6031347

との表示が出て、クラスタの設定ファイル(nodes.conf)が作られます。

このd9b3d1d86b5f5c928f882df6caddc0dbf6031347が各サーバを識別する名前となります。

この時点では、1台✕6 がそれぞれ起動している状態です。


4. クラスタリング

$ cd ~/redis/src/

$ redis-trib.rb create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.01:7004 127.0.0.1:7005
:
Can I set the above configuration? (type 'yes' to accept): yes
:

クラスタリング完了です。


注意点1

redis-trib.rbでサーバを指定するとき、IPで指定するようにしてください。

以下のようにホスト名だと失敗します。

redis-trib.rb create localhost:7000 localhost:7001 …

→失敗する


注意点2

redis-trib.rbを実行した時に、

kernel_require.rb:55:inrequire' from ./redis-trib.rb:25

みたいなのが出た時は、

1. rubyのバージョンが新しいか(1.9 or 2.0とか)

2. redisのgemをインストールしているか。→していない場合は
gem install redis`

を確認してください。


動作確認

$ redis-cli -c -p 7000

127.0.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7004
OK
127.0.0.1:7004> get foo
"bar"