How to setup redis cluster on ubuntu 18.04

LORY
3 min readAug 10, 2020

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 !

--

--

LORY

A channel which focusing on developer growth and self improvement