Redis cluster in 5 minute

Alparslan Ozturk
2 min readJan 13, 2022

Redis work with only one process so if you want to increase performance you have to install with cluster. I will show you up and running Redis server without data persistent.

I am using regular ip aliases for :

for i in {1..9}
do
ip addr add 192.168.111.1$i/32 dev eth0
done

create a redis.conf

cat > redis.conf <<EOF
bind 0.0.0.0
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
dir /data
appendonly no
appendfsync no
protected-mode no
save ""
EOF

is there a quickly patch about “announce ip” . To accessing from regular network. Generate redis?.conf files.

for i in {1..9}; do
cp redis.conf redis$i.conf &&
echo “cluster-announce-ip 192.168.111.1$i” >> redis$i.conf
done

create a docker network ( default bridge )

docker network create --subnet 172.72.72.0/24 redisnet

create docker containers with for loop :-)

for i in {1..9}
do
docker run -d --rm --name redis$i -h redis$i --network redisnet \
--ip 172.72.72.1$i \
-p 192.168.111.1$i:6379:6379 \
-p 192.168.111.1$i:16379:16379 \
-v $(pwd)/redis$i.conf:/data/redis.conf \
redis redis-server /data/redis.conf
done

Login a containers (eg. redis1 ) then create redis cluster with command

docker exec -it redis1  bash
root@redis1:/data#
redis-cli --cluster create \
172.72.72.11:6379 \
172.72.72.12:6379 \
172.72.72.13:6379 \
172.72.72.14:6379 \
172.72.72.15:6379 \
172.72.72.16:6379 \
172.72.72.17:6379 \
172.72.72.18:6379 \
172.72.72.19:6379 \
--cluster-replicas 2

finally cluster up and running. so you can use on production environment with aliases ip address. ( 192.168… look up)

redis-cli -c
127.0.0.1:6379> cluster nodes
1249fd0be053b53b0b62948de4dda305852673ab 172.72.72.12:6379@16379 master - 0 1642077073028 2 connected 5461-10922
4c4a9e05de6cfca27c8a445c8e8cec61aa5f95fe 172.72.72.13:6379@16379 master - 0 1642077072523 3 connected 10923-16383
a4362e07508f505ac0331435934219b301edec01 172.72.72.11:6379@16379 myself,master - 0 1642077071000 1 connected 0-5460
5c91fa4664e2865aa6e9a73e1e53e624c30f6809 172.72.72.18:6379@16379 slave 1249fd0be053b53b0b62948de4dda305852673ab 0 1642077073028 2 connected
9e45ec5a4ced07e4ce25f153d59ebdfe642a1692 172.72.72.16:6379@16379 slave a4362e07508f505ac0331435934219b301edec01 0 1642077073532 1 connected
d3b3a03127dfefb4add101ad550fbd18b77c699c 172.72.72.19:6379@16379 slave 4c4a9e05de6cfca27c8a445c8e8cec61aa5f95fe 0 1642077072000 3 connected
4111a520105467d7af2219b53eab80d0717809e9 172.72.72.17:6379@16379 slave 1249fd0be053b53b0b62948de4dda305852673ab 0 1642077072523 2 connected
504d9439a51a915995504ce62b276d304843778a 172.72.72.14:6379@16379 slave 4c4a9e05de6cfca27c8a445c8e8cec61aa5f95fe 0 1642077073000 3 connected
e543bc0bd78ce274b60e63ae966adb50a30695f7 172.72.72.15:6379@16379 slave a4362e07508f505ac0331435934219b301edec01 0 1642077072000 1 connected
127.0.0.1:6379>
For best performance of one VM
RedisInsight | The Best Redis GUI

The end.

--

--