请选择 进入手机版 | 继续访问电脑版

ITIL,DevOps,ITSS,ITSM,IT运维管理-ITIL先锋论坛

 找回密码
 微信、QQ、手机号一键注册

扫描二维码登录本站

QQ登录

只需一步,快速开始

查看: 280|回复: 0

谷歌SRE发布工程的Rapid 系统

[复制链接]
发表于 2020-12-6 00:01:10 | 显示全部楼层 |阅读模式
8-1展示了Rapid系统中的主要组件。Rapid是用Bhueprin文件配置的。Blueprint文件是一种利用Google内部配置语言写成的,用来定义构建目标和测试目标、部署规则,以及一些管理用信息(例如项目负责人信息)。基于角色的访问控制列表可以决定谁能执行哪些动作。' G. S0 h" p& e7 j+ O

7 F: d, S2 z' ~9 D* d, y7 L. R' x7 t# \+ {6 G, V
: a5 t* n" C$ T6 n
粘贴上传202012060000057495..png
/ f9 M3 c: A0 }$ h; L' c$ i+ D7 `+ A2 h* a, @
" ]2 G( Z4 L; T9 c, q' G

0 q' j2 @/ y  q# g  k% g( a
每个Rapid项目都有一些工作流,定义了发布流程中的具体动作。工作流可以线性或者并发执行,某个工作流也可以启动另外一个工作流。Rapid将工作请求分发给运行在Borg系统上的生产服务器。因为Rapid使用Google的生产基础设施,我们可以同时处理几千个发布请求。
' V! Z& ~: |1 k
( s; J; |6 G/ t& q% y/ L, D1 U9 C' M
典型的发布流程按如下顺序进行∶
( H+ _( G6 b& r$ F  O
1.Rapid使用集成版本号(通常自动从持续测试系统获取)创建新的发布分支。

- E& e3 q9 n2 v/ r
2.Rapid利用Blaze编译所有的二进制文件,同时执行所有的单元测试,这两个过程通常是并发进行的。编译和测试各自在独立的环境中进行,而非Rapid工作流运行的环境中。这种隔离使得并发更容易一些。
& w8 P- t+ O+ [% K8 W2 i
3.构建结果随后可以用来运行系统级集成测试,同时进行测试部署。典型的测试部署过程是在系统测试完成之后,在生产环境中启动一系列Borg 任务。

! M; Y3 C" L/ }9 a; l
4.每一步的结果都有日志记录。另外产生一份与上次发布对比包含的所有新的改动列表的报告。

" q" V# j4 h" M6 A% }' Y4 k
  U% {/ Q6 x+ _1 W6 {; l
Rapid可以管理发布分支与cheery picking。每个具体的cherrypicking 请求可以被单独批准和拒绝。

4 {5 n& X6 a* `3 x; K7 F

% H, t5 s5 Q) X" I8 A
部署
Rapid经常被用来直接驱动简单的部署流程。它可以根据 Blueprint文件定义的部署规则,利用具体的任务执行器(executor)来用新构建的MPM包更新Borg任务。
; G4 c3 J$ j; X( D; z' M% U

' j7 s9 K3 p. t& p
我们使用 Sisyphus,SRE开发的一个通用的发布自动化框架,来执行更为复杂的部署任务。一个发布(rollout)是由一个或多个任务组成的一个逻辑工作单元。Sisyphus 提供了一系列可扩展的Python类,以支持任意部署流程。同时,它还有一个监控台,可以用来详细控制每个发布的执行,以及监控发布流程。

& o+ Y1 o; c+ A% w+ K
在典型的集成流程中,Rapid在某个Sisyphus系统中创建一个新的发布。Rapid知道自己构建的MPM包的 build标签,可以在创建发布时指定这个标签。Sisyphus可以利用这个 build 标签来指定究竟使用哪个 MPM版本进行部署。

6 u4 A' d. G  U/ c

! i8 {. `3 m9 S  ?5 v3 b/ X
Sisyphus,可以支持简单的发布流程,也可以支持复杂的发布流程。例如,我们可以立即更新所有的相关任务,也可以在几个小时的周期内,一个接一个地更新集群版本。

* p( a" E. N4 D  o- S1 `
! V1 b* G2 n3 B" Z* i7 L5 _2 ^
我们的目标是让部署流程与服务的风险承受能力相结合。在开发环境或者预生产环境中,我们可能会每小时构建一次,同时在所有测试通过之后自动发布更新。对于大型面向用户的服务来说,我们可能会先更新一个集群,再以指数速度更新其他集群直到全部完成。对敏感的基础设施服务来说,我们可能会将发布扩展到几天内完成,根据这些实例所在的地理位置交替进行。
) j3 A7 J! n: z" n$ z

! L% J5 o5 z0 B6 k% F' k' y6 r+ W1 ?" R( o: }3 S! C1 Z

* O! l8 k9 c1 S, D
粘贴上传202012060000103002..png




上一篇:发布工程的基本思想之三(测试、打包、部署)
下一篇:SRE发布工程师如何做好配置管理

本版积分规则

本站关键字: ITIL| ITSM| ISO20000| ITIL培训| ITIL认证| ITIL考试| ITSS| ITSS培训| ITSS认证| IT运维管理| DevOps| DevOps培训| DevOps认证| itop| itil4| sre| 开源ITSM软件

QQ|小黑屋|手机版|Archiver|艾拓先锋网 ( 粤ICP备11099876号-1 )|网站地图

Baidu

GMT+8, 2021-1-25 08:36 , Processed in 0.151025 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表