新浪Redis运维实践
2020-03-01 156浏览
- 1.新浪Redis运维实践 ` 赵景波 新浪网高级DBA
- 2.自我介绍 Oracle/MySQL/NoSQL DBA 2015年加入新浪数据库平台 热爱开源DB内部原理探究 微博:@zbdba
- 3.大纲 新浪数据库平台概览 精细化运维 Redis Cluster Proxy
- 4.大纲 新浪数据库平台概览 精细化运维 Redis Cluster Proxy
- 5.新浪数据库平台概览 2008 2010 平台规模: 15个IDC数据中心 1200+ 物理机器 7000+ 实例 1000亿+ hits/天 2012 2014 2015 重要业务: 2016 2017 2018
- 6.大纲 新浪数据库平台概览 精细化运维 Redis Cluster Proxy
- 7.精细化运维 基础服务: 服务高可用 监控报警 服务化 细化服务: 成本优化 数据支撑
- 8.精细化运维 基础服务: 服务高可用 监控报警 服务化 细化服务: 成本优化 数据支撑
- 9.精细化运维 部署架构 Redis单机 Redis Cluster Redis Tribe
- 10.精细化运维 高可用-Sentinel 一个sentinel集群,17sentinel节点,分布于南北共9个数据中心,监控500+个端 口,1000+实例。 并发切换40+端口 切换成功率 98% 单次切换时间<5s
- 11.精细化运维 高可用-Sentinel踩的坑 单个IDC的数量不建议超过(Sentinel数量-quorum) 客户端长连接问题 可以通过设置slave-priority 控制选举(跨异地机房部署) 防止误切,切换灵敏度控制(quorum、down-after-milliseconds、 failover-timeout) 设置maxclient、timeout参数 建议采用Sentinel 3.2.8 及以上版本 quorum 12 down-after-milliseconds 20000 failover-timeout 120000 Error registering fd event for the newclient:Numerical result out of range (fd=10135)
- 12.精细化运维 监控-Redis监控总览 CPU 单核利用率 网卡流量 分级策略 Redis status 分时策略 监控自定义 合并策略 Config Alert Storage Collect Parse Tcollector 状态:Opentsdb 智能分析 Falcon 可用性:MySQL 连接失败、延迟、复制状态等
- 13.精细化运维 监控-Redis监控总览 可用性监控 连接检测 连接失败检测 插入检测 状态监控 访问量 readonly maxmemory 变量检测 write maxmemory 内存 used maxmemory maxmemory-policy 内存碎片率 连接数监测(20000) evicted_keys 内存比监测(80%) 主从复制监测 read key key 数量 角色监测 命中率 复制状态检测 连接数 延迟检测 其他状态 从库延迟 慢查数量
- 14.精细化运维 监控-Redis监控总览
- 15.精细化运维 监控-Redis监控总览
- 16.精细化运维 服务化-服务自助
- 17.精细化运维 服务化-服务自助
- 18.精细化运维 服务化-服务自助
- 19.精细化运维 服务化-服务自助
- 20.精细化运维 服务化-服务Dashboard
- 21.精细化运维 基础服务: 服务高可用 监控报警 服务化 细化服务: 成本优化 数据支撑
- 22.精细化运维 成本优化-第一阶段 业务: 业务存储类型 响应时间要求 存储容量 QPS …… DBA: 业务场景 资源成本 运维成本 PIKA
- 23.精细化运维 成本优化-第二阶段 Redis 低读写量比例端口 Redis无读写端口(连续一周) Redis低内存利用率端口
- 24.精细化运维 成本优化-第三阶段 W 开启超线程 制定部署规范 划分资源池 配比不合理机器开启超线程 重点业务划分资源池 选择资源池 共享池机器全部开启超线程 小业务放共享池 剩余内存 >= 服务器内存的20% 机器以资源池划分 服务器剩余内存 > 最大端口的内存 总实例数 < CPU的核数 服务器负载评分 > 80
- 25.精细化运维 数据支撑-背景 业务使用的什么数据类型? 分别有多少个key? 有没有大key? key都活跃吗? 响应时间是多少?
- 26.精细化运维 数据支撑-Redis key 分析
- 27.精细化运维 数据支撑- cold/dead Key/hot key 空闲时间超过15天则为cold key 空闲时间超过30天则为dead key Hot key 待完善
- 28.精细化运维 数据支撑- 响应时间 定制tcprstat+Grafana
- 29.大纲 新浪数据库平台概览 精细化运维 Redis Cluster Proxy
- 30.Redis Cluster Proxy 平台Redis集群的演化 Redis Tribe Redis Cluster 类Codis产品 客户端不友好 支持动态伸缩 需要前后端部署 无法读取从库 跨南北部署 无人维护 无法跨异地IDC部署 client无需支持smart client Redis Cluster + Proxy 支持本地化读从库
- 31.Redis Cluster Proxy 面临的问题
- 32.Redis Cluster Proxy 产品选择 功能特性 Codis Corvus Redis Tribe 是否支持Cluster No Yes No 是否支持动态扩容 Yes Yes Yes 是否修改Redis Yes No Yes 是否依赖外部组件 Zookeeper No MySQL 是否支持HA Sentinel Cluster Yes 项目是否活跃 Seldom Normal Never 是否有管理界面 Yes No Yes 是否支持节点之间数据迁移 Yes Yes Yes
- 33.Redis Cluster Proxy 方案简介 Corvus 支持不同IDC本地化读 支持跨异地域部署 定制Redis Cluster Auto Failover Corvus开源地址:https://github.com/eleme/corvus
- 34.Redis Cluster Proxy Crovus具体实现
- 35.Redis Cluster Proxy
- 36.Redis Cluster Proxy 具体实现-元数据管理 Cluster Nodes Command IDC Config(动态链接库) Get Node IDC Info Get slot map info 单个Slot对应的节点: 集群主节点 与proxy相同IDC从节点 与Proxy相同地域从节点 其他从节点
- 37.Redis Cluster Proxy 具体实现-跨异地域部署
- 38.Redis Cluster Proxy 具体实现-定制Cluster Auto Failover 增加promote-forbidden参数禁止某些从库参与主从选举
- 39.Redis Cluster Proxy 具体实现-定制Cluster Auto Failover 在Master 故障时,Slave Node C 不能参与选举。 在无Slave可选择时,可采用CLUSTER FAILOVER 命令切换到Slave Node C上
- 40.招聘MySQL、NoSQL DBA
- 41.