Redis主从关系,哨兵,去中心化

本文详细介绍了Redis的主从模式及其配置,解释了主从模式在数据备份和读写分离中的作用。接着,讨论了哨兵模式,包括其工作原理、配置方法以及如何实现故障自动切换。此外,提到了哨兵模式的优点和缺点。最后,简述了去中心化集群,即RedisCluster,强调了其动态扩容和缩容的能力,以及相对于主从+哨兵模式的优势。
摘要由CSDN通过智能技术生成

Redis主从关系搭建

4.1 什么是Redis主从关系

不管任何程序,只运行一个实例都是不可靠的,一旦因为网络原因导致所在机器不可达,或者所在服务器挂掉,那么这个程序将不能对外提供服务了,Redis也是一样的。同时,将数据完全存储在单个redis中也会存在数据备份和数据量较大造成性能降低的问题。主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的。

4.2 Redis主从关系配置

①创建文件夹并在文件夹里面复制三个redis.conf配置文件
这三个配置文件复制的是redis.conf,并修改名字为redis7001.conf、redis7002.conf和redis7003.conf,这里可以修改成任意名字,但是建议命名为开启端口号一样的名字,便于区分。

mkdir three-redis
cp redis.conf redis7001.conf
cp redis.conf redis7002.conf
cp redis.conf redis7003.conf
mv redis7001.conf /usr/local/bin/three-redis/
mv redis7002.conf /usr/local/bin/three-redis/
mv redis7003![在这里插入图片描述](https://img-blog.csdnimg.cn/20210426003435236.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDIzMzI1Mw==,size_16,color_FFFFFF,t_70)
.conf /usr/local/bin/three-redis/

②修改这三个配置文件
将这三个配置文件中的端口号prot分别改为7001、7002、7003
关闭AOF配置,将appendonly修改成no
在这里插入图片描述
③分别根据三个conf文件启动三个不同的Redis数据库,配置主从关
首先,使用info replication查看三台Redis数据库的信息,发现都是Master
在这里插入图片描述
然后,在7002和7003Redis数据库中使用命令

slaveof 127.0.0.1 7001

此时,我们再次使用info replication查看三台Redis数据库的信息,发现只有7000是Master,其余两台均为Slave。

在这里插入图片描述

 

2. 哨兵模式

什么是哨兵模式(sentinel)

哨兵是一个独立的进程,其原理是:哨兵通过向redis服务器发送命令,等待redis服务器响应,从而监控多个运行中的redis实例。
通过发送命令,让redis服务器返回监控其运行状态,包括主服务器和从服务器。
具体表现为:
(1)当哨兵监测到master(主机)宕机,会自动将slave(从机)切换成主机,然后通过发布订阅模式通知其他从机,让从机修改配置文件,让它们切换主机。
(2)但是单哨兵模式仍然是存在问题的。因为有可能因为网络原因,导致一个哨兵监听服务器的时候,误以为它挂了。
因此,存在多哨兵模式 。
(3)每个哨兵都会定时地向 其他哨兵、Master(主机)、Slave(从机) 发送消息,以确保对方还活着。
在这里插入图片描述

哨兵模式的配置及启动

①查看Redis的安装目录,发现目录下有一个sentinel.conf配置文件,通过文件名可知,这个就是哨兵模式的配置文件。
在这里插入图片描述

②修改sentinel.conf的配置
这里选择一个哨兵投票

# 127.0.0.1表示redis主节点的ip 
# 6379 表示主节点的端口号
# 1 表示有多少个哨兵选取redis从节点后,该从节点可以当选为主节点。
sentinel monitor mymaster 127.0.0.1 6999 1

③启动哨兵模式
哨兵默认15s查看一次主机状态

redis-sentinel  sentinel.conf
  • 哨兵模式默认是非后台运行,所以运行哨兵模式后会出现一下界面:

在这里插入图片描述

④关闭主节点,查看哨兵是否生效
可以发现主节点更换,哨兵模式生效
在这里插入图片描述

1.3 哨兵模式优缺点

优点:
(1)哨兵集群,基于主从复制模式,所有的主从配置优点,它都有
主从可以切换,故障可以转移,高可用性的系统
(2)哨兵模式就是主从模式的升级,手动到自动,更加健壮

缺点:
(1)Redis不好在线扩容的,集群容量一旦到达上限,在线扩容就十分麻烦
哨兵模式的配置繁琐
(2)持久化文件始终在一个服务器上。

 

去中心化集群

2.1 什么是去中心化集群

Redis分片集群对Redis集群进行分片,采用多主多从的方式实现Redis集群,每一个分片都是由一个Redis主机和多个从机组成,片区和片区之间是相互平行的,Redis Cluster就是Redis 3.0+版本之后官方推荐的一种分片集群实现方式,主要是基于Hash卡槽(slot)和crc16(key)算法的实现策略来实现Redis集群分片和数据跨主机转移、共享。这是一种去中心化的集群解决方案,可以实现Redis动态扩容和缩容,但是缺点就是集群环境比较复杂,搭建成本高。

2.2 为什么要使用去中心化集群

在不使用去中心化集群时,我们通常采用了主从复制+哨兵模式实现的,主从模式和哨兵模式,一般采用了(一主多从)搭建Redis集群实现的,采用哨兵模式作为守护存在,一旦主节点宕机,就进行投票选举,实现自动化故障发现和转移,最大化保证集群的高可用。但是在此期间,是禁止使用写操作,同时主节点宕机就会导致数据丢失。
这时候就需要用到Redis Cluster去中心化分片集群,Redis Cluster去中心化分片集群使用Hash卡槽来确定和定位Key的读写位置,最大的优点是有利于Redis动态扩容、缩容,把宕机数据丢失的风险降到最小。

2.3 Redis去中心化集群的搭建

本次采用了一台服务器通过不同端口来区分不同的Redis节点,使用不同的Redis配置文件设置不一样的端口,启动不同的Redis服务,使用端口区分不同的Redis服务。
使用三主三从的集群环境搭建,也就是三台主节点+三台子节点。

2.3.1 去中心化集群配置

修改集群中各个Redis数据库的配置文件中的配置

port 8001
bind 0.0.0.0
daemonize yes
appendonly yes
# 开启集群
cluster-enabled yes             833行
# 集群的配置文件,该文件自动生成   
cluster-config-file nodes-8001.conf  841行
# 集群的超时时间
cluster-node-timeout 5000         847行

注意:集群的开启需要保证AOF模式的开启以及保证Redis数据库全部为空。
什么是AOF模式?参考这里【Redis的持久化方式

2.3.2 启动Redis去中心化集群

①启动所有Redis节点
在这里插入图片描述
②为主节点分配槽以及分配从节点

redis-cli --cluster create --cluster-replicas 1 192.168.23.224:8001 192.168.23.224:8002 192.168.23.224:8003  192.168.23.224:8004  192.168.23.224:8005  192.168.23.224:8006

③测试集群是否启动成功
客户端访问:

redis-cli -c -h 192.168.23.224 -p 8001
  •  

一定要加上-h,表示使用集群服务,不然启动的也只是普通的。

记录一些集群常用命令

cluster info    查看所有主机的状态。
cluster nodes   查看所有的节点信息。
info            查看节点内存、cpu、key数量等信息

进入之后使用set命令加入数据,发现Redis端口会自动更换,集群启动成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值