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集群架构
主从模式
高可用架构
华为云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.不保证数据的强一致性,无法实现动态扩容。