Docker + Redis5.0.9集群,3主3从(分片 + 高可用 + 负载均衡)

在Docker中部署Redis集群,3台主服务 + 3台从服务,实现分片,高可用,负载均衡。

Redis集群模型:

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

 【第1步】创建一个新的网络,取名叫redis

docker network create redis --subnet 172.38.0.0/16

查看网络

docker network ls

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

  

 【第2步】创建 redis配置文件

通过脚本创建6个redis的node目录与redis配置文件:

for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
cat << EOF > /mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

6个redis的ip地址分别为 172.38.0.11 到 172.38.0.16

6个node-x目录,node-1节点与node-6节点的配置文件内容分别为如下图:

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

  

 redis-1节点的配置内容为:

port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.11
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes

6个配置文件除了cluster-announce-ip的值不一样,其它都一样。

【第3步】分别启动6个redis容器

启动redis-1
docker run -d --name redis-1 -p 6371:6379 -p 16371:16379 --restart=always \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
--net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

启动redis-2
docker run -d --name redis-2 -p 6372:6379 -p 16372:16379 --restart=always \
-v /mydata/redis/node-2/data:/data \
-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
--net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

启动redis-3
docker run -d --name redis-3 -p 6373:6379 -p 16373:16379 --restart=always \
-v /mydata/redis/node-3/data:/data \
-v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
--net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

启动redis-4
docker run -d --name redis-4 -p 6374:6379 -p 16374:16379 --restart=always \
-v /mydata/redis/node-4/data:/data \
-v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
--net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

启动redis-5
docker run -d --name redis-5 -p 6375:6379 -p 16375:16379 --restart=always \
-v /mydata/redis/node-5/data:/data \
-v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
--net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

启动redis-6
docker run -d --name redis-6 -p 6376:6379 -p 16376:16379 --restart=always \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
--net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡) Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

  

 【第4步】创建集群

任意进入其中一个 redis节点,比如进入redis-1节点。

docker exec -it redis-1 /bin/sh
ls

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

  

进入 redis 节点后,默认是/data  目录。

用redis-cli --cluster create命令创建集群

redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379  172.38.0.14:6379  172.38.0.15:6379  172.38.0.16:6379 --cluster-replicas 1

执行过程中会提示是否同意上面的配置 :

Can I set the above configuration? (type 'yes' to accept): 

输入yes

集群创建完成后,输出信息:

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

  

【第5步】连接集群

连接集群
redis-cli -c

注意,连接集群需要加 -c 参数,不加-c参数会连接单机。

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

  

 查看集群信息

查看集群信息
cluster info

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

 

 三个主节点。

查看集群节点信息:

查看集群节点信息
cluster nodes

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

 

ip末位为 11,12,13的节点为主,ip末位为14,15,16的节点为从。

当前节点为172.38.0.11

设置与读取值

set key1 value1
set key2 value2
set key3 value3
set key4 value4
set key5 value5
set key6 value6
get key1
get key2
get key3

 

Docker + Redis5.0.9集群,3主3从(分片  + 高可用 + 负载均衡)

 

上一篇:讲解redis分布式数据存储的核心算法,数据分布的算法


下一篇:# 【TcaplusDB知识库】集群操作相关命令介绍