Bash Initiate Redis Cluster Using Docker

sunday-snippet · Apr 3, 2022 · ~1 min
Sunday Snippet #11 bash initiate redis cluster using docker
Sunday Snippet #11 bash initiate redis cluster using docker
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
set -e

# get accessible docker bridge's IP
DOCKER_BRIDGE_IP=$(docker network inspect bridge | jq ".[0].IPAM.Config[0].Gateway" -r)
PORT_PREFIX="1700"
nodes=""

# create redis configuration for each node
for i in $(seq 1 6);do
    cat <<EOF > "/tmp/$i-redis.conf"
port $PORT_PREFIX$i
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
bind 0.0.0.0
cluster-announce-ip $DOCKER_BRIDGE_IP
cluster-announce-port $PORT_PREFIX$i
EOF

    # stop and remove existing redis
    docker container stop "myredis-$i" || true
    docker container rm "myredis-$i" || true

    # start new redis node containers
    docker run -v "/tmp/$i-redis.conf":/usr/local/etc/redis/redis.conf -d \
    --net=host --name "myredis-$i" redis:alpine3.15 redis-server /usr/local/etc/redis/redis.conf

    nodes="$DOCKER_BRIDGE_IP:$PORT_PREFIX$i $nodes"
done

# create cluster from existing containers
docker container exec myredis-1 redis-cli --cluster-yes --cluster create $nodes --cluster-replicas 1

printf "\n\n=> redis nodes:"

for node in $nodes; do
	echo "$node"
done
· · ·

Love This Content?

Any kind of supports is greatly appreciated! Kindly support me via Bitcoin, Ko-fi, Trakteer, or just continue to read another content. You can write a response via Webmention and let me know the URL via Telegraph.

Drop Your Comment Below