系列十五、搭建redis集群

一、概述

        上篇文章介绍了redis集群的相关知识,本章实战演示redis的集群环境的详细搭建步骤。如果帮助到了你,请点赞 + 收藏 + 关注!有疑问的话也可以评论区交流。

二、搭建步骤

2.1、预备知识

        判断一个集群中的节点是否可用,是集群中的所有主节点选举的结果,如果半数以上的节点认为当前节点挂了,那么当前节点就是挂了,所以搭建redis集群时,在满足系统吞吐量的前提下,建议节点数最好为奇数,那么搭建集群将至少需要3个主节点+3个从节点,即至少需要6个节点,考虑到本机笔记本的性能问题,我这里就在一台机器上使用6个节点进行搭建演示。

        注意事项:现在是搭建集群,需要把当前已经启动的所有redis服务关闭掉!

2.2、前置准备(安装ruby和redis集群依赖)

# 联网下载ruby依赖
yum install -y ruby rubygems# 安装redis-3.2.1.gem
gem install redis-3.2.1.gem# 我分享的redis-3.2.1.gem
链接:https://pan.baidu.com/s/1NrnB3v5IDr_h5JzumjA0Jw?pwd=yyds 
提取码:yyds 

2.3、详细步骤

2.3.1、创建文件夹

在 /myconf/redis/ 目录创建7个文件夹,分别为 7001、7002、7003、7004、7005、7006、7007

mkdir 7001 7002 7003 7004 7005 7006 7007

2.3.2、拷贝配置文件

每个目录复制一份配置文件

cp redis6379_standAlone_aof.conf 7001/redis.conf
cp redis6379_standAlone_aof.conf 7002/redis.conf
cp redis6379_standAlone_aof.conf 7003/redis.conf
cp redis6379_standAlone_aof.conf 7004/redis.conf
cp redis6379_standAlone_aof.conf 7005/redis.conf
cp redis6379_standAlone_aof.conf 7006/redis.conf
cp redis6379_standAlone_aof.conf 7007/redis.conf

2.3.3、修改配置文件的信息

修改不同目录的配置文件,主要修改如下内容:

port        ${port},例如:7001文件夹中的port需修改为7001                                    # 这几个文件夹中的redis.conf分别修改为对应的端口

bind        0.0.0.0                                                                                                        # 开启远程连接

daemonize        yes                                                                                                   # 以守护进程运行       

dbfilename        dump${port}.rdb,例如:dump7001.rdb                                         # rdb文件的名称

cluster-enabled        yes                                                                                            # 开启集群模式

cluster-config-file        nodes-${port}.conf,例如:nodes-7001.conf                        # 集群节点配置文件

cluster-node-timeout        5000                                                                                  # 集群节点超时时间

appendonly        yes                                                                                                  # 开启aof的持久化机制

appendfilename        "appendonly-${port}.aof",例如:"appendonly-7001.aof"       # 生成的持久化文件的名称

2.3.4、启动节点

指定不同目录的配置文件,启动7个节点 

./redis-server /myconf/redis/7001/redis.conf
./redis-server /myconf/redis/7002/redis.conf
./redis-server /myconf/redis/7003/redis.conf
./redis-server /myconf/redis/7004/redis.conf
./redis-server /myconf/redis/7005/redis.conf
./redis-server /myconf/redis/7006/redis.conf
./redis-server /myconf/redis/7007/redis.conf

 

2.3.5、创建集群

创建集群

第一步:拷贝redis源码包中的redis-trib.rb 至 /usr/local/bin 目录:cp /opt/redis-4.0.10/src/redis-trib.rb ./

第二步:创建集群

指令解释:

            --replicas 1:指定每个master节点有几个slave节点
            192.168.173.232:7001 :master1
            192.168.173.232:7002 :master2
            192.168.173.232:7003 :master3
            192.168.173.232:7004 :masterXxx的slave节点
            192.168.173.232:7005 :masterXxx的slave节点
            192.168.173.232:7006 :masterXxx的slave节点 

