Redis哨兵模式和去中心化集群 Day03

1. 哨兵模式

1.1 什么是哨兵模式(sentinel)

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

1.2 哨兵模式的配置及启动

①查看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. 去中心化集群

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端口会自动更换,集群启动成功!
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值