redis集群方式及高可用架构
Redis集群模式
1.主从模式,单台服务器即可,无高可用,为1主2从方式 主节点可读写,从节点只读,数据会从主节点同步至从节点 2.cluster模式 3.0以上版本支持 Redis Cluster基本架构:Redis Cluster中有多个主节点,每个主节点都负责进行数据读写操作,并且每个节点之间会进行通信。 保证高可用,每个主节点都至少有一个从节点,当主节点故障,Cluster会按照规则实现主备的高可用性,对于节点来说,有一个配置项:cluster-enabled,即是否以集群模式启动 Redis cluster集群至少需要三个master节点,实现集群高可用需要六台服务器布置节点。 集群架构:
redis cluster是一个去中心化的集群,每个节点都会跟其他节点保持连接,每个节点之间会互相通信。 每个master可以对应多个slave 以保证master挂掉之后新的slave成为主节点而没有salve。
以下以云厂商redis集群架构模式介绍
阿里云redis集群架构 主从模式 高可用架构模式
阿里云通过内部SLB方式对外开放一个redis地址以实现高可用 阿里云 提供 2.8、 4.0、 5.0版本
华为云redis架构 主从版
集群高可用版 云厂商的高可用集群架构模式没有使用官方推荐的集群模式
私有化部署时三种方式 主从模式 官方redis cluster模式 redis sentinel模式 Redis 集群 有几个master节点就会有几个redis地址。 Redis cluster可以使用官方提供的ruby脚本完成部署 Redis sentinel 集群实现高可用 哨兵模式是利用主从架构对master进行监控,当master挂掉之后挑选slave作为master节点 哨兵模式是所有的客户端都通过 sentinel程序获取redis的master服务。
Redis cluster: 优点: 1.可扩展:可线性扩展到 1000 多个节点,节点可动态添加或删除; 2.高可用性:部分节点不可用时,集群仍可用。通过增加 Slave 做 standby 数据副本,能够实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave 到 Master 的角色提升; 缺点: 1.节点会因为某些原因发生阻塞(阻塞时间大于 clutser-node-timeout),被判断下线,这种 failover 是没有必要的。 2.数据通过异步复制,不保证数据的强一致性。 3.多个业务使用同一套集群时,无法根据统计区分冷热数据,资源隔离性较差,容易出现相互影响的情况。 4.不支持多数据库空间,单机下的 redis 可以支持到 16 个数据库,集群模式下只能使用 1 个数据库空间,即 db0
Redis Sentinel 哨兵模式: 优点: 1.相比主从版 可以检测master状态 2.可实现master动态转移 3.可以实现一套 Sentinel 监控一组 Redis 数据节点或多组数据节点 缺点: 1.如果是从节点下线了,sentinel是不会对其进行故障转移的,连接从节点的客户端也无法获 2.取到新的可用从节点。 3.不保证数据的强一致性,无法实现动态扩容。