基于docker部署redis多主多从集群

news2024/11/20 9:34:08

在docker中部署redis多主多从集群,准备部署三对一主一从服务,共6个

首先获取镜像

这里使用的是6.0.8版本

docker pull redis:6.0.8

 

启动六个容器

docker run -d --name redis-node1 --net host --privileged=true -v /usr/local/redis/node1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6371

docker run -d --name redis-node2 --net host --privileged=true -v /usr/local/redis/node2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6372

docker run -d --name redis-node3 --net host --privileged=true -v /usr/local/redis/node3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6373

docker run -d --name redis-node4 --net host --privileged=true -v /usr/local/redis/node4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6374

docker run -d --name redis-node5 --net host --privileged=true -v /usr/local/redis/node5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6375

docker run -d --name redis-node6 --net host --privileged=true -v /usr/local/redis/node6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6376

命令说明:

--net host : 使用宿主机的IP和端口,默认

--privileged=true : 获取宿主机root用户权限

-v /usr/local/redis/node1:/data : 挂载容器数据卷

--cluster-enabled yes : 开启redis集群

--appendonly yes : 开启持久化

构建主从关系

进入一个容器

docker exec -it redis-node1 /bin/bash

执行下面命令,下面命令中ip换成实际ip(记得打开6个容器使用的端口,以及每个端口+10000的端口,因为redis集群通信使用的端口是主端口+10000。我这里就打开了6371到6376 以及 16371到16376 几个端口)

--cluster-replicas 1  表示1主1从分配

redis-cli --cluster create 111.111.111.111:6371 111.111.111.111:6372 111.111.111.111:6373 111.111.111.111:6374 111.111.111.111:6375 111.111.111.111:6376 --cluster-replicas 1

执行后出现下面内容,显示主从对应关系,可以看到是3主3从,如果同意配置输入yes回车 

 yes之后出现下面内容表示成功

使用查看集群状态命令同样可以看到上面描述的对应关系等内容,如下

redis-cli --cluster check 111.111.111.111:6371

 

查看集群信息

同样使用docker exec命令进入容器1 

连接redis客户端

redis-cli -p 6271

查看信息

cluster info

 可以看到已知节点为6个

查看节点信息

cluster nodes

 可以看到三个主节点和三个从节点的ip和端口,从对应的编码来看,4号从机挂在1号主机,5号从机挂在2号主机,6号从机挂在3号主机。这个对应关系不是固定的,可能下次部署的时候对应关系就不是这样了

 

测试数据读写

同样docker exec进入容器1

使用集群模式连接redis1(普通的单机版连接方式连接之后,存数据可能会出现error情况,原因是存的key计算的hash值跟16383取余之后,不在当前redis节点的存储范围)

后面加个-c就表示以集群方式连接

redis-cli -p 6371 -c

set一个k1 v1 ,会提示重定向到6373所在节点,因为k1计算出来的12706槽位在6373节点范围

 

宕机切换迁移

当一个主机宕机的时候,从机应该上位为主机

docker stop redis-node1 把6371节点停掉,之后稍等一会儿,等集群内部发心跳通知

进入6372容器,连接6372,查看集群状态

可以看到6371节点已经是fail了,并且之前他的从节点6374上位成了主节点

并且之前存的数据也是可以正常访问的

再次启动6371节点后,查看节点状态,发现6374依旧是master节点,6371变成了slave节点

如果希望还是恢复成原来的6371为主节点,可以把6374停一会儿再启动,两个节点身份就会再次互换回来

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue实现点击按钮或者图标可编辑输入框

