linux部署redis集群cluster主从模式
一、docker拉取一个redis镜像
博主拉的是最新版的redis镜像
直接通过docker pull redis就可以
二、创建一个保存redis挂在文件的文件夹
博主创建的是mkdir /mydata/redis文件夹
三、创建6个redis集群节点
博主通过一个脚本快速创建出6个redis容器
cd /mydata/redis目录下执行一下脚本即可(ip需改成自己的虚拟机地址,端口可自行设定)
for port in $(seq 7001 7006); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.137.200
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
appendonly yes
EOF
docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf; \
done
执行docker ps查看一下redis进程
这样就启动成功啦,但是我们此时还只是6个redis单节点,并没有把他们联合起来。
四、创建三主三从的集群模式
我们可以进入到一个redis容器中,用集群命令创建出一个redis集群
博主选择进入7001节点的redis容器
docker exec -it redis-7001 bash
接着执行(ip需改成自己的,端口也是)
redis-cli --cluster create 192.168.137.200:7001 192.168.137.200:7002 192.168.137.200:7003 \
192.168.137.200:7004 192.168.137.200:7005 192.168.137.200:7006 --cluster-replicas 1
我们可以看到7001为master节点,7006为slave节点,7004为master节点,7003为slave节点,7002为master节点,7005为slave节点。
此时就创建完成了
五、测试
此时连接7001的redis测试,发现它会计算hash槽的位置,来存放值
并且可以执行cluster info命令查看集群状态
cluster nodes查看集群节点
5.1、测试主从模式
我们可以关闭7001节点的redis,看7006是否接替为master节点
我们可以进入7002节点的redis查看,发现7001节点宕机了,7006成功替换为master节点
此时我们重新启动7001节点的redis容器
再次查看集群状态
发现启动好的7001容器变为了slave节点。