阿里云 徐东来:阿里云数据库平台架构演进之路-对外

苗绣文

2017/12/18 发布于 技术 分类

该主题是给大家分享阿里云数据库平台的架构演进之路,谈一谈如何构建一个支撑百万级别实例数量的DBaaS,DBaaS架构的演进过程,演进过程中遇到的问题及如何解决,对于当前火热的Docker容器生态的思考和应用等。

文字内容
1. 阿里云数据库平台架 构演进之路 演讲人:徐东来 全球敏捷运维峰会 北京站
2. ⾃自我介绍 徐东来,花名云智 10余年年IT从业,从传统IT企业到互联⽹网 - 8年年时间,从事安全审计领域产品研发 从⼯工程师到技术总监,陆续参与并推出如下产品和服务: ✓ ⾯面向企业的软硬件⼀一体的“运维安全审计产品”和“数据库安全审计产品” ✓ 其他系列列审计产品:⽹网络安全审计、⽇日志安全审计、恶意代码监控、等保⼯工具箱、 基于⼤大数据架构的威胁检测系统等 - 2年年时间,从事B2C电商的数据分析、搜索和推荐系统的研发; 2015年年3⽉月追寻云计算的梦想,来到了了阿⾥里里云云数据库团队。 云数据库平台和安全相关系统的研发 全球敏捷运维峰会 北京站
3. 主要内容 • DBaaS的定位 • 阿⾥里里云DBaaS的架构 - IaaS层的选择 - 应⽤用拓拓扑的演进 - 资源调度与分配 - 任务⼯工作流系统 - 可⽤用性检测与故障恢复 - 弹性扩缩容系统 - 备份与恢复 - 性能监控 - 部署与运维、DevOps实践 • DBaaS -> App as a Service VS. CaaS(k8s) 全球敏捷运维峰会 北京站
4. 应⽤用托管云化趋势 IaaS 业务功能 应 ⽤用 运⾏行行时 容器器层 操作系统 虚拟化 硬件 CaaS (k8s) 业务功能 应 ⽤用 运⾏行行时 容器器层 操作系统 虚拟化 硬件 PaaS (cf) 业务功能 应 ⽤用 运⾏行行时 容器器层 操作系统 虚拟化 硬件 FaaS (Serverless) 业务功能 应 ⽤用 运⾏行行时 容器器层 操作系统 虚拟化 硬件 SaaS 业务功能 应 ⽤用 运⾏行行时 容器器层 操作系统 虚拟化 硬件 ⽤用户管理理 ⽤用户管理理 (弹性单元) 平台提供 • 路路径: • 完全⾃自建->数据库云化->缓存/消息中间件云化->应⽤用微服务化/Docker化; • 从看到主机,到看到容器器和应⽤用,到Serverless; 全球敏捷运维峰会 北京站
5. Stateless Service vs. Stateful Service Stateless Service • ⽆无需持久化,⼀一般为Web应⽤用 • 容易易⽔水平扩展 • 可快速扩缩容 • 故障恢复快 • 只需考虑CPU和内存资源 • ⾮非常合适使⽤用容器器编排类技 术,如K8S、Swarm等 Stateful Service • 持久化,⼀一般为数据库、缓存、 中间件等应⽤用 • 要考虑数据同步、备份还原、 数据可靠性、数据安全等 • 不不易易扩展 • 故障恢复慢 • 综合考虑CPU、内存、IO、磁 盘等资源 • 现有的容器器平台⽀支持度不不好 全球敏捷运维峰会 北京站
6. DBaaS是什什么? 全⽣生命周期管理理 创建 释放 升级 锁定 扩缩容 ⾃自动化运维 恢复 容灾 监控 备份 迁移 开箱即⽤用 安全 可⽤用 性能 可靠 SLA保证 全球敏捷运维峰会 北京站
7. DBaaS与 ⾃自建数据库的区别 DBaaS ⾃自建数据库 服务可⽤用性 99.95% 需⾃自⾏行行保障,⾃自⾏行行搭建主从复制,RAID等 数据备份 硬件成本 部署运维 ⾃自动备份 ⾃自⾏行行实现,但需要寻找备份存放空间以及 定期验证备份是否可恢复 ⽆无托管费⽤用,⽆无软硬件投⼊入,按需付费 数据库服务器器成本相对较⾼高;每台服务器器 每年年托管费超过5000元;对于MS SQL Server需⽀支付许可证费⽤用 即时开通,快速部署,弹性扩容,按需选 需硬件采购与,机房托管,部署机器器,周 购 期较⻓长 资源利利⽤用率 按实际结算,利利⽤用率很⾼高 考虑峰值,资源利利⽤用率很低 全球敏捷运维峰会 北京站
8. 阿⾥里里云数据库产品及中台 引擎层 20+ PolarDB Oceanbase PetaData MySQL MariaDB PG MSSQL HANA Greenplum PPAS OTS ADS HiTSDB OpenSearch Redis MongoDB HBase MemCache ElasticSearch InfluxDB 中台服务 茅台 DBaaS核⼼心 Robot ⾃自动运维 杜康 内部运维console 天⻢马 硬件供应链管理理 移⼭山 资源智能调度 天⻰龙 应⽤用部署发布 吹沙 引擎诊断 天象 全链路路监控
9. 架构演进的特征 性能提升 效率提升 稳定性 ⽤用户体验 软件优化 硬件加速: RDMA/25G/FPGA DEVOPS 机器器/应⽤用交付⾃自动化 资源争抢问题 SLA⼤大盘 迁移防闪断 热升级 ⾃自定义运维时间 成本降低 资源利利⽤用率 库存预测 安全体系 化 平台化 通⽤用化 数据驱动 闭环 多层防护 从⽀支撑DB,到⽀支撑通⽤用应⽤用 事前、事中与事后结合 应⽤用拓拓扑从简单到复杂 国内外安全合规法案 微服务化,专业化分⼯工 业务画像 异常分析与智能诊断 个性化推荐 全球敏捷运维峰会 北京站
10. 阿⾥里里云DBaaS的演进 DBAAS 1.0 Only for RDS 资源模型为Master/Slave结构; 为数据库⾃自动运维需要设计; 业务与平台紧耦合; 产品:MySQL/SQL Server/ PGSQL DBAAS 2.0 业务驱动的管控平台化 通⽤用能⼒力力沉淀复制; 快速新产品开发模式; 组件通⽤用化、插件化设计; 产品:MongoDB/Redis/ Greenpulm等 DBAAS 3.0 从业务回归到平台本质 not only DBAAS,do more 基于DSL的集群编排的快速新品开发能⼒力力 利利⽤用阿⾥里里云⽣生态红利利(ECS/存储/⽹网络) ⼯工作流/备份/HA/监控平台化改造 平台和产品独⽴立迭代能⼒力力 中台能⼒力力输出到更更⼴广泛的产品 产品:HBase/HiTSDB/PG10/列列存/ kafka/Flink/ElasticSearch等 全球敏捷运维峰会 北京站
11. 核⼼心组件架构 DNS SLB/ALB Aliyun web console Optional Proxy … Proxy Host_1 MySQL1_m MySQL2_s MySQLn_x AGENTs Host_2 MySQL1_s MySQL2_m MySQLn_x AGENTs Kafka Cluster RDS Brain HybridDB MySQL Controller Controller Message Broker API Server Task Controller Workflow Engine HA Controller Resource Scheduler Stat operator Controller console Backup Controller MetaDB 全球敏捷运维峰会 北京站
12. IaaS层的选择 ⽹网络 SLB/DNS Classic 1G/10G NGLB VPC 25G 存储 Local Storage 云盘(盘古) 专⽤用共享存储+⽤用户态⽂文件系统 操作系统 资源隔离 主机 AliOS 6u Cgroup bare metal AliOS 7u Docker ECS 全球敏捷运维峰会 北京站
13. ⽤用户视⻆角 内部视⻆角 ⼏几个概念 ⽤用户实例例 • 不不感知应⽤用的拓拓扑 • 只需要感知到服务地址和端⼝口 逻辑实例例 规格 • 规格(CPU、内存、磁盘、IOPS、节点数等) 物理理实例例 主机实例例 • 主机实例例⻆角⾊色:Master、Slave、Hidden 全球敏捷运维峰会 北京站
14. 应⽤用拓拓扑演进 物理理实例例 ins1 包含主从 两个主机实例例 HostA HostB ins1(master:3001)'>master:3001)'>master:3001)'>master:3001) ins1(slave:3001)'>slave:3001) ins2(slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002) ins2(master:3002) ins3(master:3003)'>master:3003)'>master:3003)'>master:3003) ins3(slave:3003)'>slave:3003) 物理理实例例 ins1 包含多个打散的主机实例例 HostA HostB ins1(master:3001)'>master:3001)'>master:3001)'>master:3001) ins2(master:3001)'>master:3001)'>master:3001)'>master:3001) ins2(slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002) ins1(slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002) ins3(master:3003)'>master:3003)'>master:3003)'>master:3003) ins3(slave:3003)'>slave:3003) HostC ins1(slave:3001)'>slave:3001) ins3(slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002)'>slave:3002) ins2(master:3003)'>master:3003)'>master:3003)'>master:3003) ⼀一主⼀一从模式 • 以对机为资源管理理单位 • DNS链路路,主从实例例端⼝口相同,why? • bare metal/localdisk时代,CGroup • 产品:MySQL/SqlServer/PGSQL/Redis ⼀一主多从模式 • 不不再以对机为资源管理理单位,实例例全部打散 • 魔⽅方模式,⽀支持异构机型 • SLB链路路,主从实例例端⼝口可以不不同 • bare metal/localdisk时代,CGroup • 产品:MySQL三节点,MongoDB三节点 全球敏捷运维峰会 北京站
15. 逻辑 实例例 物理理实例例 shard ins1 物理理实例例 shard ins2 应⽤用拓拓扑演进 主机实例例master 主机实例例slave 主机实例例master 主机实例例slave 物理理 实例例 拓拓扑 service A M M serviceB M S logic ins 物理理实例例 shard insN 主机实例例master 主机实例例slave Sharding模式 • 引⼊入逻辑实例例,三层结构 • 每个分⽚片⼀一个物理理实例例,同构 • ⼀一个物理理实例例包含主备主机实例例 • 产品:PetaData/Redis Sharding/ MongoDB Sharding 逻辑 实例例 拓拓扑 M M M MM MS service A service C service B 通⽤用集群模式 • 灵活定义,⾃自由组合,异构,覆盖所有场景 • 产品:HBase/HiTSDB/PolarDB/kafka/Flink 全球敏捷运维峰会 北京站
16. 应⽤用拓拓扑演进-服务发现 vip:vport'>vip:vport'>vip:vport'>vip:vport vip1:vport'>vip1:vport vip2:vport'>vip2:vport vip3:vport vip:vport'>vip:vport'>vip:vport'>vip:vport1 vip:vport'>vip:vport'>vip:vport'>vip:vport2 vip:vport'>vip:vport'>vip:vport'>vip:vport3 M M M 1vip 1vport M M M 多vip同vport vip:vport'>vip:vport'>vip:vport'>vip:vport vip:vport'>vip:vport'>vip:vport'>vip:vport M S M M S 按⻆角⾊色决定是否绑定vip M M M 1vip多vport vip1:vport'>vip1:vport vip2:vport'>vip2:vport 覆盖应⽤用 各种vip绑定需求 M M S 按⻆角⾊色绑定vip 全球敏捷运维峰会 北京站
17. 资源分配与调度 分配维度 • Resource:CPU、Memory、Disk IOPS、Disk Quota、Net IO、QPS、Max Connections; Port、VIP • Location:单元、可⽤用区、集群、机房、机柜、机器器 分配算法 • 堆叠模式 • 分散模式 • 预留留分散模式:集群中预留留出指定⽐比例例空闲资源,分散模式优先从⾮非 预留留池⼦子中分配,当⽆无法分配时,开始从预留留池⼦子中分配。why? • 伴随模式 • 悲观锁 or 乐观锁? • 共享 or 独占? 全球敏捷运维峰会 北京站
18. 动态调度 资源分配与调度 • 必要性 - 资源⽔水位、主机负载随着资源的使⽤用动态变化,⽐比如磁 盘空间; - 资源策略略的变化资源要重新调度(如双⼗十⼀一前后); - 资源碎⽚片整合 • 依据⼤大量量历史性能数据分析,给出合理理的迁移⽅方案 ᑏઊ ᧛‫ݐ‬ᩒრᒽኼ̵ᩒრ࿜֖ ݊Ԇ๢௔ᚆ ResManage r PerfD B ൉Իਫֺᬢᑏᦇ‫ښ‬ Robot RDSAPI ಗᤈᬢᑏᦇ‫ښ‬ TaskEngin e 全球敏捷运维峰会 北京站
19. 任务系统-基于⼯工作流 Why? • ⼤大量量⻓长时间业务,进展需要可视 • 云环境的复杂性,各种失败和异常是常态,需要重试甚⾄至⼈人⼯工⼲干预 Task Queue RDSAPI TaskDispatche r Pengine Agent mysql Sphinx mysql Sphinx Agent mysql Sphinx Agent Proxy Proxy OPS ๱଼ ᬩᖌഴ‫ݣګ‬ Workflow DB SLB API VPC API ECS API 全球敏捷运维峰会 北京站
20. 任务系统-基于⼯工作流 • 设计原则: • 异步:⽤用户控制台⼀一切控制操作皆产⽣生⼀一个后端异步任务,⼀一个任 务可能涉及到在多个节点上操作,包括安装、配置、启动、变更更元 数据、变更更链路路等操作; • 可重试:任务中任意步骤可能失败,失败后保留留上下⽂文,可重试 • 幂等:保证每个步骤的幂等性,以⽀支持重试 • 并⾏行行:同⼀一实例例任务串串⾏行行执⾏行行,不不同实例例间任务并发 • 可暂停/回滚/取消 • 性能:并⾏行行的容量量,可横向扩展,熔断机制 • 可运维性:内部运维控制台 • ⼀一致性巡检:元数据与节点出现不不⼀一致的报警与修正 全球敏捷运维峰会 北京站
21. 可⽤用性检测 • 容器器级别 —标准接⼝口 • 链路路级别 —标准接⼝口 • 实例例级别 —实例例容器器提供 health-check⼯工具镜像 新接⼊入engine⽆无需新开发state job 由应⽤用提供的仅仅是⼀一个health-check镜像 全球敏捷运维峰会 北京站
22. 有状态服务的⾃自动恢复 • 故障节点检测:实时检测与深度分析相结合 • 故障节点切换:如何保证数据不不丢失? • 可⽤用性:任何控制操作都要考虑当前的服务 是不不能中断的;proxy的引⼊入; 全球敏捷运维峰会 北京站
23. 弹性扩缩容 • 本地升降级:本地资源充⾜足时,速度快 • 跨机升降级:本地资源不不⾜足时,速度慢,涉 及到数据搬迁 • 闪断问题:引⼊入proxy,连接保持技术,切换 ⽆无感知 • 可运维时间:⽤用户⾃自定义 全球敏捷运维峰会 北京站
24. 备份和恢复 • 增量量和全量量备份 • 备份策略略和调度 • 还原到任意时间点 • 备份有效性:抽样 BackupServer ॓ղ᧣ଶ ኞ޸ޮ๗ᓕቘ HOST BackupAge create process nt හഝ॓ղ ෭ப॓ղ BackupTool (ex. ExtraBackup) 备 集不落地 Backup Files OSS Binlog files DB Redolog files Data Files Binlog files 全球敏捷运维峰会 北京站
25. 性能监控 杜康 • ⽀支持主机,容器器,app指标 监控 import 实例例 指标模板 metadb grafana • 容器器label判断是否需要采 集,Dockerfile内定义 • 容器器元数据由管控在容器器上 打标(客户实例例id,实例例 名,主机实例例id) • 应⽤用展示模板:开发调试好 grafna模板->导出为json-> 随引擎dsl导⼊入metadb influxdb loghub Flink telegraf curl http://$ip:$port/metrics /proc/meminfo /proc/cpuinfo /proc/diskstats docker stats container ccoonntatainineer r host指标 展示什什么指标 展示样式均由应⽤用⾃自定义 平台不不涉及元数据库及代码修改 全球敏捷运维峰会 北京站 云监控
26. 部署:中⼼心化到单元化 • ⼀一个中⼼心,到 多个单元 • 全球化,合规 • 规模⾼高速增⻓长, 如何降低运维 成本? 全球敏捷运维峰会 北京站
27. Ӟୟࢶᧁ᯽Ջԍฎ devops 全球敏捷运维峰会 北京站
28. DevOps实践:标准化->⾃自动化->智能化 实例例 RDS实例例⽣生命周期 docker实例例化 茅台 (⼯工作流、资源调度、 备份、⾼高可⽤用等) 杜康 移⼭山 Robot 中⼼心运维平台 单元杜康⼊入⼝口 全局检索⼊入⼝口 全局监控⼤大盘 一键扩容 5分钟 一键下线 用户无感知 实例例集群交付 服务组件交付 应⽤用 应⽤用交付 docker镜像 rpm包 整体交付 升级 扩容 下线 天⻰龙 单元化部署 提供⾮非常丰富的API,提供原⼦子运维操作 ⼀一键交付流程 ⼀一键升级流程 ⼀一键扩容流程 ⼀一键下线流程 故障/过保 主机自动下线 运维白屏化 横向协同 100+应用 主机 OS交付 物理理主机交付 ECS容器器交 付 ECS镜像制作 OS模板开发 天⻢马 (对接硬件供应链) 机房交付 机房信息管理理 全球敏捷运维峰会 北京站 buffer池管理理 主机申请 环境检查模板 纵向打穿 主机->应用->实例 支撑业务 快速发展
29. 从DBaaS到AaaS:CaaS还是FaaS?都不不是 • 数据库服务都能做好,那其他应⽤用呢? • AaaS,App as a Service,是⼀一个应⽤用快速服务化、云化的PaaS平台 • ⼤大规模的实例例化能⼒力力,多租户快速复制⽣生产能⼒力力,复⽤用当前基础设施,⽀支撑快速的商业化 • ⼀一套标准的应⽤用孵化流程,覆盖⼀一个应⽤用集群所有控制层⾯面的能⼒力力,DO More!对⽤用户来说真正做到 免运维 • 我们的路路径是相反的:从stateful到覆盖stateless,从同构集群到异构集群 PolarDB HBase HybridDB InfluxDB+Grafana Zookeeper Kafka Rabitmq Etcd Flink Jstorm Consul ElasticSearch 各种开源中间件/基础应⽤用...... 全球敏捷运维峰会 北京站
30. AaaS 引擎 数据库服务化 -> 通⽤用应⽤用服务化 类型 涵盖stateful和stateless service 中台 红利 ⼯工作流、资源调度、基础⽀支撑体系 Engine_DSL.yaml ҄ Docker Image submit 开发 标准化 类docker compose语法,更更丰富: - 规格定义:mem/cpu/iops/disk - 节点拓扑 - 端口分配 - VIP结构 - Volumes挂载 - 多个组件的启动顺序 - 磁盘分配 - 通用运维镜像和操作定义 接入 效率 3个⽉月 -> 1-2个星期 ᓕ中ഴ台系ᔮ统ᕹ ෫ᵱ୏‫ݎ‬ ‫ٍ॓ݢܨ‬ ኞԾ ᯽න ᯿‫ސ‬ ᱾᪠ Scale out ඳᵑ௩॔ Scale Up ፊഴ ᯈᗝ 全球敏捷运维峰会 北京站
31. AaaS vs. K8S K8S key features • Automatic binpacking • Self-healing • Horizontal scaling • Service discovery and load balancing • Automated rollouts and rollbacks • Secret and configuration manage ment • Storage orchestration AaaS 资源调度有更更丰富的维度和策略略,并且会依据历史数 据进⾏行行预测,进⾏行行运⾏行行时动态调度 多层次检测;故障恢复,考虑数据可靠性,不不丢失 ⽀支持纵向、横向扩容,多维度,按规格付费 基本能⼒力力,考虑master/slave模式;专⽤用SLB,带宽保证 滚动升级,多版本共存 基本能⼒力力,⽀支持参数修改,热修改,冷修改 ⽀支持localstorage/云盘/polarstore,主机磁盘调度 更更多的能⼒力力:数据同步、备份与还原;数据库中间件; 将数据的调度结合到所有的控制流程中;对数据可靠 性追求极致; 全球敏捷运维峰会 北京站
32. ᮒᓟғ alaix.xu@ gmail.com 全球敏捷运维峰会 北京站
33. THANK YOU! 全球敏捷运维峰会 北京站