注意事项:

        (1)master的slave节点的选举是随机的。

        (2)第一次创建master集群时,会打印各个节点的信息(例如角色、从节点是谁)

./redis-trib.rb create --replicas 1 192.168.173.232:7001 192.168.173.232:7002 192.168.173.232:7003 192.168.173.232:7004 192.168.173.232:7005 192.168.173.232:7006

2.4、redis-cli连接测试

 

2.5、查看集群状态

(1)查看集群状态:

        第一次创建集群时,会在控制台打印各个节点的详细信息,如果后续想要查看节点的情况应该怎办呢?可以使用如下指令进行查看:

        ./redis-trib.rb check 192.168.173.232:7001

        说明:后边的192.168.173.232:7001为集群中的任意一个节点

(2)集群节点状态说明

主节点:

        ①主节点存在hash slots,且各个主节点的hash slots不存在交叉的情况;

        ②主节点不能删除;

        ③一个主节点可以有多个从节点;

        ④主节点宕机时,多个slave节点自动选举新的主节点;

从节点:

        ①从节点没有hash slots;

        ②从节点可以删除;

        ③从节点不负责数据的写,只负责数据的同步;

2.6、添加主节点

语法:./redis-trib.rb add-node <新加入节点IP:新加入节点PORT> <集群中任意节点IP:集群中任意节点PORT>

案例:./redis-trib.rb add-node 192.168.173.232:7008 192.168.173.232:7001

注意事项:

        (1)要添加的节点必须以集群模式启动;

        (2)默认情况下该节点就是以master节点的形式添加

2.7、添加从节点

语法:./redis-trib.rb add-node --slave  <新加入节点IP:新加入节点PORT> <集群中任意节点IP:集群中任意节点PORT>

案例:./redis-trib.rb add-node --slave 192.168.173.232:7009 192.168.173.232:7001

注意事项:

        (1)要添加的节点必须以集群模式启动;

        (2)当添加的从节点没有指定主节点时,redis会随机给从节点较少的主节点添加当前节点作为它的从节点

为指定的master节点添加从节点

语法:./redis-trib.rb add-node --slave --master-id <masterID> <新加入节点IP:新加入节点PORT> <集群中任意节点IP:集群中任意节点PORT>

案例:./redis-trib.rb add-node --slave --master-id b76e7a8dc7eab793eab245f71e2bc9aabf6997ec 192.168.173.232:7009 192.168.173.232:7001

2.8、删除从节点

语法:./redis-trib.rb del-node <集群中任意节点IP:集群中任意节点PORT> <删除节点ID>

案例:./redis-trib.rb del-node 192.168.173.232:7009 b76e7a8dc7eab793eab245f71e2bc9aabf69xxxx

注意事项:被删除的节点必须是从节点或者是没有分配hash slots的节点

2.9、集群在线分片

语法:./redis-trib.rb reshard <集群中任意节点IP:集群中任意节点PORT>

案例:./redis-trib.rb reshard 192.168.173.232:7009

2.10、 关闭redis集群

语法:./redis-cli -c <-h 192.168.7.4> -p port SHUTDOWN

案例:
        ./redis-cli -c -p 7001 SHUTDOWN

        ./redis-cli -c -p 7001 SHUTDOWN
        ./redis-cli -c -p 7002 SHUTDOWN
        ./redis-cli -c -p 7003 SHUTDOWN
        ./redis-cli -c -p 7004 SHUTDOWN
        ./redis-cli -c -p 7005 SHUTDOWN
        ./redis-cli -c -p 7006 SHUTDOWN
        ./redis-cli -c -p 7007 SHUTDOWN

2.11、参考

https://www.bilibili.com/video/BV1jD4y1Q7tU?p=28&vd_source=72ebc194dbfa51ec950a52c25c337f7c

 

 

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

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

