Docker安装Redis Cluster

Redis 5.0.7

创建集群目录

mkdir /home/redis-cluster
1
2
3
4
5
6
7
8
9
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.21.28 //自己服务器IP
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes

创建专有网络(可选)

docker network create redis-net

创建conf和data目录

1
2
3
4
5
for port in `seq 7000 7005`; do \
  mkdir -p ./${port}/conf \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done

创建Redis容器

1
2
3
4
5
6
7
for port in `seq 7000 7005`; do \
  docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
  -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /home/redis-cluster/${port}/data:/data \
  --restart always --name redis-${port} --net redis-net \
  --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done

随意进入一个容器

docker exec -it e61133e98d01 /bin/bash

创建集群

redis-cli --cluster create 192.168.21.28:7000 192.168.21.28:7001 192.168.21.28:7002 192.168.21.28:7002 192.168.21.28:7003 192.168.21.28:7004 192.168.21.28:7005 --cluster-replicas 1

输出记录

 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
41
42
43
44
45
46
47
48
49
50
51
52
53
>>> Performing hash slots allocation on 7 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.21.28:7003 to 192.168.21.28:7000
Adding replica 192.168.21.28:7004 to 192.168.21.28:7001
Adding replica 192.168.21.28:7005 to 192.168.21.28:7002
Adding extra replicas...
Adding replica 192.168.21.28:7002 to 192.168.21.28:7000
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: d4b82300dfacedeaf7d50e0c3c06d9b7662603e1 192.168.21.28:7000
   slots:[0-5460] (5461 slots) master
M: f89d211a74b1e71b4b3aa12ae9491cd0657c9f06 192.168.21.28:7001
   slots:[5461-10922] (5462 slots) master
M: d02714dc30ed747bc23d8387684d0389b1552a61 192.168.21.28:7002
   slots:[10923-16383] (5461 slots) master
S: d02714dc30ed747bc23d8387684d0389b1552a61 192.168.21.28:7002
   replicates f89d211a74b1e71b4b3aa12ae9491cd0657c9f06
S: 5188757b51c2fc804ab9a09779cc83f3dd08e7e2 192.168.21.28:7003
   replicates d4b82300dfacedeaf7d50e0c3c06d9b7662603e1
S: 985e81724ea9b5664a19961f4a758689290856b2 192.168.21.28:7004
   replicates d02714dc30ed747bc23d8387684d0389b1552a61
S: 2f12b2eb90938cf2469bd6209f85dc42925e2129 192.168.21.28:7005
   replicates d4b82300dfacedeaf7d50e0c3c06d9b7662603e1
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 192.168.21.28:7000)
M: d4b82300dfacedeaf7d50e0c3c06d9b7662603e1 192.168.21.28:7000
   slots:[0-5460] (5461 slots) master
   2 additional replica(s)
M: d02714dc30ed747bc23d8387684d0389b1552a61 192.168.21.28:7002
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 985e81724ea9b5664a19961f4a758689290856b2 192.168.21.28:7004
   slots: (0 slots) slave
   replicates d02714dc30ed747bc23d8387684d0389b1552a61
S: 2f12b2eb90938cf2469bd6209f85dc42925e2129 192.168.21.28:7005
   slots: (0 slots) slave
   replicates d4b82300dfacedeaf7d50e0c3c06d9b7662603e1
S: 5188757b51c2fc804ab9a09779cc83f3dd08e7e2 192.168.21.28:7003
   slots: (0 slots) slave
   replicates d4b82300dfacedeaf7d50e0c3c06d9b7662603e1
M: f89d211a74b1e71b4b3aa12ae9491cd0657c9f06 192.168.21.28:7001
   slots:[5461-10922] (5462 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

连接测试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
e61133e98d01        redis                                 "docker-entrypoint.s…"   25 minutes ago      Up 25 minutes       0.0.0.0:7005->7005/tcp, 6379/tcp, 0.0.0.0:17005->17005/tcp                                   redis-7005
4860f478463f        redis                                 "docker-entrypoint.s…"   25 minutes ago      Up 25 minutes       0.0.0.0:7004->7004/tcp, 6379/tcp, 0.0.0.0:17004->17004/tcp                                   redis-7004
16d6bb61118b        redis                                 "docker-entrypoint.s…"   25 minutes ago      Up 25 minutes       0.0.0.0:7003->7003/tcp, 6379/tcp, 0.0.0.0:17003->17003/tcp                                   redis-7003
7b6070c17724        redis                                 "docker-entrypoint.s…"   25 minutes ago      Up 25 minutes       0.0.0.0:7002->7002/tcp, 6379/tcp, 0.0.0.0:17002->17002/tcp                                   redis-7002
afd85937ac9a        redis                                 "docker-entrypoint.s…"   25 minutes ago      Up 25 minutes       0.0.0.0:7001->7001/tcp, 6379/tcp, 0.0.0.0:17001->17001/tcp                                   redis-7001
0298db107972        redis                                 "docker-entrypoint.s…"   25 minutes ago      Up 25 minutes       0.0.0.0:7000->7000/tcp, 6379/tcp, 0.0.0.0:17000->17000/tcp                                   redis-7000

redis-cli -c -h 192.168.21.28 -p 7002
192.168.21.28:7002> CLUSTER NODES
985e81724ea9b5664a19961f4a758689290856b2 192.168.21.28:7004@17004 slave d02714dc30ed747bc23d8387684d0389b1552a61 0 1576224546000 6 connected
2f12b2eb90938cf2469bd6209f85dc42925e2129 192.168.21.28:7005@17005 slave d4b82300dfacedeaf7d50e0c3c06d9b7662603e1 0 1576224547233 1 connected
5188757b51c2fc804ab9a09779cc83f3dd08e7e2 192.168.21.28:7003@17003 slave d4b82300dfacedeaf7d50e0c3c06d9b7662603e1 0 1576224546227 5 connected
f89d211a74b1e71b4b3aa12ae9491cd0657c9f06 192.168.21.28:7001@17001 master - 0 1576224546000 2 connected 5461-10922
d02714dc30ed747bc23d8387684d0389b1552a61 192.168.21.28:7002@17002 myself,master - 0 1576224544000 3 connected 10923-16383
d4b82300dfacedeaf7d50e0c3c06d9b7662603e1 192.168.21.28:7000@17000 master - 0 1576224547000 1 connected 0-5460

参考链接:

https://blog.csdn.net/tszxlzc/article/details/86565327

https://www.cnblogs.com/lianggp/articles/8136222.html

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计