前言
单master的redis足够满足我们做缓存的需求,如果是大数据或高可用、高并发场景,这时候就需要redis cluster。
$ docker pull redis:5.0.5$ mkdir redis$ mkdir redis/data01 redis/data02 redis/data03 redis/data04 redis/data05 redis/data06$ vi redis/redis.confport 7000protected-mode notimeout 0daemonize nodatabases 12cluster-enabled yescluster-node-timeout 5000appendonly yes
docker run --name redis01 -p 9000:7000 -v /home/jerome/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /home/jerome/redis/data01:/data -d redis:5.0.5 redis-server /usr/local/etc/redis/redis.confdocker run --name redis02 -v /home/jerome/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /home/jerome/redis/data02:/data -d redis:5.0.5 redis-server /usr/local/etc/redis/redis.confdocker run --name redis03 -v /home/jerome/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /home/jerome/redis/data03:/data -d redis:5.0.5 redis-server /usr/local/etc/redis/redis.confdocker run --name redis04 -v /home/jerome/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /home/jerome/redis/data04:/data -d redis:5.0.5 redis-server /usr/local/etc/redis/redis.confdocker run --name redis05 -v /home/jerome/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /home/jerome/redis/data05:/data -d redis:5.0.5 redis-server /usr/local/etc/redis/redis.confdocker run --name redis06 -v /home/jerome/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /home/jerome/redis/data06:/data -d redis:5.0.5 redis-server /usr/local/etc/redis/redis.conf
wget http://download.redis.io/releases/redis-5.0.5.tar.gzchmod 755 redis-5.0.5.tar.gztar zxvf redis-5.0.5.tar.gzcd redis-5.0.5/src/make MALLOC=libc./redis-cli --cluster create --cluster-replicas 1 172.17.0.2:7000 \172.17.0.3:7000 \172.17.0.4:7000 \172.17.0.5:7000 \172.17.0.6:7000 \172.17.0.7:7000Performing hash slots allocation on 6 nodes...-> Slots 0 - 5460-> Slots 5461 - 10922-> Slots 10923 - 16383Adding replica 172.17.0.6:7000 to 172.17.0.2:7000Adding replica 172.17.0.7:7000 to 172.17.0.3:7000Adding replica 172.17.0.5:7000 to 172.17.0.4:7000M: eba0d835032edc030d538fa85b4c6d8ea3d5cb60 172.17.0.2:7000:[0-5460] (5461 slots) masterM: 0bebd9434b045b66c6fc34ef31a192706a33fb38 172.17.0.3:7000:[5461-10922] (5462 slots) masterM: b0a0a73301dc894bb10e435193d477043429479c 172.17.0.4:7000:[10923-16383] (5461 slots) master: cd5b29bdefcd0597ea07c388d004a602c4e455e2 172.17.0.5:7000b0a0a73301dc894bb10e435193d477043429479c: e167facc55b72bbd01add6cf828ec8a42bc3a2c3 172.17.0.6:7000eba0d835032edc030d538fa85b4c6d8ea3d5cb60: a196753b1dc0d939a19ada75e904f2e868eba6ed 172.17.0.7:70000bebd9434b045b66c6fc34ef31a192706a33fb38Can I set the above configuration? (type 'yes' to accept): yesNodes configuration updatedAssign a different config epoch to each nodeSending CLUSTER MEET messages to join the clusterWaiting for the cluster to join...Performing Cluster Check (using node 172.17.0.2:7000)M: eba0d835032edc030d538fa85b4c6d8ea3d5cb60 172.17.0.2:7000:[0-5460] (5461 slots) master1 additional replica(s): a196753b1dc0d939a19ada75e904f2e868eba6ed 172.17.0.7:7000: (0 slots) slave0bebd9434b045b66c6fc34ef31a192706a33fb38M: b0a0a73301dc894bb10e435193d477043429479c 172.17.0.4:7000:[10923-16383] (5461 slots) master1 additional replica(s)M: 0bebd9434b045b66c6fc34ef31a192706a33fb38 172.17.0.3:7000:[5461-10922] (5462 slots) master1 additional replica(s): e167facc55b72bbd01add6cf828ec8a42bc3a2c3 172.17.0.6:7000: (0 slots) slaveeba0d835032edc030d538fa85b4c6d8ea3d5cb60: cd5b29bdefcd0597ea07c388d004a602c4e455e2 172.17.0.5:7000: (0 slots) slaveb0a0a73301dc894bb10e435193d477043429479cAll nodes agree about slots configuration.Check for open slots...Check slots coverage...All 16384 slots covered.
$ ./redis-cli -p 9000set test jerome(error) MOVED 6918 172.17.0.3:7000启动时使用-c参数来启动集群模式$ ./redis-cli -c -p 9000set test jerome-> Redirected to slot [6918] located at 172.17.0.3:7000OKget test"jerome"set pom 4.2-> Redirected to slot [15895] located at 172.17.0.4:7000OKget test-> Redirected to slot [6918] located at 172.17.0.3:7000"jerome"
集群的创建相比4.x版本的更简洁一些,不需要依赖ruby,部署更方便。
原文作者:象楚之行;如有侵权,请联系管理员删除。