云原生数据库管控探索和实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 云原生数据库管控探索和实践
孙勇福
腾讯云数据库专家工程师
2.
3. 个人介绍
l 孙勇福,腾讯云数据库专家工程师,腾讯云数据库“云
巢”负责人,8年数据库相关研发经验
l 从零设计腾讯云数据库云原生DBPaaS“云巢”平台,
并参与多款腾讯云数据库产品从零到一落地。致力于
提供易用/稳定/安全的数据库库产品服务,具备丰富
的数据库产品研发等技术经验。
4. • PaaS平台背景
• 整体架构演进
• 未来展望
• Q&A
5. PaaS平台背景
数据库发展
云计算形态
SQL
NoSQL NewSQ
mysql
L
mong
sqlsvr
oracle
es
hbase
单云
多云
TiDB
cynos
arura
传统IT
架构
私有云
混合云
公有云
数据库技术迭代速度加快,应用场景愈加复杂
6. PaaS平台背景
产品矩阵
DTS
DTS
DBbrain
DBbrain
DBS
DMC
DBAudit
DBS
PaaS平台
DMC
DBAudit
MySQL
MySQL
CTSDB
CTSDB
PostgreSQL TcaplusDB
TDSQL
PostSQL
烟囱发展走向一体化解决
TcDB
TDSQL
…..
…..
7. PaaS平台背景
Ø PaaS平台核心
规范标准
统一规范标准为数据库服务一体化提供
基础,标准地层硬件设施,减少差异化
定制影响。
能力增强
1
2
安全稳定
安全稳定是数据库基础,将数据库沉淀作为标准化
产品减少人为影响,满足客户高可用要求
PaaS 平台
4
3
降本增效
建立通用的PaaS平台能力为新数据类型 数据库统一管理,提供生命周期统一管理能力,降
能力扩展奠定基础。同时为多产品之间 低系统复杂性。产品之间经验相互积累,提高产品
融合满足多场景要求提供可能。 开发和维护效率。
8. PaaS平台背景
产品能力
资源管理
应用管理
镜像管理
产品运营
监控告警
可观测性
权限控制
联合PaaS提供更多应用体验
应用管理
作业平台
调度系统
数据迁移
SQL管理
智能DBA
…
应用定义
云原生统一资源模型标准,提供多种PaaS服务
服务整合
TDStore
CRedis
LibraDB
KonisGraph
Etcd
TDMQ
云巢资源管理
资源调度
容器底座
网络调度
本地盘/云盘调度
资源装箱
……
进程保护
K8S
X86/TencentOS
鲲鹏/麒麟
Arm/Tencent OS
…….
…
9. • PaaS平台背景
• 整体架构演进
• 未来展望
• Q&A
10. 整体架构演进
容器编排
有状态服务
PaaS平台
思考?
11. 整体架构演进
Ø 开源社区
operator ?
一体化解决?
12. 整体架构演进
业务产品
资源管理
运维
集群管理
HA Flow_manager
事件 Argo-engine
WF
1
2 3
资源调度管理
Meta_controller
create
upgrade
资源管理
告警
CRD
CRD
业务作业台
日志
CRD
CRD
Jobs
资源调度管理
K8S
CBS
COS
CVM
VPC
CLS
13. 整体架构演进
Ø 业务常见模型分析:
Ø
云巢平台:
l 主从关系: MySQL/SQLSvr/PostgreSQL/Redis l 使用K8S CRD 模型抽象数据库资源拓扑
l 多层树状类型:TDSQL l 模型对象统一调度管理
l 网状结构:Codis/Clickhouse/MGR/Tbase/CynosDB/TiDB
云巢平台
数据库实例模型
Master
计算节点
proxy
Slave
M-S
主从类型
流程系统
M-S
树状类型
协
调
资源管理系统
HA系统
CRD
分布式存储
网状类型
cluster
主从类型
M
S
网状类型
树状类型
•
poxy
p
r
o
x
y
set
计算
M-S
K8S
物理分布
协调
存储
pod
pod
set
pod
pod
K8S
容器模型
pod
pod
14. 整体架构演进
Ø 属性拆分
Clickhouse
Clickhouse
cluster
cluster
依赖
Zookeeper
Clickhouse
Zookeeper
Clickhouse
访问
组网
组网
资源拓扑
资源属性
15. 整体架构演进
Ø 自定义产品模型
领域模型
变化 :领域知识
SchedulerPolicy
Ingress
cluster
relationship
Probe policy
固定 :标准定义
backup policy
…….
控制器
16. 整体架构演进
Ø 容器控制
Service
client
Pod
ü 业务容器增强
业务容器
ü 集中管理
控制器
ü 灵活控制
配置文件
ü 业务资源隔离
脚本命令
服务发现
Sidecar
17. 整体架构演进
Ø 方案设计:
Ø 方案目标:
l 满足节点启动顺序要求 l POD 并发创建
l 兼顾发货效率要求 l Init-container 阻塞业务进程
l 业务自定义依赖启动策略
串行启动,随着节点数增加性能急剧下降
Ø 容器能力分析:
l POD
控制器
生命周期 hook 点: init-container
wait
Zk
initcontaine
r
Init-2
Pre-start
ck
wait
init initcontainer
run
Biz-
tim
container
e
init
runt Biz-
ime container
Init-1
Init-container
Quit
并行创建
POD
init
runt
ime
Main-container
Liveness probe • 统一资源生命周期控制器,优化调度逻辑
Readiness probe • 设置自定义资源控制策略模型
Pre-stop
16
启动策略
控制器
zk
initcontainer
Biz-
container
CK
ck
wait
init initcontainer
runti
Biz-container
me
18. 整体架构演进
Ø 难点
Ø 云巢配置中心
l CRD 是数据库实例的元数据层,数据库启动配置依赖CRD l Val_translater 配置文件,通过 starlark 提供类Python语法提供简单编程
l Translater 层不能有侵入性 l 业务配置文件接入,无侵入云巢平台
values
CRD
获取value
配置模版
获取tpl
Val_translater 文
件
def main(args):
encode = json.encode
names = strings.Split(args.pod.name, "-”)
data = {
"pod": args.pod,
" myId": names[len(names)-1] ,
}
return {"public": data, "__debug": args }
灵活语法支持
配置中心
配置模版
控制器
发货:下发配置
运行:下发配置
init
runti
me
set1
wait
initcontainer init
Biz-container runti
me
Sidecar-agent
Set2
wait
initcontainer
Biz-container
Sidecar-agent
渲染
<ip>{{.public.pod.podIp}}</ip>
<myid>{{.public.myId}}</myid>
<ip>9.166.11.15</ip>
<myid>0</myid>
17
19. 整体架构演进
Ø 高可用考虑
Write
Clickhouse集群
MySQL集群
资源抢占
服务故障
主从关系
MySQL
网络故障
MySQL
Zookeeper
Data
Clickhouse
Data
进程故障 : 代码bug/oom/进程假死等 网络故障:网络隔离等导致组件无法联 资源抢占: 运行实例POD 由于故障销
Pod 故障:驱逐/误删等 通 毁重建,资源被新增实例抢占无法恢复
20. 整体架构演进
Ø 方案
Ø 问题点
l K8s
l 开发
健康检查不满足业务需求
l 实例异常判定比较复杂:
多维度数据采集
策略模型
异常事件
POD
Tcp/http
cmd
Khaos-probe
kubelet
拨测任务
拨测系统
拨测系统
•
管控命令
•
•
Liveness check
HA策略树
指标
exec
api
HA_Brain
监测系统
事件系统
•
probe
l 多维度数据采集,业务配置异常情况决策模型
进程假死/网络隔离/磁盘只读?
NODE
khaos-probe 拓展 k8s liveness check 能力
•
云巢管控
云巢管控
云巢管控
HA 处理
HA领域算子
21. 整体架构演进
Ø 网络安全
l NetworkPolicy
限制最小化网络访问权限
l 用户请求链路通过安全组进行安全过滤
Node
ZK-A
云巢网络
Network-policy
eth
eth
0
0
租户网络
Node
CK-A
eth1
安全组
GW VPC-B
GW VPC-B
X
ZK-B
Network-policy
eth
eth
0
0
防火墙
CK-B
eth1
安全组
22. 整体架构演进
Ø 多集群管理
l 提供秒级集群元数据采集,信息维护
l 提供m_scheduler 集群级别装箱调度器,实现业务上层资源集群无感知
集群管理
m_scheduler
m_controller
m_node
控制链路
资源集群
资源集群
CRD
CRD
资源调度管理
CRD
CRD
资源调度管理
23. 整体架构演进
Ø 性能优化
1.
2.
请求流量进入负载均衡
请求被负载均衡转发到某一个Pod的ENI弹性网卡
LB
NodePort
NodePort
NodePort
Kube proxy
Kube proxy
Kube proxy
Conatiner Network
POD
POD
POD
POD
POD
POD
• QPS
提高13%
• 延迟优化10%
24. 整体架构演进
Ø 稳定性验证
l
混沌测试平台chaos-mesh引入,提供系统整体可用性评估
场景测试 Daily Bulid
WF
DSL-Engine
1
2
Failover场景
3
网络异常场景
•
•
•
DSL 编排沉淀现网异常流程场景
1. 异常删除场景
2. 网络异常场景等,测试 case 集合
云巢DBPaaS平台
Chaos混沌平台
稳定性沉淀
K8s api-server
Create / Delete/ Update Event
List / Kill POD
Chaos controller manager
Chaos deamon
kubelet
Inject stress/Network/IO/…
POD
引入开源chaos 平台,进行混沌测试
1.
POD 任意KILL
2.
注入网络异常
3.
设置IO延迟
等场景,测试系统稳定性
25. 整体架构演进
Ø SaaS融合,一体化输出
ü 应用层整合
SaaS产品
云巢DBPaaS平台
资源管理
集群管理
运维管理
ü 标准能力输出
网络资源 存储资源 生命周管理 资源编排 运维系统 配置中心 计算资源 命令通道 可观测系统 发布管理 混沌平台 版本管理
实例管理 镜像资源 日志采集 公共服务 作业管理 运营平台 策略管理
CI/CD
ü 容器层提供硬件屏蔽
K8S
CBS
COS
CVM
监控告警
VPC
CLS
ü IaaS层提供基础能力
26. • PaaS平台背景
• 整体架构演进
• 未来展望
• Q&A
27. 未来展望
Ø 智能自治,千人千库
自治场景对比
智能化进程
传统方式
自治化
智能化
自动化
数据库压力
过大,负载
过高。慢查
询过多,数
据库响应比
较慢。
·人工kill会
话
· 重启数据
库
· HA主备切
换
VS 自治方式
·7*24 小时
异常诊断
·流量自动过
滤阻断
·SQL自动优
化调整
28. 未来展望
Ø 开源共建,回馈社区
经验
沉淀
海量
验证
促进/回馈
云
环
境
开
源
PaaS 平台统一解决方案 社
区
。。。
最佳
实践
社区
生态
场景
补充
。。。
反馈/优化
行业
规范
29. 扫码进入现场交流群
30.
31.