1.docker创建6台Redis实例
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis --cluster-enabled yes --appendonly yes --port 6381 docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis --cluster-enabled yes --appendonly yes --port 6382 docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis --cluster-enabled yes --appendonly yes --port 6383 docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis --cluster-enabled yes --appendonly yes --port 6384 docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis --cluster-enabled yes --appendonly yes --port 6385 docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis --cluster-enabled yes --appendonly yes --port 6386
2.进入redis-node-1并为6台机器构建集群关系
[root@localhost ~]# docker exec -it redis-node-1 bash root@localhost:/data# redis-cli --cluster create 192.168.0.15:6381 192.168.0.15:6382 192.168.0.15:6383 192.168.0.15:6384 192.168.0.15:6385 192.168.0.15:6386 --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 192.168.0.15:6385 to 192.168.0.15:6381 Adding replica 192.168.0.15:6386 to 192.168.0.15:6382 Adding replica 192.168.0.15:6384 to 192.168.0.15:6383 >>> Trying to optimize slaves allocation for anti-affinity [WARNING] Some slaves are in the same host as their master M: c8c36e3345fcd03a0b29c21f574eeedaee6397d6 192.168.0.15:6381 slots:[0-5460] (5461 slots) master M: a85b8afb10190406420a0e566b9785d56aa58403 192.168.0.15:6382 slots:[5461-10922] (5462 slots) master M: ffa128aa359c8faf438d783a2650c32ba000f7ec 192.168.0.15:6383 slots:[10923-16383] (5461 slots) master S: 3464284ed5db12c52ed22ab37a4f9fbada837bbb 192.168.0.15:6384 replicates c8c36e3345fcd03a0b29c21f574eeedaee6397d6 S: c8e26baca971251a318eabd201f7a35d2fc563ad 192.168.0.15:6385 replicates a85b8afb10190406420a0e566b9785d56aa58403 S: a033ef6cba285b074633388a81f183074fd237ff 192.168.0.15:6386 replicates ffa128aa359c8faf438d783a2650c32ba000f7ec 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.0.15:6381) M: c8c36e3345fcd03a0b29c21f574eeedaee6397d6 192.168.0.15:6381 slots:[0-5460] (5461 slots) master 1 additional replica(s) S: a033ef6cba285b074633388a81f183074fd237ff 192.168.0.15:6386 slots: (0 slots) slave replicates ffa128aa359c8faf438d783a2650c32ba000f7ec M: a85b8afb10190406420a0e566b9785d56aa58403 192.168.0.15:6382 slots:[5461-10922] (5462 slots) master 1 additional replica(s) S: 3464284ed5db12c52ed22ab37a4f9fbada837bbb 192.168.0.15:6384 slots: (0 slots) slave replicates c8c36e3345fcd03a0b29c21f574eeedaee6397d6 S: c8e26baca971251a318eabd201f7a35d2fc563ad 192.168.0.15:6385 slots: (0 slots) slave replicates a85b8afb10190406420a0e566b9785d56aa58403 M: ffa128aa359c8faf438d783a2650c32ba000f7ec 192.168.0.15:6383 slots:[10923-16383] (5461 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered
--cluster-replicas 1 表示为每个master创建一个slave节点
3数据读写存储
root@localhost:/data# redis-cli -p 6381 127.0.0.1:6381> keys * (empty array) 127.0.0.1:6381> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0