1.安装redis镜像
docker pull yyyyttttwwww/redis
docker tag yyyyttttwwww/redis redis
docker network create --subnet=172.19.0.0/16 net2
docker run -it -d --name r1 -p 5001:6379 --net=net2 --ip 172.19.0.2 redis bash
docker run -it -d --name r2 -p 5002:6379 --net=net2 --ip 172.19.0.3 redis bash
docker run -it -d --name r3 -p 5003:6379 --net=net2 --ip 172.19.0.4 redis bash
docker run -it -d --name r4 -p 5004:6379 --net=net2 --ip 172.19.0.5 redis bash
docker run -it -d --name r5 -p 5005:6379 --net=net2 --ip 172.19.0.6 redis bash
2.配置redis
daemonize yes 以后台进程运行
cluster-enabled yes 开启集群
cluster-config-file nodes.conf 集群配置文件
cluster-node-timeout 15000 超时时间
appendonly yes 开启AOF模式
bind 127.0.0.1 172.19.0.2
注意这里一定要设置:bind 127.0.0.1 172.19.0.2 否则报错误 Connect to 127.0.0.1 Redis Server
这样r1-r6都设置完后,启动redis
3.执行redis-trib.rb
cd /usr/redis/cluster
执行 ./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
4.可能遇到的问题
(1)错误提示是
slot插槽被占用了(这是 搭建集群前时,以前redis的旧数据和配置信息没有清理干净。)
解决方案是
用redis-cli 登录到每个节点执行 flushall 和 cluster reset 就可以了。
然后重新执行群集脚本命令:
./redis-trib.rb create --replicas 1 192.168.*.*:7001 192.168.*.*:7002 192.168.*.*:7003 192.168.*.*:7004 192.168.*.*:7005 192.168.*.*:7006
(2)waiting for the cluster to join 一直等待
#centos7.4服务器
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl start firewalld.service #防火墙开启
systemctl disable firewalld.service #防火墙不可用
firewall-cmd --zone=public --add-port=80/tcp --permanent #开启端口
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload