SlideShare a Scribd company logo
2020 gops-旷视城市大脑私有云平台实践-刘天伟
刘天伟 旷视⾼级⼯程师
旷视城市⼤脑的私有云平台实践
GOPS 全球运维⼤会2020-深圳站 3
个⼈介绍
刘天伟,2013.7毕业于⼤连理⼯⼤学。在⾖瓣开始第⼀份⼯作,2017.9加⼊旷视,
现任平台开发部Leader,⾼级⼯程师,负责公司私有云、公有云、加密授权体系、⾃动
化测试平台建设。
2013.7 ~ 2017.9 2017.9 ~ NOW
Python
公有云PaaS平台: DAE
Web基础架构、App Engine、Auto Scale
2013.7 - 2017.9 DAE组
互联⽹/⼩清新/ToC
Golang/Python/JS
私有云DevOps平台: DevOps
私有化场景、⾃动化运维、交付型⼯具链
2017.9 - 2019.4 CoreTeam
2019.4 - NOW IPU-平台开发部
AIoT/商业范/ToB
4
整体框架
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DevOps平台
GOPS 全球运维⼤会2020-深圳站
5
公有云vs私有云,全球IT投⼊中谁的⽐重更⼤?
50/50
40/60 还是 60/40
70/30 还是 30/70
其他
GOPS 全球运维⼤会2020-深圳站
私有云VS公有云-悬殊的对⽐
6
全球IT投⼊
私有云
97%
公有云
3%
AWS 2019 re:Invent by AWS CEO Andy Jessy
GOPS 全球运维⼤会2020-深圳站
关于旷视城市⼤脑
城市管理
智慧社区
交通枢纽
园区安全
7
智能城市管理闭环体系
GOPS 全球运维⼤会2020-深圳站
私有化交付中⼤家都在问什么?
8
1. 产品交付、运维的规范和流程是什么?如何部署?
3. 运维巡检时,我该做点啥?
2. 没法远程到现场,如何OnCall?
4. 现场⽹络好像有问题,我如何排查?
7. 删除⽬录时不⼩⼼多写了个空格,变成了rm -rf / xxx,⻢上就终⽌但好像系统挂了,怎么办?
6. 机器断电宕机,电⼒恢复后机器⽆法启动怎么办?
5. 数据库数据被误删了,有办法恢复吗?
GOPS 全球运维⼤会2020-深圳站
私有化交付⾯临的挑战
6
5
4
3
2
1
1
运维条件恶劣
⻓时间⽆⼈值守,操作和问题反
馈完全依赖现场⼈员
异构
体系结构、OS、显卡
机器规模1-500台,多种⽹络
私有化
离线运⾏、全程断⽹、现场环境
恶劣
部署形态
部署⽅案实施前确定
升级、扩容需求
4
3
2
5
6
⾮SA的实施
技术⽀持、项⽬经理、集成商
项⽬多且杂
500+现场
10+ 条业务线
9
GOPS 全球运维⼤会2020-深圳站
解决ToB领域、私有化、重交付场景所⾯临的问题
私有化核⼼⽬标
1.标准化交付 2.减轻现场运维压⼒
3.最佳实践,
开箱即⽤
10
GOPS 全球运维⼤会2020-深圳站
11
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台
导航
GOPS 全球运维⼤会2020-深圳站
12
⾯向ToB的交付型项⽬⼯具链
GOPS 全球运维⼤会2020-深圳站
HA、内嵌基础设施、⼯具链
500+ 现场
230+ 公司内部集群
10+ 条业务线
迭代27个版本
平台型⼯具
历程
单机、不可⾔传的“绝技”
⼟脚本
简朴的Web界⾯,
service.yaml能实现集群化部
署,项⽬从1个节点起步。
容器化部署
START 2017.9前 2017.11 2018.4 2018.10 2020.8
托管加密授权、内核参数、
NTP、服务发现
编排⼯具概念
⾃动化运维
HTTPS、防⽕墙
监控告警体系
200+ 现场
70+ 公司内部集群
安全加固
13
GOPS 全球运维⼤会2020-深圳站
⼯具链
14
Megvii Delivery Cloud Platform Toolbox = MDT
GOPS 全球运维⼤会2020-深圳站
名词解释
15
Megvii Delivery Cloud Platform Toolbox = MDT
DevOps: ⾯向ToB场景,⾃研的容器托管和⾃动化运维平台
名字由来:跟DevOps实际含义关系不⼤,最初也没有涉及CICD。主要是名字简单,⽅便在公司内部推⼴
BootOS:基于Ubuntu 16.04定制的OS,在机器质检、安全、容器、显卡、稳定性和新硬件兼容性等⽅⾯增强
ATP: 基于DevOps和DevOps-Swarm的⾃动化测试平台,提供复杂场景的⾃动部署、测试驱动和混沌⼯程
SDC:基于阿⾥云OSS的有完善安全审计的软件包制作、分发平台
SRP: 加密与授权服务
DevOps-Orch: DevOps 编排⼯具Python Framework、Web托管平台和CICD⼯具链
DevOps-Swarm:DevOps管理若⼲个节点,DevOps-Swarm管理若⼲个DevOps。定位是集中式的运维Dashboard、告警汇总和
机器拓扑管理
DevOps-Import:运维巡检平台,能对DevOps ⼀键OnCall产⽣的⽇志进⾏内部回放,做⻓期的监控跟踪(计划中)
GOPS 全球运维⼤会2020-深圳站
16
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台
导航
GOPS 全球运维⼤会2020-深圳站
17
私有云DevOps平台应该有什么样的功能?
GOPS 全球运维⼤会2020-深圳站
18
GOPS 全球运维⼤会2020-深圳站
19
项⽬起点是容器部署,⽬前功能来⾃⼏百个现场实践的抽象和总结
GOPS 全球运维⼤会2020-深圳站
功能
20
GOPS 全球运维⼤会2020-深圳站
架构
21
GOPS 全球运维⼤会2020-深圳站
架构:为什么容器编排没⽤K8S?
22
1. 资源与复杂性:早期项⽬都是从1个节点起步的,选择k8s不经济,也增加了系统复杂性
2. 学习成本:ToB场景现场实施和运维条件有限,要降低学习⻔槛
3. ⼤材⼩⽤:部署⽅案在实施前确定,k8s核⼼AutoScale功能需求被弱化
实践:选择合适的架构保证简洁性,不盲⽬追逐时髦的⽅案,让事情先转起来
GOPS 全球运维⼤会2020-深圳站
23
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
导航
GOPS 全球运维⼤会2020-深圳站
部署:交付的是什么?
24
交付 = *.devops_release_pkg + *.devops_orch + *.devops_key
Docker Image和模型包
⼏G到⼏⼗G
产品版本相关
Dev/QA, CI⾃动产⽣
编排及配置⽂件
⼏⼗KB
现场资源相关
技术⽀持,DevOps编排⼯具⽣成
授权⽂件
⼏KB
加密狗硬件和授权能⼒相关
项⽬经理, DevOps License Center⽣成
实践:发布包的分层和格式私有化,能屏蔽很多细
节,并保持良好的扩展能⼒
GOPS 全球运维⼤会2020-深圳站
部署:YAML与编排⼯具
25
Service YAML
1. 开发者友好
2. 借鉴Docker Compose格式,进⾏
⼤量DevOps专有字段扩展
3. 功能包括节点编排、容器运⾏参
数、监控告警、健康检查和
MountPoint等
实践:YAML总会⾛向⾃定义的道路
GOPS 全球运维⼤会2020-深圳站 YAML 示例
部署:YAML与编排⼯具(2)
26
编排⼯具
1. 技术⽀持、项⽬经理友好
2. 业务遵循DevOps YAML定义独⾃
演进,可以是简单YAML⽣成复杂
YAML,也可以是全界⾯化操作
3. DevOps-Orch-CI/Web 提供
CICD、编排Web托管和Web
Framework
洞鉴编排⼯具示例
GOPS 全球运维⼤会2020-深圳站
部署:YAML与编排⼯具(3)
27
Core编排⼯具示例
GOPS 全球运维⼤会2020-深圳站
部署:功能
1. Snapshot与回滚机制、操作记录导出
2. 现场定制化开发模式
3. 补丁机制
28
特别设计
GOPS 全球运维⼤会2020-深圳站
29
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
导航
GOPS 全球运维⼤会2020-深圳站
易⽤性
1. 交付物:⼀个100M左右的 .run 安
装包,包含集群所需要的所有东⻄
2. BootStrap:Web的安装器,能简
单的构建⼤集群和HA模式
3. 可视化:降低使⽤者的⼈⼒成本和
学习成本
30
GOPS 全球运维⼤会2020-深圳站
易⽤性:集群升级
1. DevOps平台⾃身的升级⾮常容易
2. HA下的DevOps优雅升级
3. DevOps升级过程中不会对服务产⽣
影响
31
实践:好⽤的⾃升级⽅案,能让现场DevOps能保持最新,避免版本爆炸
GOPS 全球运维⼤会2020-深圳站
32
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
2. 易⽤性:all in one、界⾯化、⾃升级
导航
GOPS 全球运维⼤会2020-深圳站
监控告警
33
1. 多种通知渠道
2. 内建监控告警,开箱即⽤
3. ⽀持⾃定义告警规则
GOPS 全球运维⼤会2020-深圳站
E
x
p
o
r
t
e
r
D
/
Z
diskstat
Load
Uptime
top
Basic
Swap
vm
stat
K
e
r
n
e
l
P
a
g
e
m
e
m
i
n
f
o
Speed
Times
Bandwidth
C
o
r
e
s
B
a
s
i
c
FD
Processes
NodeSize
Panic
Diff
NF Contrack
TCP
UDP
Socket
Netstat
ICMP
PingRTT
Ping Loss
Info
Swap
CPU
Blkio
Disk
Volum
eDisk
I
O
g
o
h
t
t
p
Lea
de
r
htt
p
IP
M
I
A
P
I
K
e
r
n
e
l
P
a
n
i
c
D
o
c
k
e
r
E
v
e
n
t
s
s
e
r
v
i
c
e
.
y
a
m
l
IO
G
P
U
C
P
UKernel
NTP
Docker
Daemon
De
vO
ps
C
lu
st
e
r
A
g
e
n
t
Li
ce
n
se
监控
34
监控
内建100+ 监控
⾃定义Exporter⾃动接⼊
s
e
r
v
i
c
e
.
y
a
m
l
P
r
o
m
e
t
h
e
u
s
A
l
e
r
t
R
u
l
e
s
swap
C
P
U
CPU
GPU
GPU
GPU ECC
GPU
GPU
I
n
o
d
e
R
A
I
D
5
R
A
I
D
Load5
NTP
E
x
p
o
r
t
e
r
TIME_WAIT
Ping Avg-RTT
Ping
Ping Min-RTT
Agent
Agent
Manager
D
e
v
O
p
s
O
p
e
n
F
D
D
e
v
O
p
s
P
r
o
m
e
t
h
e
u
s
E
x
t
e
r
n
a
l
P
r
o
m
e
t
h
e
u
s
CPU
GPU
DevOps
Agent
D
o
c
k
e
r
告警
35
内建40项告警
⾃定义告警
第三⽅Prometheus告警⾃动接⼊
告警
监控告警:实践
36
1. ToB 场景 Exporter + Prometheus + Alertmanager 组合已经⾜够好⽤
2. 每个应⽤程序都应该被监控,以Web⽅式暴露⼀些接⼝是很容易实施
的,另外要⽀持Unix Domain Socket⽅式
/metrics : Exporter 指标
/health_check : 健康检查
/version : 版本信息
3. ⽆⼈值守、离线场景有能导出的“事件追溯” 功能会⾮常受益
GOPS 全球运维⼤会2020-深圳站
37
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
2. 易⽤性:all in one、界⾯化、⾃升级
3. 监控告警:⼤量内建项、⽀持服务⾃定义、多种通知机制
导航
GOPS 全球运维⼤会2020-深圳站
异构
38
实践:全“国产化”趋势,需要满⾜服务器层⾯的异构要求
GOPS 全球运维⼤会2020-深圳站
39
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
2. 易⽤性:all in one、界⾯化、⾃升级
3. 监控告警:⼤量内建项、⽀持服务⾃定义、多种通知机制
4. 异构:多种体系结构、显卡、OS的⽀持
导航
GOPS 全球运维⼤会2020-深圳站
稳定性:HA
40
DevOps ⾃身HA:
1.成本低:只��在安装器中选择⾼可⽤模式,并指定Virtual IP
2.可转化:提供⾮HA向HA的迁移⽅案
对外赋能其他服务的HA
1. 存储:提供⾼可⽤的PostgreSQL集群, YAML声明infra依赖
2. 负载:提供4/7层负载均衡,YAML中定义mountpoint mountpoint yaml例⼦
实践:HA需要持续建设,不能⼀蹴⽽就
GOPS 全球运维⼤会2020-深圳站
稳定性:混沌⼯程
41
为什么需要混沌⼯程?
1. 功能测试远远满⾜不了ToB项⽬对稳定性的需求:⾼可⽤测试、特定场景模拟测试
2. 内部测试环境过于理想,现场环境荆棘丛⽣:断⽹、机器拔电源、服务误删除、双⽹场景等
3. ⾼质量的快速交付很多时候是项⽬成败的关键:⾃动化、规模化的测试
实践:让系统在不确定性中获益,提⾼反脆弱能⼒
DevOps平台混沌⼯程架构图
DevOps平台混沌事件
GOPS 全球运维⼤会2020-深圳站
42
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
2. 易⽤性:all in one、界⾯化、⾃升级
3. 监控告警:⼤量内建项、⽀持服务⾃定义、多种通知机制
4. 异构:多种体系结构、显卡、OS的⽀持
5. 稳定性:HA与混沌⼯程
导航
GOPS 全球运维⼤会2020-深圳站
安全
43
实践:安全⽆⼩事,保持敬畏
GOPS 全球运维⼤会2020-深圳站
安全:实践
44
1. 现场不太可能有“堡垒机”,完善的WebTerminal会让现场的操作更可控
2. 客户现场基本没有域名,都是IP地址的⽅式访问,⽽此时的HTTPS证书,需要使⽤
Subject Alternative Name, 根据具体集群节点IP地址动态⽣成证书。
3. WebTerminal中预定义命令,能让现场操作⼈员减轻Linux命令学习成本
安全:加密授权
45
容器场景在使⽤加密授权时遇到的问题:
1. 使⽤⽹络授权,DevOps要能彻底托管加密设备(硬件、授权、配置和Web服务),不对现场暴露复杂配置
2. 容器内的CodeMeter与宿主机的CodeMeter,在⽹络上是有冲突的,带来不稳定性。通过路由表+iptables 转发逻辑骗过
宿主机的CodeMeter,实现容器环境的稳定授权
3. 加密授权要有HA能⼒,否则其他部分再怎么做HA,系统都是脆弱的
实践:加密核⼼代码、授权运⾏能⼒。加密授权是现场运⾏的“钥匙”,是最后
的屏障。
GOPS 全球运维⼤会2020-深圳站
46
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
2. 易⽤性:all in one、界⾯化、⾃升级
3. 监控告警:⼤量内建项、⽀持服务⾃定义、多种通知机制
4. 异构:多种体系结构、显卡、OS的⽀持
5. 稳定性:HA与混沌⼯程
6. 安全性:防⽕墙、WebTerminal、事件追溯、加密授权
导航
GOPS 全球运维⼤会2020-深圳站
灾备
47
实践:很多ToB场景,灾备的优先级⾼于HA
GOPS 全球运维⼤会2020-深圳站
48
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
2. 易⽤性:all in one、界⾯化、⾃升级
3. 监控告警:⼤量内建项、⽀持服务⾃定义、多种通知机制
4. 异构:多种体系结构、显卡、OS的⽀持
5. 稳定性:HA与混沌⼯程
6. 安全性:防⽕墙、WebTerminal、事件追溯、加密授权
7. 灾备:⾃动与⼿动备份相结合
导航
GOPS 全球运维⼤会2020-深圳站
基础设施
49
1. 开箱即⽤,降低��项⽬启动成本
2. 内部最佳实践的⼯具化输出
3. 按需使⽤的基础设施:
1. 版本选型、Docker Image优化
2. ⼀键搭建和声明式使⽤
3. 完善的监控、告警、运维、灾备、扩容⽀撑
实践:基础设施越完善,新项⽬边界成本越低
GOPS 全球运维⼤会2020-深圳站
基础设施:示例
50
ETCD迁移、扩缩容和灾备
ETCD 集群⼀键创建
GOPS 全球运维⼤会2020-深圳站
51
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
2. 易⽤性:all in one、界⾯化、⾃升级
3. 监控告警:⼤量内建项、⽀持服务⾃定义、多种通知机制
4. 异构:多种体系结构、显卡、OS的⽀持
5. 稳定性:HA与混沌⼯程
6. 安全性:防⽕墙、WebTerminal、事件追溯、加密授权
7. 灾备:⾃动与⼿动备份相结合
8. 基础设施:⼀键搭建、声明式使⽤
导航
GOPS 全球运维⼤会2020-深圳站
⽂档化
52
1. 使⽤⽂档:DevOps RUN 发布包中⾃带使⽤⽂档
和API⽂档,可以在DevOps Web中进⼊
2. 代码提交MR时,带上相应⽂档,⽂档也需要
Code Review
3. 设计⽂档:采⽤DEP⽅式编写(DevOps
Enhancement Proposal)
实践:内建⽂档可以解决版本依赖问题
GOPS 全球运维⼤会2020-深圳站
53
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台 部署 易⽤性 监控告警
异构
稳定性
安全性
基础设施
灾备 ⽂档化
私有云DevOps平台解决⽅案
1. 部署:软件包 + 编排⽂件 + 授权⽂件
2. 易⽤性:all in one、界⾯化、⾃升级
3. 监控告警:⼤量内建项、⽀持服务⾃定义、多种通知机制
4. 异构:多种体系结构、显卡、OS的⽀持
5. 稳定性:HA与混沌⼯程
6. 安全性:防⽕墙、WebTerminal、事件追溯、加密授权
7. 灾备:⾃动与⼿动备份相结合
8. 基础设施:⼀键搭建、声明式使⽤
9. ⽂档化:内建⽂档与DEP
导航
GOPS 全球运维⼤会2020-深圳站
54
总结&问答
GOPS 全球运维⼤会2020-深圳站
总结
55
旷视城市⼤脑的私有化交付挑战
交付型⼯具链
私有云DEVOPS平台
6个挑战、3个关键⽬标、1000+现场总结与抽象
⾯向开发、测试、项⽬经理和技术⽀持的⼯具链
架构设计与取舍、功能设计、9个⽅向的实践
1. DevOps是⾯向ToB领域、私有化、重交付场景中,解决部署和⾃动化运维相关问题的平台型⼯具
2. 围绕DevOps平台建⽴的交付型⼯具链MDT,提供操作系统、编排⼯具、⾃动化测试、多集群管理、软件包分发和运维巡检等最佳实践
GOPS 全球运维⼤会2020-深圳站
56
57

More Related Content

2020 gops-旷视城市大脑私有云平台实践-刘天伟