相关文章

【SpringBoot篇】详解基于Redis实现短信登录的操作

文章目录 &#x1f970;前言&#x1f6f8;StringRedisTemplate&#x1f339;使用StringRedisTemplate⭐常用的方法 &#x1f6f8;为什么我们要使用Redis代替Session进行登录操作&#x1f386;具体使用✨编写拦截器✨配置拦截器&#x1f33a;基于Redis实现发送手机验证码操作&am…

EarCMS 前台任意文件上传漏洞复现

0x01 产品简介 EarCMS是一个APP内测分发系统的平台。 0x02 漏洞概述 EarCMS前台put_upload.php中,存在pw参数硬编码问题,同时sql语句pdo使用错误,没有有效过滤sql语句,可以控制文件名和后缀,导致可以任意文件上传。 0x03 复现环境 FOFA:app="EearCMS" 0x0…

Flutter实现自定义二级列表

在Flutter开发中&#xff0c;其实系统已经给我们提供了一个可靠的二级列表展开的API&#xff08;ExpansionPanelList&#xff09;&#xff0c;我们先看系统的二级列表展开效果&#xff0c;一次只能展开一个&#xff0c;用ExpansionPanelList.radio实现 由此可见&#xff0c;已经…

容器化升级对服务有哪些影响?

容器技术是近几年计算机领域的热门技术&#xff0c;特别是随着各种云服务的发展&#xff0c;越来越多的服务运行在以 Docker 为代表的容器之内。 本文我们就来分享一下容器化技术相关的知识。 容器化技术简介 相比传统虚拟化技术&#xff0c;容器技术是一种更加轻量级的操作…

分治法求最大子列和

给定N个整数的序列{ A1, A2, …, AN}&#xff0c;其中可能有正数也可能有负数&#xff0c;找出其中连续的一个子数列&#xff08;不允许空序列&#xff09;&#xff0c;使它们的和尽可能大&#xff0c;如果是负数&#xff0c;则返回0。使用下列函数&#xff0c;完成分治法求最大…

CorelDRAW软件2024版本好用吗?有哪些功能优势

CorelDRAW是一款综合性强大的专业平面设计软件&#xff0c;其功能覆盖了矢量图形设计、高级文字编辑、精细绘图以及多页文档和页面设计。该软件不仅适用于广告设计、包装设计&#xff0c;还广泛应用于出版、网页设计和多媒体制作等多个领域。下面就给大家介绍一下CorelDRAW这款…

0012Java安卓程序设计-ssm记账app

文章目录 **摘要**目 录系统设计5.1 APP端&#xff08;用户功能&#xff09;5.2后端管理员功能模块开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘要 网络的广泛应用给生活带来了十分的便利。所以把记账管理与现在网络相…

arkts编译报错-arkts-limited-stdlib错误【Bug已完美解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:适配指导案例此Bug解决方案总结项目场景: arkts编译报错-arkts-limited-stdlib错误。 我用Deveco studio4.0 beta2开发应用,报arkts-limited-stdlib错误 报错内容为: ERROR: ArKTS:ERROR File: D:/prRevivw/3792lapplica…

Android 11.0 systemui锁屏页面时钟显示样式的定制功能实现

1.前言 在11.0的系统ROM定制化开发中,在进行systemui的相关开发中,当开机完成后在锁屏页面就会显示时间日期的功能,由于 开发产品的需求要求时间显示周几上午下午接下来就需要对锁屏显示时间日期的相关布局进行分析,然后实现相关功能 效果图如图: 2.systemui锁屏页面时钟显…

mysql原理--B+树索引

1.没有索引的查找 1.1.在一个页中的查找 (1). 以主键为搜索条件 可以在 页目录 中使用二分法快速定位到对应的槽&#xff0c;然后再遍历该槽对应分组中的记录即可快速找到指定的记录。 (2). 以其他列作为搜索条件 这种情况下只能从 最小记录 开始依次遍历单链表中的每条记录&am…

