Docker高级篇笔记(七)在docker里面进行redis三主三从的集群案例搭建步骤
目录
- 搭建三主三从集群
- 数据读写存储
- 主从容错的切换迁移
- 主从扩容
- 主从缩容
搭建三主三从集群
1 先启动docker
2 拉取redis镜像
3 创建6个redis容器
docker run -d --name redis-node-6381 --net host --privileged=true -v /usr/local/docker_redis/cluster_slave/redis-node-6381:/data redis:latest --cluster-enabled yes --appendonly yes --port 6381docker run -d --name redis-node-6382 --net host --privileged=true -v /usr/local/docker_redis/cluster_slave/redis-node-6382:/data redis:latest --cluster-enabled yes --appendonly yes --port 6382docker run -d --name redis-node-6383 --net host --privileged=true -v /usr/local/docker_redis/cluster_slave/redis-node-6383:/data redis:latest --cluster-enabled yes --appendonly yes --port 6383docker run -d --name redis-node-6384 --net host --privileged=true -v /usr/local/docker_redis/cluster_slave/redis-node-6384:/data redis:latest --cluster-enabled yes --appendonly yes --port 6384docker run -d --name redis-node-6385 --net host --privileged=true -v /usr/local/docker_redis/cluster_slave/redis-node-6385:/data redis:latest --cluster-enabled yes --appendonly yes --port 6385docker run -d --name redis-node-6386 --net host --privileged=true -v /usr/local/docker_redis/cluster_slave/redis-node-6386:/data redis:latest --cluster-enabled yes --appendonly yes --port 6386
执行完成以上的命令
4 ·进入容器redis-node-6381并为6台机器构建集群关系
docker exec -it redis-node-6381 /bin/bash
5 进入之后,开始·构建主从关系
redis-cli --cluster create 192.168.40.129:6381 192.168.40.129:6382 192.168.40.129:6383 192.168.40.129:6384 192.168.40.129:6385 192.168.40.129:6386 --cluster-replicas 1
执行完成以上的命令
–cluster-replicas 1 表示为每个master创建一个slave节点
·一切OK的话,3主3从搞定
对应关系是
数据读写存储
我们已经搭建了三主三从的集群,一个集群里面最大有16384个槽位,现在有3个主节点,那么就会将16384分到3个主里面,每个主节点划分一段槽位;
通过以上的搭建的时候,输出的东西,我们可以看到,redis集群内部已经给你划分好了,哪些槽位是在哪个redis主节点;
我们先连接6381这个节点,里面设置一个值
发现设置不进去,一看提示,是因为根据这个key,算出来的槽位是在12706里面,但是当前的6381这个节点,redis集群只给分了0-----5460这些,所以,使用这个节点,根本存储不进去
问题:
不是搭建了集群,就可以随便连接一个,就可以存储进去嘛,会自动的找集群里面的一些节点存储东西嘛,为什么现在存储不进去呢?
回答
我们进入这个6381,是使用单机版的redis-cli进入的,我们不能使用这个,因为现在是集群,所以应该使用redis-cli -p 6381 -c
加入参数-c,优化路由
进入之后,我们重新设置值,看看能不能存进去
我们看到,已经将这个值存到6383这个节点上面了
主从容错的切换迁移
主从节点的关系如上
我们以一个为例 6381为主,6385为从;
我们先把6381停机,看看6385能不能变为主
以上是停止了6381
我们连接6382 ,查看集群的状态,可以看到
6381宕机了,6385上位成为了新的master。
那么当6381回来了,他还是主嘛?
他回来了,变成了从
主从扩容
一说到扩容,就是新增机器,现在我们想的是实现4主4从,所以还需要加两个redis,一个为主,一个为从,那么我们首先做的就是创建两个redis容器;
6387 6388 两个端口的容器
1 创建两个redis容器
docker run -d --name redis-node-6387 --net host --privileged=true -v /usr/local/docker_redis/cluster_slave/redis-node-6387:/data redis:latest --cluster-enabled yes --appendonly yes --port 6387docker run -d --name redis-node-6388 --net host --privileged=true -v /usr/local/docker_redis/cluster_slave/redis-node-6388:/data redis:latest --cluster-enabled yes --appendonly yes --port 6388
以上是以创建,我们进入6387里面
docker exec -it redis-node-6387 /bin/bash
然后在这个里面,将新的节点,加入到集群里面,命令是:
redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:63816387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人,
相当于6387拜拜6381的码头从而找到组织加入集群
redis-cli --cluster add-node 192.168.40.129:6387 192.168.40.129:6381
执行以上的命令
以上只是将6387加入到集群里面,还没有分配槽位了,刚进去的时候,6387里面的槽位还是空的;
我们进入6381的里面,执行命令,进行重新分派槽号
重新分派槽号
命令:redis-cli --cluster reshard IP地址:端口号
redis-cli --cluster reshard 192.168.40.129:6381
以上就分配完了
我们可以看到6387的槽位,是分段的,也就是说明,当前的槽位是其他节点给他的,分别给了他一点;
为什么6387是3个新的区间,以前的还是连续?
重新分配成本太高,所以前3家各自匀出来一部分,
从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387
6387新节点已经有槽位了,现在就给他分配从节点了
命令:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点IDredis-cli --cluster add-node 192.168.40.129:6388 192.168.40.129:6387 --cluster-slave --cluster-master-id cfaed9404ec032a9bd8523690a7c06c91f71a43c-------这个是6387的编号,按照自己实际情况
执行完成之后,我们看节点集群情况
主从缩容
以上经过扩容,已经成为4主4从,现在我们想要变为原来的3主3从,所以,我们要实现缩容;
我们要先删除从机,因为万一有人再写东西咋办;
使用一个命令就可以删除从节点
命令:redis-cli --cluster del-node ip:从机端口 从机6388节点IDredis-cli --cluster del-node 192.168.40.129:6388 fb4bff2dbd7e801f86bea7ffedbb412e5b70331f
查看集群状态,就可以看到没有从机的了
·将6387的槽号清空,重新分配,本例将清出来的槽号都给6381
6381 13084bfff1d5a6412df33d3372cb22b0a26a208d
6387 cfaed9404ec032a9bd8523690a7c06c91f71a43c
redis-cli --cluster reshard 192.168.40.129:6381
以上就将从机的槽位分配给了其他的主了,之后就可以删除这个空槽位的节点就可以了
命令:redis-cli --cluster del-node ip:端口 6387节点IDredis-cli --cluster del-node 192.168.40.129:6387 cfaed9404ec032a9bd8523690a7c06c91f71a43c
我们再查看集群节点
当前的集群又回到3主3从了
Docker高级篇笔记(七)在docker里面进行redis三主三从的集群案例搭建步骤相关推荐
- 【云原生 | Docker 高级篇】06、Docker 网络模式详解
目录 一.Docker 平台架构图解 整体说明: 二.Docker 网络是什么 三.Docker 网络常用基本命令 1.查看网络 2.查看网络源数据 3.删除网络 4.案例 四.Docker 能干 ...
- ElasticSearch高级篇(数据聚和、自动补全、数据同步、分片集群)
文章目录 1.数据聚合 1.1.聚合的种类 1.2.DSL实现聚合 1.2.1.Bucket聚合语法 1.2.2.聚合结果排序 1.2.3.限定聚合范围 1.2.4.Metric聚合语法 1.2.5. ...
- 《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
文章目录 二.高级篇(大厂进阶) 5.Docker-compose容器编排 5.1是什么 5.2能干嘛 5.3去哪下 5.4 Compose核心概念 5.5 Compose使用的三个步骤 5.6 Co ...
- 『高级篇』docker之DockerSwarm的集群环境搭建(28)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之DockerSwarm的集群环境搭建(28) 上次了解了docker Swarm,这次一起动手操作,搭 ...
- 云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)
前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心.Docker实战.DockerCompose.Harbor以及Swar ...
- 云原生时代必须具备的核心技能之Docker高级篇(Swarm)
解决集群问题 k8s 官网地址:https://docs.docker.com/engine/swarm/ 1.Swarm介绍 Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若 ...
- Docker高级篇-Docker容器内Redis集群配置
Docker容器内Redis集群配置 1.三主三从集成配置 1.1.关闭防火墙.启动docker服务 1.2.新建6个docker容器实例 1.3.进入容器redis-node-1,构建主从关系 1. ...
- 谷粒商城--秒杀服务--高级篇笔记十二
谷粒商城–秒杀服务–高级篇笔记十二 1.后台添加秒杀商品 未配置秒杀服务相关网关 1.1 配置网关 - id: coupon_routeuri: lb://gulimall-couponpredica ...
- python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...
原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17) Appium是一个开 ...
最新文章
- docker 搭建私有仓库
- 有关绑定没有数据显示的问题
- python的flag是什么意思_网上老说的flag是什么意思
- linux 终端显示白底,mac终端使用Item2无法显示颜色的解决方法
- proteus如何添加stm32_新手入门轻松掌握 STM32 串口应用
- micropython stm32f429_[MicroPython]STM32F407开发板驱动OLED液晶屏
- 数据说话!UCloud「硬刚」腾讯云,高性能 AMD 云主机哪家强?
- ELK 使用小技巧(第 5 期)
- arduino图形编程——ardublock
- 一个程序通过窗体句柄控制另一个窗体
- Spring Boot拦截器配置拦截登陆
- 介绍一下ISO9000质量标准
- 《大象 Thinking in UML》学习笔记(三)——UML核心元素之参与者、用例
- 如何通俗易懂的解释什么是云服务器?
- strongswan源代码结构与数据结构
- vue 实现点击选中div后, 右下角显示对号√
- ym——Android从零开始(3)(常用控件+下拉框视图)(新)
- 技术风险防控平台:打造金融交易系统的故障免疫能力
- 文本生成图像这么火,你需要了解这些技术的演变
- 蒸汽式粉条机发展和销售乱象