当前位置: 首页 > news >正文

docker实现redis集群部署

一、docker实现redis集群部署

1、下载redis

docker pull redis:6.0.8

运行6台机器,实现3主3从,端口分别为6381,6382,6383,6384,6385,6386

#redis-node-1
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381

#redis-node-2
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382

#redis-node-3
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383

#redis-node-4
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384

#redis-node-5
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385

#redis-node-6
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

2、启动后查看docker ps

在这里插入图片描述

3、进入redis-node-1进行配置主机信息

docker exec -it redis-node-1 /bin/bash

在这里插入图片描述

4、进行配置集群

#配置集群信息,进行槽位分配
redis-cli --cluster create 192.168.31.79:6381 192.168.31.79:6382 192.168.31.79:6383 192.168.31.79:6384 --cluster-replicas 1

在这里插入图片描述

5、查看集群信息

#连接redis

redis-cli -p 6381

#查看集群信息

cluster info

在这里插入图片描述

#查看节点信息

cluster nodes

在这里插入图片描述
图片显示主从关系

主机从机
63816384
63826385
63836386

二、测试集群

1、进入单机进行set值

docker exec -it redis-node-1 /bin/bash
redis-cli -p 6381

2、设值,set key value有可能报错,要对应的槽位才可以存储数据

在这里插入图片描述

3、进入集群进行set值

#【c】代表进入集群环境,set key value都可以存储
redis-cli -p 6381 -c

在这里插入图片描述

4、查看集群信息

redis-cli --cluster check 192.168.31.79:6381

在这里插入图片描述

三、模拟master宕机

1、停掉redis-node-1

docker stop redis-node-1

在这里插入图片描述

2、进入其他主机master查看情况,例如:redis-node-2

docker exec -it redis-node-2 /bin/bash
redis-cli --cluster check 192.168.31.79:6382

在这里插入图片描述

4、模拟master宕机后重启后,会变成slave

docker start redis-node-1

在这里插入图片描述

5、进入其他主机master查看情况,例如:redis-node-2

docker exec -it redis-node-2 /bin/bash
redis-cli --cluster check 192.168.31.79:6382

在这里插入图片描述

四、主从扩容

1、扩容两台主机

新增两台一主一从6387,6388,启动6387,6388

#redis-node-7
docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387

#redis-node-8
docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

在这里插入图片描述

2、配置redis-node-7

#进入redis-node-7
docker exec -it redis-node-7 /bin/bash

#加入集群
redis-cli --cluster add-node 192.168.31.79:6387 192.168.31.79:6381

#检查集群信息
redis-cli --cluster check 192.168.31.79:6381

执行结果,成功加入到集群中
在这里插入图片描述

4、重新分配槽号

#按照提示输入
redis-cli --cluster reshard 192.168.31.79:6381
#16384/4=4096
4096
接受id:6387的id
槽位来源:all
yes

在这里插入图片描述
分配结果
在这里插入图片描述

5、6388加入集群到6387master下面

redis-cli --cluster add-node 192.168.31.79:6388 192.168.31.79:6387 --cluster-slave --cluster-master-id  261a0698556d6b927d5134b31f9d254d5dd209e5

在这里插入图片描述

五、主从缩容

缩容6387,6388,先删除从机再删除主机

1、删除从机6388

#进入其他master
docker exec -it redis-node-2 /bin/bash
#删除6388
redis-cli --cluster del-node 192.168.31.79:6388 77d2ef93da14aaddf8666b9f8c8e3d6bd73dc2b5

在这里插入图片描述

2、重新分配6387

#进入其他master
docker exec -it redis-node-2 /bin/bash
redis-cli --cluster reshard 192.168.31.79:6381
4096
接收master-id:6381的id
槽位来源-id:6387的id
done

yes

在这里插入图片描述
结果
在这里插入图片描述

3、删除6387主节点

 redis-cli --cluster del-node 192.168.31.79:6387 261a0698556d6b927d5134b31f9d254d5dd209e5

在这里插入图片描述

祝你好运

相关文章:

  • 什么是数字人、LLM、agent、具身智能,区别是什么
  • Windows系统编程项目(一)进程管理器
  • 内存泄漏指什么?常见的内存泄漏有哪些?
  • SpringBoot整合Swagger
  • 电子电气架构 --- 主机厂电子电气架构演进
  • QT:QPen、QBrush、与图形抗锯齿的关联
  • 线程同步辅助类的使用
  • 4.3MISC流量分析练习-wireshark-https
  • 内网渗透测试-Vulnerable Docker靶场
  • 深入探究OPA1612AIDR:性能剖析、引脚功能、应用实例与注意事项
  • 如何让别人的电脑蓝屏?(没有任何实质性损害,重启后仍然能正常运行;可恶搞)
  • 向量数据库milvus部署
  • Baklib驱动内容中台智能推荐优化
  • 《深度剖析:生成对抗网络中生成器与判别器的高效协作之道》
  • 华为数通Datacom认证体系详解:从HCIA到HCIE的进阶路径
  • 两种常见视频传输线材
  • 如何防止 Instagram 账号被盗用:安全设置与注意事项
  • 学习threejs,Materials常量汇总
  • Linux中Shell运行原理和权限(下)(4)
  • 玄机-第六章 流量特征分析-蚁剑流量分析
  • 印方称所有敌对行动均得到反击和回应,不会升级冲突
  • 警方通报男子地铁上拍视频致乘客恐慌受伤:列车运行一度延误,已行拘
  • 巴基斯坦关闭全部领空
  • 追光|铁皮房、土操场,这有一座“筑梦”摔跤馆
  • 保利发展前4个月销售额约876亿元,单月斥资128亿元获4个项目
  • 巴国家安全委员会授权军方自主决定对印反击措施