值得收藏的练习打字网站

本文对一些好用的练习打字的网站进行了汇总整理&#xff0c;方便大家使用 一&#xff1a;程序猿练习打字&#xff1a; 1.Typing Practice for Programmers http://Typing.io 是程序员的打字导师。它的练习课程基于开源代码&#xff0c;让你在不断的练习中提升自己的码字速度…

Python:核心知识点整理大全15-笔记

目录 ​编辑 7.3.2 删除包含特定值的所有列表元素 pets.py 7.3.3 使用用户输入来填充字典 mountain_poll.py 7.4 小结 第8章 函 数 8.1 定义函数 greeter.py 8.1.1 向函数传递信息 8.1.2 实参和形参 8.2.1 位置实参 2. 位置实参的顺序很重要 8.2.2 关键字实参 往…

计算机循环神经网络(RNN)

计算机循环神经网络&#xff08;RNN&#xff09; 一、引言 循环神经网络&#xff08;RNN&#xff09;是一种常见的深度学习模型&#xff0c;适用于处理序列数据&#xff0c;如文本、语音、时间序列等。RNN通过捕捉序列数据中的时间依赖关系和上下文信息&#xff0c;能够解决很…

CLIP的升级版Alpha-CLIP:区域感知创新与精细控制

为了增强CLIP在图像理解和编辑方面的能力&#xff0c;上海交通大学、复旦大学、香港中文大学、上海人工智能实验室、澳门大学以及MThreads Inc.等知名机构共同合作推出了Alpha-CLIP。这一创新性的突破旨在克服CLIP的局限性&#xff0c;通过赋予其识别特定区域&#xff08;由点、…

Could not resolve all dependencies for configuration ‘:app:androidApis‘.

android studio出现Could not resolve all dependencies for configuration ‘:app:androidApis’. 试过很多种方法&#xff0c;但是都不好使&#xff0c;不管怎么样都是提示如下报错&#xff1a; Using insecure protocols with repositories, without explicit opt-in, is un…

丹麦市场开发攻略,带你走进童话王国

说起安徒生&#xff0c;大家多多少少都知道&#xff0c;因为小时候读的安徒生童话书真的太有名了&#xff0c;但是大家可能不知道安徒生是丹麦的。丹麦是高度发达的国家&#xff0c;奉行自由贸易政策&#xff0c;市场潜力是非常不错的&#xff0c;而且中国是丹麦非常重要的贸易…

Python部分基础知识入门学习,十分钟快速上手

文章目录 一、基础语法二、变量类型三、运算符四、条件语句关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 一、…

初识 WebGPU 以及遇到 WebGPU not supported 错误的解决方法

初识 WebGPU 以及遇到 WebGPU not supported 错误的解决方法 WebGPU学习资源初识WebGPU遇到并解决问题在线示例 因公司需求&#xff0c;开始接触 WebGPU&#xff0c;偶然遇到问题&#xff0c;网上搜索无效&#xff0c;后来通过逐步判断&#xff0c;终于定位到问题&#xff0c;这…

【WPF 按钮点击后异步上传多文件code示例】

前言: WPF中按钮点击事件如何执行时间太长会导致整个UI线程卡顿&#xff0c;现象就是页面刷新卡住&#xff0c;点击其他按钮无反馈。如下是进行异步执行命令&#xff0c;并远程上传文件的代码。 ![异步上传文件](https://img-blog.csdnimg.cn/direct/20c071929b004dcf9223dee2…

听我的,日志还是得好好打!

日志这东西&#xff0c;平时看不出来什么&#xff0c;真要出了问题&#xff0c;那就是救命的稻草。这期就给大家分享一些日志相关的东西。 弄懂日志 SpringBoot项目启动日志 什么是日志&#xff1f; 日志&#xff0c;维基百科中对其的定义是一个或多个由服务器自动创建和维护…