ITPub博客

首页 > 数据库 > 数据库开发技术 > Docker搭建Redis Cluster 5.0.5

Docker搭建Redis Cluster 5.0.5

原创 数据库开发技术 作者:象楚之行 时间:2019-06-27 21:00:00 0 删除 编辑

前言

单master的redis足够满足我们做缓存的需求,如果是大数据或高可用、高并发场景,这时候就需要redis cluster。

1
拉取镜像和准备配置文件
$ 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
2
启动容器
$ 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.conf$ docker 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.conf$ docker 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.conf$ docker 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.conf$ docker 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.conf$ docker 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
3
搭建集群
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz$ chmod 755 redis-5.0.5.tar.gz$ tar zxvf redis-5.0.5.tar.gz$ cd 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:7000>>> Performing hash slots allocation on 6 nodes...Master[0] -> Slots 0 - 5460Master[1] -> Slots 5461 - 10922Master[2] -> 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   slots:[0-5460] (5461 slots) masterM: 0bebd9434b045b66c6fc34ef31a192706a33fb38 172.17.0.3:7000   slots:[5461-10922] (5462 slots) masterM: b0a0a73301dc894bb10e435193d477043429479c 172.17.0.4:7000   slots:[10923-16383] (5461 slots) masterS: cd5b29bdefcd0597ea07c388d004a602c4e455e2 172.17.0.5:7000   replicates b0a0a73301dc894bb10e435193d477043429479cS: e167facc55b72bbd01add6cf828ec8a42bc3a2c3 172.17.0.6:7000   replicates eba0d835032edc030d538fa85b4c6d8ea3d5cb60S: a196753b1dc0d939a19ada75e904f2e868eba6ed 172.17.0.7:7000   replicates 0bebd9434b045b66c6fc34ef31a192706a33fb38Can 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 clusterWaiting for the cluster to join...>>> Performing Cluster Check (using node 172.17.0.2:7000)M: eba0d835032edc030d538fa85b4c6d8ea3d5cb60 172.17.0.2:7000   slots:[0-5460] (5461 slots) master   1 additional replica(s)S: a196753b1dc0d939a19ada75e904f2e868eba6ed 172.17.0.7:7000   slots: (0 slots) slave   replicates 0bebd9434b045b66c6fc34ef31a192706a33fb38M: b0a0a73301dc894bb10e435193d477043429479c 172.17.0.4:7000   slots:[10923-16383] (5461 slots) master   1 additional replica(s)M: 0bebd9434b045b66c6fc34ef31a192706a33fb38 172.17.0.3:7000   slots:[5461-10922] (5462 slots) master   1 additional replica(s)S: e167facc55b72bbd01add6cf828ec8a42bc3a2c3 172.17.0.6:7000   slots: (0 slots) slave   replicates eba0d835032edc030d538fa85b4c6d8ea3d5cb60S: cd5b29bdefcd0597ea07c388d004a602c4e455e2 172.17.0.5:7000   slots: (0 slots) slave   replicates b0a0a73301dc894bb10e435193d477043429479c[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.
4
测试集群
$ ./redis-cli -p 9000127.0.0.1:9000> set test jerome(error) MOVED 6918 172.17.0.3:7000
启动时使用-c参数来启动集群模式$ ./redis-cli -c -p 9000127.0.0.1:9000> set test jerome-> Redirected to slot [6918] located at 172.17.0.3:7000OK172.17.0.3:7000> get test"jerome"172.17.0.3:7000> set pom 4.2-> Redirected to slot [15895] located at 172.17.0.4:7000OK172.17.0.4:7000> get test-> Redirected to slot [6918] located at 172.17.0.3:7000"jerome"
5
总结

集群的创建相比4.x版本的更简洁一些,不需要依赖ruby,部署更方便。

原文作者:象楚之行;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-06-12

  • 博文量
    102
  • 访问量
    50364