Docker集群部署-redis集群

news2024/10/7 4:36:06

学习要求

利用Docker实现redis 集群的部署,实现3主3从集群配置,并在此基础上实现主从扩容、缩容。

学习准备

要求实验主机能够连接外网,已经正确安装Docker,并关闭防火墙和selinux。

学习步骤

  1. 创建6个docker容器实例,redis-node-1,redis-node-2,redis-node-3,redis-node-4,redis-node-5,redis-node-6

--cluster-enabled yes  开启redis集群

  --appendonly yes  开启持久化

# 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

# 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

# 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

# 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

# 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

# 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)进入容器redis-node-1

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

(3)构建主从关系

#redis-cli --cluster create 192.168.111.147:6381 192.168.111.147:6382 192.168.111.147:6383 192.168.111.147:6384 192.168.111.147:6385 192.168.111.147:6386 --cluster-replicas 1

--cluster-replicas 1 表示为每个master创建一个slave节点

注意这条语句的含义:--------------------------ip地址要换成你自己的ip地址

redis-cli --cluster create 命令用于创建一个 Redis 集群。

  • 192.168.111.147:6381 192.168.111.147:6382 192.168.111.147:6383 192.168.111.147:6384 192.168.111.147:6385 192.168.111.147:6386这是用于构建集群的 Redis 实例的地址和端口号。在这个例子中,六个实例分别在相同的主机(IP 地址为 192.168.111.147)上的不同端口上运行。每个实例都需要提供 host:port 的形式,用空格分隔。(也就是ip地址:端口号)

  • 这条命令执行之后

  • Redis 集群将使用提供的实例地址和端口创建,每个主节点都会有一个从节点。这样组成的集群将用于分布式存储和处理数据,具备高可用性和可伸缩性的特点。

  • 共有 6 个主节点和 6 个从节点,总共 12 个节点。每个主节点负责指定的数据分片,而从节点则用于提供冗余和高可用性。注意,这个集群是在单个主机上构建的,这在实际生产环境中可能不太常见,通常在不同的主机上部署 Redis 节点以实现真正的分布式和高可用性

 (4)进入6381节点,查看节点状态

# redis-cli -p 6381

[root@slave3 ~]# docker exec -it redis-node-1 /bin/bash

root@slave3:/data# redis-cli -p 6381

127.0.0.1:6381> keys

redis-cli -p 6381 是使用 Redis 客户端连接到指定端口号为 6381 的 Redis 服务器的命令。

  • redis-cli:这是 Redis 客户端命令行工具的名称,用于与 Redis 服务器建立连接并执行命令。
  • -p 6381:这是选项参数 -p,用于指定 Redis 服务器的端口号。在此示例中,端口号设置为 6381。

能够使用 Redis 客户端与运行在指定端口号为 6381 的 Redis 服务器进行交互。您可以在命令行中输入 Redis 命令,例如 SET、GET 等,以与 Redis 服务器进行通信并执行各种操作,如存储和检索数据,执行事务,处理数据结构等

 (5)查看节点信息

root@slave3:/data# redis-cli -p 6381

127.0.0.1:6381> cluster info

cluster_state:ok

cluster_slots_assigned:16384

cluster_slots_ok:16384

cluster_slots_pfail:0

cluster_slots_fail:0

cluster_known_nodes:6

cluster_size:3

cluster_current_epoch:7

cluster_my_epoch:7

cluster_stats_messages_ping_sent:106

cluster_stats_messages_pong_sent:108

cluster_stats_messages_sent:214

cluster_stats_messages_ping_received:108

cluster_stats_messages_pong_received:106

(5)重新进入6381节点,加入-c参数,优化路由

我进入6382节点,因为迁移了

root@slave3:/data# redis-cli -p 6381 -c

127.0.0.1:6381> set keys1 value1

-> Redirected to slot [11605] located at 192.168.10.203:6383

OK

192.168.10.203:6383> set keys2 value2

-> Redirected to slot [7478] located at 192.168.10.203:6382

