Docker部署Redis集群

Docker部署Redis集群

#创建redis网卡
[root@VM-16-11-centos tomcat]# docker network create redis --subnet 172.38.0.0/16
d447219bd1cc60b4cf30a41e6692f8317201ab7c6533d750a08d023ae2aae254
[root@VM-16-11-centos tomcat]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
1c3c6040bda4   bridge    bridge    local
e66f66816108   host      host      local
7650407024a8   none      null      local
d447219bd1cc   redis     bridge    local

#通过脚本创建六个redis配置
for port in $(seq 1 6);\
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.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}	#连接具体ip
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
#通过脚本启动六个容器
for port in $(seq 1 6);\
do \
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done


#创建集群
[root@VM-16-11-centos node-1]# docker exec -it redis-1 /bin/sh
/data # 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
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
Adding replica 172.38.0.14:6379 to 172.38.0.13:6379
M: 960ca53f94a87b827561dca9f6f8052b34214304 172.38.0.11:6379
   slots:[0-5460] (5461 slots) master
M: a38a79dbfa193576d11df3f193d8f1a34470a5b2 172.38.0.12:6379
   slots:[5461-10922] (5462 slots) master
M: d86277a69dcacbaaf3960ad410569e1a25d69598 172.38.0.13:6379
   slots:[10923-16383] (5461 slots) master
S: 16156aa15840e85c68779285bd1912ce94925838 172.38.0.14:6379
   replicates d86277a69dcacbaaf3960ad410569e1a25d69598
S: 6b075819e97b930da307203ef5fa244cfd3af06a 172.38.0.15:6379
   replicates 960ca53f94a87b827561dca9f6f8052b34214304
S: 917614c691969b7425b6246c3b6f261750be32b8 172.38.0.16:6379
   replicates a38a79dbfa193576d11df3f193d8f1a34470a5b2
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 172.38.0.11:6379)
M: 960ca53f94a87b827561dca9f6f8052b34214304 172.38.0.11:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: a38a79dbfa193576d11df3f193d8f1a34470a5b2 172.38.0.12:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: d86277a69dcacbaaf3960ad410569e1a25d69598 172.38.0.13:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 917614c691969b7425b6246c3b6f261750be32b8 172.38.0.16:6379
   slots: (0 slots) slave
   replicates a38a79dbfa193576d11df3f193d8f1a34470a5b2
S: 16156aa15840e85c68779285bd1912ce94925838 172.38.0.14:6379
   slots: (0 slots) slave
   replicates d86277a69dcacbaaf3960ad410569e1a25d69598
S: 6b075819e97b930da307203ef5fa244cfd3af06a 172.38.0.15:6379
   slots: (0 slots) slave
   replicates 960ca53f94a87b827561dca9f6f8052b34214304
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.