《KubeBlocks 在K8s上运行生产级的 OceanBase_曹伟.pdf》由会员分享,可在线阅读,更多相关《KubeBlocks 在K8s上运行生产级的 OceanBase_曹伟.pdf(24页珍藏版)》请在三个皮匠报告上搜索。
1、Runs production-level OceanBase on K8s曹伟云猿生数据创始人&CEO在K8s上运行生产级 OceanBase前阿里云数据库总经理/研究员,云原生数据库PolarDB创始人。中国计算机学会数据库专委会、开源专委会执行专委,获得 2020 年中国电子学会科技进步一等奖,在SIGMOD、VLDB、ICDE、FAST、USENIX ATC 等数据库与存储国际顶级学术会议发表论文 20 余篇。云猿生数据创始人/CEOK8s is eating the worldGKEEKSACKAKSOpenShiftRancher阿里云AWSGCPAzure物理机PODservic
2、ePVC/PVsecretconfigmapTaintTolerationAffinityAnti-AffinityeventAppInternal Developer Platform/平台工程DatabaseWorkflow业 务 开 发SchemaEndpointK8sACLK8s is eating the worldYAML is the programming language of DevOps#YAML#YAMLDEV#YAMLSTAGE#YAMLMASTER传统data infra control plane烟囱式架构DBPaaS API&PortalHA备份恢复迁移监控报警
3、审计扩缩容容灾升级账号授权运维操作引擎资源调度云(虚拟机)物理机容器存储网络安全环境体验不一致系统预期行为不一致业务引入新引擎成本高Conways Law企业对云原生的data infra control plane的需求K8s 原生多云(包括混合云)支持多种数据库引擎 学习曲线类似DevOps 友好 支持 IaC 实践 提供声明式 APIK8s APIAutomation 支持新业务扩展新引擎通过抽象和扩展 API 实现对多种数据库的统一管理K8s APIkbcliKubeBlocks CloudPodSchedulerCSI生命周期高可用配置管理备份还原账号管理监控日志MySQL CRRe
4、dis CRPG CRMongoDB CRKafka CRPulsar CR ES CROceanBase CR声明式 APIOpenAPI人工操作IaC自动化扩展APIK8s容器编排领域模型YAML低代码扩展KubeBlocks API 对分布式数据库的拓扑进行抽象K8s 抽象PodPVCConfigmapServiceTolerationAffinitiyInstanceInstanceSetComponent&ComponentDefinitionCluster&ClusterDefinition把 KubeBlocks API 映射到数据库 OceanBaseCluster:Ocean
5、Base-paxosComponent:OceanBaseInstanceSetInstanceInstanceInstancePodPVCService把 KubeBlocks API 映射到数据库 OceanBase 主备Cluster:OceanBase-masterslaveComponent:OceanBase-replInstanceSetPodPVCServiceInstanceComponent:OceanBase-replInstanceSetPodPVCServiceInstance理解 OceanBase 架构1低代码插件扩展新引擎 案例 OceanBaseOceanBa
6、se Architecture要创建哪些组件每个组件如何配置和启动配置文件启动脚本 服务端口OBServerZone1OBServerOBServerOBServerZone2OBServerOBServerOBServerZone3OBServerOBServerOBServer创建集群模版2低代码插件扩展新引擎 案例 OceanBaseComponentDefinition.yamlkind:ComponentDefinitionmetadata:name:oceanbasespec:-serviceKind:#服务类型 services:#对外提供的服务端口configs:#配置文件 s
7、cripts:#脚本文件 runtime:#运行时containers:-command:ports:volumeMounts:lifecycleActions:#生命周期管理 roleProbe:#自定义角色探测定义组件模板,每个组件一个,需要填写volumeMounts数据/日志文件目录configSpec配置文件scriptSpec脚本文件services内部/外部服务定义组件拓扑和组件配置,主要描述:Runtime 描述组件运行时信息,例如ContainersConfigs:渲染并挂载用户配置文件,参数约束,参数配置等Scripts:渲染并挂载用户脚本文件,自定义环境变量等Servic
8、es:组件对外提供的服务端口和协议LifecycleActions:常见的生命周期管理的任务,例如角色探测lifecycleActions组件的行为添加 Addon 配置文件3低代码插件扩展新引擎 案例 OceanBaseaddon.yaml描述OceanBase,指定是否默认安装等信息kind:Addonmetadata:name:oceanbasespec:description:OceanBase Database is an enterprise-level native distributed database independently developed by Ant Group
9、 helm:chartLocationURL:https:/./charts/oceanbase.tgz*installable:autoInstall:false type:Helm*KubeBlocks 的 CICD 流程会自动创建 oceanbase.tgz,开发者不需要关心OceanBase Addon 开发 OceanBase Addon 要写多少代码?*KubeBlocks-Addon 会自动会新接入的Addon生成Addon YAML,简化了流程开发时间2周JSON2,961监控面板配置Shell Script1,239OBServer启动脚本YAML998接入KueBlocks
10、的YAML文件运维功能列表低代码插件扩展新引擎 案例 OceanBase*Rich day-2 operations2步创建集群运维任务支持情况Stop/StartYRestartYUpgradeYVolume-ExpandYVScaleYHScaleYBackup/RestoreYkbcli addon enable oceanbaseStep 1:打开 addonStep 2:指定引擎类型,创建集群Step X:集群运维kbcli cluster create oceanbase myob#myob为集群名kbcli cluster myob像搭乐高积木一样标准与高效的在K8s上组装数据库
11、基础设施拆解元件(Component)基于KubeBlocks(Addon)组装式搭建(Cluster)通过 Component 灵活组装 OceanBase 的多种部署形态3.3节点Cluster2.主从1.单节点4.多租户ClusterOBProxy为企业在 K8s 上搭建统一管理多种数据库的 DBPaaS性能KubeBlocks 是一个开源的在 K8s 上运行和管理数据基础设施的系统软件,它帮助开发人员、SRE、平台工程师在企业中部署和维护专用的 DBPaaS,并支持多种公共云和私有云环境。KubeBlocks 针对容器和云环境对 MySQL 与 PostgreSQL 数据库的内核和参数
12、进行优化,性能超过同规格RDS。可用性KubeBlocks 支持多种数据库的高可用集群配置。可观察性KubeBlocks 从丰富的数据源采集监控指标,集成了 Prometheus堆栈,并提供了富有洞察力的 Grafana 模板。此外,还提供慢日志等排查工具。可扩展性KubeBlocks 对接入一个新的数据库引擎提供了良好的抽象,通过addon 机制可以快速集成,并提供一致的使用体验和预期行为。为数据库运维提供丰富的 Day-2 Operations集群管理水平伸缩垂直伸缩存储扩容参数设置重启停止/启动版本升级账号管理可观测性备份恢复内置 Prometheus与外部监控系统无缝集成多层级监控大盘
13、IM/EMAIL 报警基于快照的自动备份集成流行的备份工具保存在低成本的对象存储全量恢复/按时间点恢复高可用数据迁移FailoverSwitchover可配置的故障隔离级别内置迁移工具外部数据库导入mysql2mysqlpg2pg异构迁移混沌测试性能测试故障注入 Fault-inject故障观测 NyancatBench-tpccBench-fio基础插件三方引擎PrometheusGrafanaCsi-s3-driverNebulaRisingWaveqdrantweaviateMilvusAws loadbalancercontrollerPikaKubeBlocks in CNCF LandscapeCNCF Cloud Native LANDSCAPE 收录的唯一的开源多引擎数据/数据库管理系统项目已经支持33数据库引擎款欢迎加入社区谢谢谢谢谢谢