OK

 (6)查看节点信息

 

  • 每个节点的槽位分配情况:

    • 节点 10.90.6.82:6382 分配了 5462 个槽位,拥有 4 个键和 1 个从节点。
    • 节点 10.90.6.82:6383 分配了 5461 个槽位,拥有 4 个键和 1 个从节点。
    • 节点 10.90.6.82:6381 分配了 5461 个槽位,拥有 1 个键和 1 个从节点。
  • 集群中的主节点和从节点信息:

    • 主节点 5fe2c732e6713d368326567450161e9f44272de810.90.6.82:6382)负责 5461 到 10922 的槽位范围,有 1 个从节点。
    • 主节点 abb3dde0a500eb4c5869c4789c25204dad05296c10.90.6.82:6383)负责 10923 到 16383 的槽位范围,有 1 个从节点。
    • 主节点 2f672aab2c68a5093b9aec58af6098370234a93a10.90.6.82:6381)负责 0 到 5460 的槽位范围,有 1 个从节点。
  • 其它检查结果:

    • 所有节点就槽位配置达成一致。
    • 所有的槽位(16384)都已被覆盖,没有空槽位。

(7)停止主机6381

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

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

相关文章

OpenFeign 源码分析

(学习别人的思想,可以找 bug,优化你的代码,提高代码的健壮性)看源码之前要先大致猜想一下 他是怎么实现的?(先使用在分析) 5.1 OpenFeign 的原理是什么? 根据前文的案例…

3DCAT实时云渲染助力VR虚拟现实迈向成熟

近年来,虚拟现实(Virtual Reality, VR)技术在市场上的应用越来越广泛,虚拟现实已成为一个热门的科技话题。相关数据显示,2019年至2021年,我国虚拟现实市场规模不断扩大,从2019年的282.8亿元增长…

uniapp开发的APP升级、整包更新和热更新组件

插件地址&#xff1a;app升级、整包更新和热更新组件 仔细阅读说明文档&#xff0c;后台接口返回的数据格式要严格按照文档要求的格式返回&#xff0c;前端示例代码 或者根据实际业务修改 如果需要自动检测新版本&#xff0c;建议写在App.vue的onShow中&#xff0c; <scrip…

化繁为简——论五大市场风格

A股市场至今已有逾5000家上市公司&#xff0c;行业分析有助于化简选股过程&#xff0c;然而如果想要对于各个行业都获得高于平均水平的了解&#xff0c;行业分类体系又显得繁杂。以中信行业分类体系为例&#xff0c;其一级行业包括30个行业类别&#xff0c;二级行业包括109个行…

高效工作——PPT动画制作【图文板(1)】

今天&#xff0c;我来教大家如何制作PPT或PPTX动画。希望这对你能有所帮助。{提示&#xff1a;改变原文&#xff1a;查看本人的“高效工作——PPT动画制作【文字板&#xff08;1&#xff09;】”} 首先&#xff0c;打开WPS office&#xff0c;点击创建PPT&#xff0c;点击创建空…

安全头响应头(二)​X-Frame-Options​

一 X-Frame-Options 1) CSP 安全头与前端编程息息相关,后续通过对CSP头的理解加深对前端知识的理解 ① 点击劫持 说明&#xff1a;X-FRAME-OPTIONS是微软提出的一个http头,专门用来防御利用iframe嵌套的点击劫持攻击 相关参考 ② 简介 背景&#xff1a; 出于安全考虑…

5.8.8 TCP流量控制

5.8.8 TCP流量控制 计算机网络的流量控制实际上是调节发送方的速率使得接收方能够及时处理的一个过程。 在TCP中采用的是大小可变的滑动窗口的方式进行流量控制&#xff0c;窗口大小的单位是字节。 如图 根据接收方的接收能力&#xff0c;通过接收窗口rwnd可以实现一个端到端…

PMO对企业的价值:有效赋能+战略落地︱富途网络PMO总监苗秀娟

富途网络科技&#xff08;深圳&#xff09;有限公司PMO总监苗秀娟女士受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;PMO对企业的价值&#xff1a;有效赋能战略落地。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议…

【LeetCode】332. 重新安排行程

332. 重新安排行程&#xff08;困难&#xff09; 思路 由于题目保证了存在一条合法的旅行路线&#xff0c;并要求按照字典序返回完整的路线。该方法通过深度优先搜索和栈的结合&#xff0c;可以保证每次选择字典序最小的终点进行访问&#xff0c;从而得到按照字典序排列的完整旅…

