Docker安装Redis集群,无中心节点方式解决方案RedisCluster

295 阅读2分钟

 下载镜像

(这个是mukewang的老是封装好的,拿来即用)

[root@localhost ~]# docker pull yyyyttttwwww/redis
#重命名
[root@localhost ~]# docker tag yyyyttttwwww/redis redis
#删除长名字的redis,以免后面干扰
[root@localhost ~]# docker rmi -f yyyyttttwwww/redis

创建net2网段

(我的mysql集群使用了net1,所以这里就使用一个新的网段)

[root@localhost ~]# docker network create --subnet=172.19.0.0/16 net2

创建6节点Redis容器

 
[root@localhost ~]# docker run -it -d --name r1 -p 5001:6379 --net=net2 --ip 172.19.0.2 redis bash
[root@localhost ~]# docker run -it -d --name r2 -p 5002:6379 --net=net2 --ip 172.19.0.3 redis bash
[root@localhost ~]# docker run -it -d --name r3 -p 5003:6379 --net=net2 --ip 172.19.0.4 redis bash
[root@localhost ~]# docker run -it -d --name r4 -p 5004:6379 --net=net2 --ip 172.19.0.5 redis bash
[root@localhost ~]# docker run -it -d --name r5 -p 5005:6379 --net=net2 --ip 172.19.0.6 redis bash
[root@localhost ~]# docker run -it -d --name r6 -p 5006:6379 --net=net2 --ip 172.19.0.7 redis bash

进入节点r1(后面几个节点以此类推)

[root@localhost ~]# docker exec -it r1 bash

配置Redis节点

#以后台节点运行128行左右(完整版的行数信息)
daemonize yes
#开启集群721行左右
cluster-enabled yes
#集群配置文件729行左右
cluster-config-file nodes-6379.conf
#集群超时时间
cluster-node-timeout 15000
#开启AOF模式(持久化方式,可用于恢复)
appendonly yes

 使用编辑器编辑,对比上面的编辑就行(因为这个是已经封装好的,基本上不需要修改)

root@1f6a080bff27:/# vi /usr/redis/redis.conf

 进入编辑区,使用斜杆后面跟查找内容的方式查找,示例  /daemonize   然后改成和上面的意义就行了,后面几项以此类推,完成后输入 :wq 退出.

进入目录

#寻找目录
root@1f6a080bff27:/# cd /usr/redis/src
#启动
root@1f6a080bff27:/usr/redis/src# ./redis-server ../redis.conf
退出容器
root@1f6a080bff27:/usr/redis/src# exit

同理操作其余几个节点镜像,到这里配置结束.

创建集群(这个镜像已将用ruby脚本写好了的,所以执行一下命令即可)

[root@localhost ~]# docker exec -it r1 bash
root@1f6a080bff27:/# cd /usr/redis/
root@1f6a080bff27:/usr/redis# mkdir cluster
root@1f6a080bff27:/usr/redis# cd src
root@1f6a080bff27:/usr/redis/src# cp redis-trib.rb ../cluster
root@1f6a080bff27:/usr/redis/src# ./redis-trib.rb create --replicas 1 172.19.0.2:6379 172.19.0.3:6379 172.19.0.4:6379 172.19.0.5:6379 172.19.0.6:6379 172.19.0.7:6379

执行后

输入yes后,看到下面就成功了,成功后,exit命令退出r1容器

测试安装结果

那再测试一下(当然使用redis可视化客户端测试也行)

[root@localhost ~]# docker exec -it r1 bash
#连接集群
root@1f6a080bff27:/# /usr/redis/src/redis-cli -c
127.0.0.1:6379> set name zhangxiaoxiang
-> Redirected to slot [5798] located at 172.19.0.3:6379
OK
172.19.0.3:6379> get name
"zhangxiaoxiang"
172.19.0.3:6379> 

 解释一下(127.0.0.1:6379> info  查看版本信息,这个版本是3.2.3的,不是很新)