0. prepare 3 ubuntu
192.168.11.137 (server1)
192.168.11.138 (server2)
192.168.11.139 (server3)
1. Setup redis on 3 ubuntu servers
sudo apt-get update
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
sudo make install
— to install make
sudo apt-get install build-essential
make test
—make sure installed pkg-config and tcl before ‘make test’
sudo apt-get install -y pkg-config
sudo apt-get install -y tcl
2. Config Cluster
on server192.168.11.137 (server1)
note , the latest version of redis already moved from ruby gem to redis-cli
cp redis.conf c_slave.conf
mv redis.conf a_master.conf
a_master.conf:
bind 0.0.0.0
protected-mode no
port 6379
pidfile /var/run/redis_6379.pid
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
c_slave.conf:
bind 0.0.0.0
protected-mode no
port 6479
pidfile /var/run/redis_6479.pid
cluster-enabled yes
cluster-config-file nodes-6479.conf
cluster-node-timeout 15000
important .’bind 127.0.0.1' should be changed to ‘bind 0.0.0.0’
repeat the same steps for another 2 nodes
in this demo, we set ip/port/role as such :
| — server — — — — | — — port — -| — role — |
|-192.168.11.137-| — — 6379 — -|-master-|
|-192.168.11.137-| — — 6479 — -|-slave — |
|-192.168.11.138-| — — 6381 — -|-master-|
|-192.168.11.138-| — — 6481 — -|-slave — |
|-192.168.11.139-| — — 6380 — -|-master-|
|-192.168.11.139-| — — 6480 — -|-slave — |
3. start cluster
On all 3 servers , run master and slave instance
redis-server redis-stable/a_master.conf
redis-server redis-stable/c_slave.conf
then create cluster by adding all master nodes (will add slave node in next step)
redis-cli — cluster create 192.168.11.137:6379 192.168.11.139:6380 192.168.11.138:6381
Redis-cli –c –h 192.168.11.137 –p 6379
cluster nodes
4. Add Slave Nodes
redis-cli — cluster add-node 192.168.11.137:6479 192.168.11.137:6379 — cluster-slave
show cluster nodes again, to make sure it has been added correctly
redis-cli –c –h 192.168.11.137 –p 6379
cluster nodes
important, remember the ‘ — cluster-slave’ option .repeat the same for other 2 masters
redis-cli — cluster add-node 192.168.11.138:6481 192.168.11.138:6381 — cluster-slave
redis-cli — cluster add-node 192.168.11.139:6480 192.168.11.139:6380 — cluster-slave
in case need to remove node
Cluster forget [node_id]
5. test
Redis-cli –c –h 192.168.11.137 –p 6379
important . -c option is must when connecting cluster .otherwise will be showing ‘(moved)xx’ error
Set a 1
Set b 2
Set c 3
Can see the data is being balanced to different machines
Now kill master of server 192.168.11.138 (6381)
Get ‘b’ again
Slave ‘6481’ has been promoted to master node
6. In case need to re-create cluster nodes
6.1 Remove dumb.rdb and ‘nodes-xxx’ file on every server
6.2 Then Use Redis-cli create cluster again , add node to master .
Thanks for reading !