简介
云数据库 Redis(TencentDB for Redis)是由腾讯云提供的兼容 Redis 协议的缓存数据库,具备高可用、高可靠、高弹性等特征。云数据库 Redis 服务兼容 Redis 2.8、Redis 4.0、Redis 5.0 版本协议,提供标准和集群两大架构版本。最大支持 4TB 的存储容量,千万级的并发请求,可满足业务在缓存、存储、计算等不同场景中的需求。
云数据库 Redis 的优势:
技术架构
云数据库 Redis 提供 0.25GB - 4TB 的容量规格选择,提供标准和集群两个架构版本。
01
云数据库 Redis 内存版(标准架构)
云数据库 Redis 内存版(标准架构)指支持 0 个或者多个副本的版本(副本是指非主节点的节点),是最通用的 Redis 版本,兼容 Redis 2.8、Redis 4.0、Redis 5.0 版本的协议和命令,提供数据持久化和备份,适用于对数据可靠性、可用性都有要求的场景。主节点提供日常服务访问,从节点提供 HA 高可用,当主节点发生故障,系统会自动切换至从节点,保证业务平稳运行。
02
云数据库 Redis 内存版(集群架构)
云数据库 Redis 内存版(集群架构)是腾讯云基于社区版 Redis Cluster 打造的全新版本,兼容 Redis 4.0 和 Redis 5.0 版本命令,采用分布式架构,支持分片和副本的扩缩容,拥有高度的灵活性、可用性和高达千万级 QPS 的高性能。Redis 内存版(集群架构)支持 3 分片 - 128 分片的水平方向扩展,1 个 - 5 个副本集的副本扩展,扩容、缩容、迁移过程业务几乎无感知,做到最大的系统可用性。
技术特征
01
读写分离
云数据库 Redis 支持开启和关闭读写分离功能,针对读多写少的业务场景,解决热点数据集中的读需求,副本数大于 1 时,Redis 提供数据主从实时热备,提供数据高可靠和高可用(同一可用区内,跨服务器高可用),HA 系统监测到节点故障后,会将请求切换到从节点,提供从节点只读功能。最大支持 1 主 5 从模式,提供最大 5 倍的读性能扩展能力。
02
故障切换机制(HA)
03
数据持久化
04
数据备份
云数据库 Redis 支持自动备份和手动备份,自动备份允许自定义备份时间窗口。
作为云监控,我们在努力
Redis 这类敏感的纯内存、高并发和低延时的服务,如果没有完善的监控告警,从用户侧或 RD 的角度去发现问题、定位到排查将是非常耗时的。
可见,对于 Redis 而言,监控告警是十分重要且必要的,而云监控为用户提供了统一监控云数据库 Redis 的平台,可以通过使用云监控全面了解云数据库 Redis 的资源使用、性能和运行状况。此外,云监控还提供了指标分类、预设常用告警指标、预设核心指标的 Dashboard 面板,帮助用户更轻松的理解云数据库 Redis 的指标,更方便、快捷的掌控云数据库 Redis 出现的突发情况,提升运维效率,减少运维成本。
01
监控指标及其分类
1. 监控实例分析
为进一步提升 Redis 的监控能力,云监控配合业务侧对 Redis 的监控进行了全面的升级,监控粒度从 1 分钟升级到 5 秒,监控数据延迟缩短到 20 秒以内,新增副本节点监控采集 & 告警,新增 Proxy 节点监控采集 & 告警,提供给用户更完善的监控告警和更良好的监控数据,并对云数据库 Redis 的每一部分进行相应指标的监控,并将指标进行分类,以便用户理解和使用,详细指标见附录。
架构说明:
LB(负载均衡):Redis 的标准架构和集群架构都有 Proxy,且 Proxy 的数量 >= 3,因此需要通过 LB 来均衡访问。
Proxy:每个实例至少有 3 个 Proxy,标准架构的 Proxy = 3 + (副本数 - 1),集群架构的 Proxy = 分片数 * 副本数。
Master(Group):Redis 的主节点或是所有分片的主节点被称为 Master(Group)。
Slave(Group):Redis 的副本节点或是集群实例的多个分片中的一个副本组成的集合被称为副本或者副本组 Replica(Group),集群架构的副本组是将一个分片的多个副本分到不同的组,以便于将不同的副本组部署到不同的可用区。
指标分类:
CPU 监控:Redis 是单进程实例,默认只使用单个核心,当某个实例出现 CPU 性能瓶颈,会导致性能故障,因此除整体 CPU 使用率外,还应关注节点最大 CPU 使用率。
内存监控:Redis 是内存型数据库,因此对于内存的监控就尤为重要。一般内存满了之后会导致一系列的问题,比如逐出了不该逐出的 key、写不进数据、 超时阻塞等问题,因此需关注内存使用量、内存使用率、节点最大内存使用率、Key 总个数、Key 过期数、Key 驱逐数。
内存使用量:Redis 真实使用内存,不包含内存碎片。
网络监控:网络吞吐量关系到 Redis 的整体服务质量。
需要关注连接数量和连接使用率,如果连接数过高,会影响 Redis 吞吐量。
时延监控:响应时间是衡量一个服务组件性能和质量的重要指标。使用 Redis 的服务通常对响应时间都十分敏感,比如要求 99% 的响应时间达 10ms 以内。
请求监控:通过此监控来度量 Redis 缓存的质量,如果未命中或错误次数次数较高,可能因热点数据已大于 Redis 的内存限制,导致请求落到后端存储组件,可能需要扩容 Redis 缓存集群的内存容量。
注:在 Proxy 层,会更加关注时延、请求、网络类监控,在节点层,会更加关注请求、内存类监控。
2. 预设专家建议核心告警指标
腾讯云监控与云数据库 Redis 业务侧经过讨论,根据多年运维经验,按照不同的策略(实例、Redis 节点、Proxy 节点)提供常用告警指标和阈值的专家建议。用户配置告警时,页面将默认显示预设的指标及阈值建议,支持修改,方便用户快速配置告警策略。
云数据库 - Redis - 内存版 (5 秒粒度)- 实例汇总
云数据库 - Redis - 内存版 (5 秒粒度)- Redis 节点
云数据库 - Redis - 内存版 (5 秒粒度)- Proxy 节点
(1)CPU 使用率 > 80%、节点最大分片 CPU 使用率 > 80%
如果 Redis 的 CPU 整体资源饱和,会导致 Redis 性能下降,请求堆积。而 Redis 是单进程实例,默认只使用单个核心,但当某个实例出现 CPU 性能瓶颈,会导致性能故障,所以 Redis 对 CPU 资源的监控还要监控到单个核心的资源使用率。建议设置 CPU 使用率 > 80%、节点最大分片 CPU 节点使用率 > 80%,当接收到告警后,及时处理高并发和时间复杂度高的指令,或者升级 Redis 规格。
(2)内存使用率 > 80%、节点最大分片内存使用率 > 80%
Redis 是纯内存系统,如果 Redis 使用的内存超出了可用的物理内存大小,那么 Redis 很可能系统会被 OOM killer 杀掉,所以必须要保证系统有足够的内存余量,以免出现 OOM 导致 Redis 进程被杀,同时 Redis 一旦使用 swap,会导致性能骤降。针对这一点,建议设置内存使用率 > 80%、节点最大分片内存使用率 > 80% 告警,当接收到告警后,建议清除一些没用的冷数据或者升级 Redis 规格。
(3)连接数使用率 > 80%
由于对 Redis 的访问通常由应用程序发起(用户通常不直接访问数据库),因此对于大多数场景,连接客户端的数量将有合理的上限和下限。连接数使用率如果达到 1,Redis 会开始拒绝新连接创建,影响业务程序运行。监控 Redis 的连接数使用率,如果它太高,大量的并发客户端连接可能会打垮服务器处理请求的能力,建议设置连接数利用率 > 80% 告警,当接收到告警时,及时处理,帮用户确保有足够的可用资源用于新客户端或管理会话。
(4)内网入流量使用率 > 80%、内网出流量使用率 > 80%
Redis 一般是单机多实例部署,当服务器网络流量增长很大,需快速定位是网络流量被哪个 Redis 实例所消耗了,另外 Redis 如果入流量过大,可能导致 slave 线程 “客户端输出缓冲区” 堆积,达到限制后被 Master 强制断开连接,出现复制中断故障。所以建议设置内网入流量使用率 > 80%,内网出流量使用率 > 80%。
02
预设核心指标 Dashboard 面板
为了让用户更快捷、更方便的监控云数据库 Redis 的资源使用、运行等状况,腾讯云监控将核心指标配置成预设 Dashboard 面板,用户可直接进入云监控的 Dashboard 页面,无需进行其他配置,即可看到如图所示的云数据库 Redis 的 Dashboard 预设面板。
当用户选择自己已有的实例后,便可自动展示预设的核心指标的监控 Dashboard,提升用户体验,降低使用成本。
附录:
云数据库 Redis 提供完整透明的监控服务,新版本(支持 5 秒监控粒度)监控提供了包括 Proxy 节点监控、Redis 节点监控和实例监控汇总,详情如下:
欢迎联系云监控小助手微信号,加群讨论:)