redis的集群(高可用)

devtools/2024/10/22 5:14:35/

redis集群的三种模式:

主从复制 奇数 三台 一主两从

哨兵模式 3 一主两从

cluster集群 六台


主从复制:和mysql的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器,从不能更新到主,也是哨兵模式的基础。

缺点:没有办法实现故障自动化恢复,只有主能够写。

哨兵模式:故障自动化恢复,主从复制完成之后,从服务器变成只读模式

故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式

缺点:从节点一旦故障,读会收到影响

集群:把没两台服务器作为主从模式,形成一个大的主从的集群,解决了写操作的负载均衡。较为完善的一个高可用方案

缺点:保证高可用,对数据的完整性要求不高。


一、主从模式

节点和从节点

数据的复制时单向的,由主复制到从

主从复制的流程:

 关闭防火墙和安全机制

配置主服务

vim /etc/redis/6379.conf

跳转到70行,把监听地址改成0.0.0.0

bind 0.0.0.0

跳转到700行,开启AOF的功能

appendonly yes

主服务就配置好了

两个从服务一起配置文件,跳转70行和主服务一样都改成0.0.0.0

跳转到287行添加住的ip地址及端口

replicaof 192.168.124.60 6379

跳转到700行开启AOF功能,两个从服务也配置完毕。

一主两从都重启一下

/etc/init.d/redis_6379 restart

这时主从复制就完成了


二、哨兵模式:

切换方式:不是按照权重来进行切换 是以投票的方式:主宕机其他服务器投票,选举,Raft算法,选一个离当前时间点更新最快的从变成主

进入源码包里面的配置文件

vim sentinel.conf

主从同时配置

跳转到15行,把监听地址注释掉

跳转17行

protected-mode no关闭保护模式

跳转27行后台运行把no改成yes

daemonize yes

跳转37行,把哨兵监听的日志文件设置一下

logfile "/var/log/sentinel.log"

跳转66行,把数据库的保存文件设置一下

dir "/var/lib/redis/6379"

跳转到85行

sentinel monitor mymaster 192.168.233.7 6379 2

初始化监听,都是监听主,监听主动服务器的状态

2 对应的从服务器的数量以及投票的参与者 参与者要和从服务器的数量一致

2台服务器投票通过,主才能进行故障转移。

sentinel down-after-milliseconds mymaster 30000

判断服务器宕机的时间周期 30秒

每30秒检测一次

sentinel failover-timeout mymaster 180000

判断故障节点的超时的最大时间 180秒

redis-sentinel sentinel.conf &

启动哨兵模式命令

redis-cli -p26379 info Sentinel

查看哨兵模式的状态命令

哨兵模式就创建完成了。


三、cluster集群 

redis3.0之后的分布式存储方案

集群由多个节点组成,redis数据保存在这些节点。

集群中的节点分为主和从

主负责读写以及维护集群的信息

从节点进行主节点数据的复制(也可以查)

redis集群的数据分片

在集群概念中,引用的时hash槽的概念

创建了集群就有16384个哈希槽

0-16383

三个节点:

主1 0-5460

主2 5461-10922

主3 10923-16383

节点当中,如果主和从全部失败,整个集群都将不可用

六台服务一起配置

进入配置文件

允许所有ip地址通过,关闭保护模式

开启他的集群模式,超时设置为15秒

打开AOF功能

redis-cli -h 192.168.124.60 -cluster create 192.168.124.60:6379 192.168.124.63:6379 192.168.124.61:6379 192.168.124.64:6379 192.168.124.62:6379 192.168.124.65:6379 --cluster-replicas 1配置主从的节点命令

192.168.124.60   集群的主连接节点 配置节点

-cluster create 192.168.124.60:6379 192.168.124.63:6379 192.168.124.61:6379 192.168.124.64:6379 192.168.124.62:6379 192.168.124.65:6379

前面的是主,后面的是从

 --cluster-replicas 1

每个主机只能有一个从

出现这个字段说明已经配置成功了

进入redis库中查询哈希槽怎么分配的

 在查看六台服务的主从分配

集群:move不是报错,只是系统提示客户端到指定位置的哈希槽进行读或者写,系统提示什么,就去哪个节点操作即可,这个节点是该节点的主

集群的功能只是满足高可用和写的负载均衡,不能保证数据的完整性。


http://www.ppmy.cn/devtools/87664.html

相关文章

使用GenAI做Discord舆情分析对游戏运营的帮助

前言 关于 Discord Discord 在游戏行业扮演着重要角色,作为一个专为游戏玩家设计的社交平台。它提供了实时语音、文字和视频通信功能,让玩家可以轻松组队、讨论策略和分享游戏体验。游戏开发商和发行商也利用 Discord 建立官方社区,与玩家互…

鸿蒙开发所有装饰器

Builder:用于创建自定义构建函数,允许开发者将重复使用的UI元素抽象成一个方法,并在build方法里调用。这种轻量级的UI元素复用机制有助于减少代码冗余,提升开发效率。BuilderParam:该装饰器用于引用Builder函数&#x…

SpringBoot使用泛型出入参+策略模式+反射+缓存实现统一POST接口入口

简介 某些情况下需要统一入口,如:提供给第三方调用的接口等。减少接口对接时的复杂性。 代码实现 GenericController.java 统一入口,通过bean name进行调用service层invoke方法 import com.fasterxml.jackson.databind.ObjectMapper; imp…

Python面试题:结合Python技术,讲解如何使用Jinja2进行模板渲染

Jinja2 是一个现代的、设计精美的 Python 模板引擎。它使用类似于 Django 的模板语言来渲染文本文件。Jinja2 提供了动态网页生成的强大功能,是很多 Web 框架(如 Flask)的默认模板引擎。下面我将通过几个例子展示如何在 Python 中使用 Jinja2…

input禁止输入的4种方法

方法1、 readonly <input type"text" value"哈哈哈" readonly"readonly"> //使用readonly&#xff0c;字段为只读可复制 方法2、 disabled <input type"text" value"哈哈哈" disabled"disabled"> //只…

C++ AVL树

一.概念 二叉搜索树在左右子树较为平衡的情况下搜索效率为O(log n)&#xff0c;但是如果数据是接近有序插入二叉树中的结构就会是一颗左斜树或者右斜树的状态。 为了提升效率俄罗斯数学家 G. M. Adelson-Velsky和E. M. Landis在1962年共同发明的。其思想为当二叉树中插入新节点…

netstat 详解

优质博文&#xff1a;IT-BLOG-CN 一、netstat参数 参数说明-a 或–all显示所有连线中的Socket-A <网络类型>或–<网络类型> 列出该网络类型连线中的相关地址-c或–continuous持续列出网络状态-C或–cache显示路由器配置的快取信息-e或–extend显示网络其他相关信…