【Pandas】dataframe互转

目录 一、list 1.1 dataframe转list 1.2 list转dataframe 1.2.1 先用list构造字典&#xff0c;再转dataframe 1.2.2 对于符合列表&#xff0c;可以直接转成dataframe 二、dict 三、spark dataframe 一、list 【Pandas学习】list列表和Dataframe互相转换_list转datafram…

【算法】十大排序算法以及具体用例算法题

文章目录 1:冒泡排序2:选择排序3:插入排序4:希尔排序5:堆排序6:计数排序7:基数排序8:快速排序9:归并排序10:桶排序 源代码下载 1:冒泡排序 /** 冒泡排序是内部排序* 冒泡排序将会每一次都从头开始遍历* 每一次遍历都会把最大的数据放到最后一个* 因此每一次都可以少遍历一个元…

qt creator常用快捷键

F1 弹出选择类的qt帮助文档 F2进入光标所在代码的定义/声明 F4 在同名.cpp和.h文件中切换 altshiftr 在设计师界面,可以预览当前UI ctrlr编译运行当前工程&#xff0c;同界面的播放键ctrlb构建编译当前工程 ctrli 自动对齐代码,要选中才有效 ctrlshiftf 弹出全局查找框 …

2023最全网络安全工程师面试题(附答案)

2023年过去了一大半&#xff0c;先来灵魂三连问&#xff0c;年初定的目标完成多少了&#xff1f;薪资涨了吗&#xff1f;女朋友找到了吗&#xff1f; 一、网络安全岗面试题1. 什么是 DDoS 攻击&#xff1f;如何防范&#xff1f; 答&#xff1a;DDoS 攻击是指利用大量的计算机或…

servlet-filter(过滤器)

1.filter简述 1.1过滤器概念 Filter也称之为过滤器&#xff0c;它是Servlet技术中最实用的技术&#xff0c; 作用1是对访问web服务器请求进行拦截&#xff0c;过滤了&#xff0c;例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截&#xff0c;从而实现一些特殊的功能。…

kaggle金融量化竞赛top方案汇总

看了一下今年的研究生项目&#xff0c;金融量化果然还是烫门&#xff0c;录取分数线越来越高&#xff0c;申请人数依然居高不下&#xff0c;这么多人拼命卷... 目前来看&#xff0c;只卷学历&#xff0c;理论知识肯定是不够的&#xff0c;还得要实战背景&#xff0c;对于学生来…

Netty解决粘包半包问题自定义协议

目录 一、粘包 & 半包 1、现象分析 粘包 半包 二、解决方案 1、短连接 2、定长解码器 3、分隔符 4、长度字段解码器 三、协议设计与解析 1、HTTP 2、自定义协议 自定义协议要素 Sharable 一、粘包 & 半包 1、现象分析 因为tcp是用二进制流进行传输的&a…

性能测试-性能调优(提高系统吞吐量QPS/TPS)一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、系统吞度量要素…

CyclicBarrier 源码

CyclicBarrier 源码 1.构造方法 参数 n 为等待的线程数 CyclicBarrier cyclicBarrier new CyclicBarrier(n);public CyclicBarrier(int parties) {this(parties, null);}参数 barrierAction 为当等待的线程达到 参数 parties 时执行的线程任务 blic CyclicBarrier(int par…

RCE漏洞利用挖掘方法

RCE漏洞利用挖掘方法 一、从命令执行漏洞到getshell二、命令执行漏洞详解2.1、靶场实操—DVWA&#xff08;Low级别&#xff09;2.2、靶场实操—DVWA&#xff08;Medium级别&#xff09;2.3、靶场实操—DVWA&#xff08;High级别&#xff09;2.4、靶场实操—DVWA&#xff08;Imp…

form表单使用Select 选择器

案例: ps&#xff1a;年度的值类型要与select 选择器中 value 类型一致&#xff01;&#xff01; 如果input框中显示的是数字&#xff0c;说明年度的值没有与选择器中的的value一致&#xff01;&#xff01;&#xff01; YearNum 要与 value 类型一致&#xff01;&#xff01…