博主介绍 📢点击下列内容可跳转对应的界面,查看更多精彩内容! 🍎主页:水香木鱼 🍍专栏:后台管理系统 文章目录 简介:这是一篇有关【Vue - 实现点击按钮(笔图标&#xff…

VS五子棋大战

本项目里面只是浅述了一下基本实现步骤,很多细节的地方都在注释中标注了,如需完整代码请去博主码云哦。zqy (zhang-qinyang1) - Gitee.com 目录 一、用到的关键技术点 二、主要模块 1.使用mybatis操作连接数据库 1.1修改spring配置文件 1.2创建实体…

json.converter

爬虫组件分析目录概述需求:设计思路实现思路分析1.ActivityProcessor2.AssociationJsonConverter3.BaseBpmnJsonConverter4.BoundaryEventJsonConverter5.BpmnJsonConverter拓展实现参考资料和推荐阅读Survive by day and develop by night. talk for import biz , …

【出人意料】一种基于Vue2监听器(watch)和定时器(setInterval)的轨迹播放方法实现方案

1、需求 数据库中有设备的经纬度记录,前端需要实现从数据库中取到数据后在地图上显示轨迹,显示轨迹的方式就是一个一个点地有序显示。点与点之间用线段连接,最终构成一条轨迹线。 2、场景过程 前端定义一个播放暂停按钮;点击播…

【Flutter】【package】auto_size_text 文字自动适配大小

文章目录前言一、auto_size_text 是什么?二、使用1.简单的使用2.参数说明3.group4.rich text总结前言 auto_size_text :https://pub.flutter-io.cn/packages/auto_size_text 一、auto_size_text 是什么? 第三方的插件,能够自动适…

DDD的落地,需要基础设施的大力支持

1. 概览 对于复杂业务,DDD 绝对是一把神器,由于它过于复杂,很多人望而却步。因为太过严谨,形成了很多设计模式、规范化流程,这些爆炸的信息已经成为 DDD 落地的重大阻力。 但,如果我们将这些规范化的流程…

1.4_28 Axure RP 9 for mac 高保真原型图 - 案例27【中继器 - 后台管理系统5】功能-弹窗修改数据

相关链接 目录Axure中文学习网AxureShopAxureShop-QA 案例目标1. 了解使用中继器,弹窗修改数据的实现方式 一、成品效果 Axure Cloud 案例27【中继器 - 后台管理系统5】功能-弹窗修改数据 版本更新一、修改功能   1.1 点击修改按钮,标记该条数据&am…

国产软件Bigemap与国产在线地图源<星图地球数据云>推动国内新GIS应用

自星图地球数据云(GEOVIS Earth Datacloud)图源成为国产基础软件Bigemap的在线地图数据服务平台之一以来,其日均地图瓦片请求调用量目前已经超过2亿。 “星图地球数据云"是中科星图(股票代码[688568])旗下子公司——星图地球倾力打造的在线时空数据云服务平台…

基于约束的装配设计【CadQuery】

本教程介绍在CadQuery中如何使用装配约束功能来构建逼真的模型,我们将组装一个由 20x20 V 型槽型材制成的门组件。 1、定义参数 我们希望从定义模型参数开始,以便以后可以轻松更改尺寸: import cadquery as cq# Parameters H 400 W 200…

2.8 高收藏率小红书笔记怎么写?试一试这7类方法吧【玩赚小红书】

1、教程攻略类 ​ ​ ​ 打开任何一类的美妆产品,最常见的就是各类妆容教程和变美攻略。就拿教程最多的眼妆来说吧,很多女孩子都觉得眼妆很难画好。 如果是碰到网上流行的网红眼影,比如什么猫眼妆、截断式眼影、桃花眼影等等。 【 高收藏秘…

社区团购小程序制作有什么优势_ 社区团购小程序的作用

打造属于自身的独立小程序拥有更高的自主性,特别是基于得店小程序的创新产品力,从设计上彰显品牌理念,到功能上进行扩展拓宽营销方式,都完全自我掌控, ● 更重要的是,相比于平台上各种复杂的机制&#xff0…

点击化学接头BCN-endo-PEG15-NH2,endo-BCN-十五聚乙二醇-胺

(本品应密封避光,储存于阴凉,干燥,通风处,取用一定要干燥,避免频繁的溶解和冻干) 【产品理化指标】: CAS:N/A 化学式:C43H80N2O17,分子量&#xf…

Vue3+TS+Vite 搭建组件库记录

使用pnpm 安装 npm install pnpm -g初始化package.json pnpm init新建配置文件 .npmrc shamefully-hoist true这里简单说下为什么要配置shamefully-hoist。 如果某些工具仅在根目录的node_modules时才有效,可以将其设置为true来提升那些不在根目录的node_modu…

防火墙安全策略

目录 一、包过滤技术 包过滤 安全策略 安全策略的原理 安全策略分类 二、防火墙的转发原理(重点) 首包流程 会话表 状态检测机制 会话在转发流程中的位置 多通道协议技术 ASPF 端口识别对多通道协议的支持 分片缓存 三、防火墙的安全策略配…

万应案例精选|跨壁垒、辅决策,万应低代码助力国网电力内部培训数字化架构升级

万应案例精选|跨壁垒、辅决策,万应低代码助力国网电力内部培训数字化架构升级一、项目背景 国网某省电力有限公司(下称“国网电力”),是国家电网有限公司的全资子公司,现设20个职能部门,下设16…

智慧法院解决方案-最新全套文件

智慧法院解决方案-最新全套文件一、建设背景二、架构思路三、建设方案四、获取 - 智慧法院全套最新解决方案合集一、建设背景 智慧法院是指充分运用互联网、云计算、大数据、人工智能等技术,促进审判体系与审判能力现代化,实现人民法院 高度智能化的运行…

Java基础—普通阻塞队列

普通阻塞队列 除了刚介绍的两个队列,其他队列都是阻塞队列,都实现了接口BlockingQueue,在入队/出队时可能等待,主要方法有: 入队,如果队列满,等待直到队列有空间 void put(E e) throws Inter…

计算机毕业设计Python+Django的银行取号排队系统

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时…

MySQL之短时间提高性能的措施

文章目录前言短连接风暴慢查询QPS(每秒查询数)突增总结前言 我们在使用数据库的时候,总会有那么一段时间,数据库的压力会特别大。比如,用户的使用的高峰期,或者活动上线的时候等等。那么为了应对突然暴增的…

Child Tuning: 反向传播版的Dropout

这篇文章主要是对EMNLP2021上的论文Raise a Child in Large Language Model: Towards Effective and Generalizable Fine-tuning进行讲解。论文标题有些抽象,但是用作者的话来说,这篇论文的思想可以归结为两个词:Child Tuning 虽然这篇文章主…