明晚九点|发布系统演进与持续集成
2018-01-24 17:41
288 查看
主题:发布系统演进与持续集成
内容:背景介绍
手动发布的阶段
自动化阶段---脚本
puppet
自主研发支持
支持容器化
持续集成
主讲师:萝卜
多年 go 语言开发经验从事自动化运维和基础架构相关工作
背景
管理什么?用户
权限
配置文件
软件包
服务
机器
cron
特色
支持异构系统,linux、windows
支持多种语言,java、php、c++、web
大规模部署
跨 IDC
与其它运维工具无缝集成
支持全量与增量发布
支持健康检查
支持各种并发控制
支持各种数据统计
实时性要求高
手动发布阶段
人肉发布流程人肉发布优点
最直接
简单可信赖
小规模,适合创业公司
天然支持异构环境,不同语言
人肉发布缺点
效率,人力浪费,(@ο@) 哇~,排队了
容易出错,特别是紧急上线,文件拷少了
Check考虑不全(经验总结自动化)
流程好长
好慢。。。
怎么回滚?
人肉并行吗?
自动化初始阶段
scp、rsync、python依赖运维脚本,需要修改脚本?参数传少了?别人写的?
严重依赖中控机(ACL)
脚本缺乏统一管理,散落在各机器上
发布的中间数据、结果丢失
如何进行回滚、并发控制?
puppet
puppet 解决的问题自动化部署
资源管理
系统初始化
puppet 架构
puppet 工作步骤
客户端 puppetd 调用 facter ,facter 会探测出这台主机的一些变量如主机名、内存大小、IP 地址等。然后 puppetd 把这些信息发送到服务器端。
服务器端的 puppetmaster 检测到客户端的主机名,然后会到manifest 里面对应的 node 配置,然后对这段内容进行解析,facter 送过来的信息可以作为变量进行处理的,node 牵涉到的代码才解析,其它的代码不不解析,解析分几个过程:语法检查、然后会生成一个中间的伪代码,然后再把伪代码发给客户机。
客户端接收到伪代码之后就会执行,客户端再把执行结果发送给服务器。
服务器再把客户端的执行结果写入日志。
问题
二次开发成本
机器数量持续增加效率
与其他系统集成
自主研发之路
设计考量用户权限、安全管理
管理机器
管理软件包
跨平台支持
数据统计
并发控制、性能
持续集成
业务领域
基本架构
机器管理
运维手动添加
静态分配
按照产品线(分组)
权限
心跳、存活
资源
包管理
支持多语言
高可用
多版本
自动构建、打包
任务管理
调度系统
Agent 执行器
资源中心
依赖子系统
Agent 设计考量
分布式部署
自升级
多账号执行支持
任务幂等性
各种 agent 如何管理
容器化支持
创建服务的流程docker 中部署服务构建镜像(用 docker build 构建镜像)
发布镜像(push 到共享的镜像仓库中)
下载镜像(使用者将镜像下载到客户端本地)
运行容器(将镜像不环境变量相结合,运行容器)
访问服务(通过端口映射或独立IP的方式访问服务)
步骤
制作镜像(打包)
部署服务
启动容器
健康检查
镜像
自动构建镜像
镜像仓库
镜像大小
网络方案
健康检查
配置中心
监控告警接入
服务自动拉起
开源解决方案
Mesos+MarathonKubernetes
Mesos+Marathon解决方案
Kubernetes 方案
加小助手微信:1902433859(进入直播分享群)
相关文章推荐
- Working Practice-通过持续集成系统保证项目的可发布。
- 个推如何管理亿级代码的质量?持续集成SonarQube 代码质量管理系统
- 12 Maven-使用Hudson进行持续集成及系统配置
- 产品迭代发布如何更快速?阿里持续集成与持续交付实践之路全解析
- 持续集成(jenkins)中的持续发布配置.(Deploy to container Plugin插件)
- 高可用的大数据计算平台如何持续发布和演进
- 【软件工程】持续集成:如何建立百万行级代码的版本构建系统
- 持续集成上铁道——CruiseControl.rb发布1.0版本
- Travis 持续集成自动发布博客文章
- Java开发流程自动化(svn+maven+nexus+jenkins) --自动编译,持续集成,测试,打包,发布/部署
- 今晚19:30直播阿里巴巴大规模持续集成的技术演进之路_欢迎免费观看
- Jenkins构建Android项目持续集成之系统配置篇
- CI(Continue Integrate)自动化持续集成和发布
- [原创]CI持续集成系统环境---部署gerrit环境完整记录
- 阿里的分布式持续集成系统-reliable
- 【工程化知识点】浅谈持续集成与灰度发布
- Jenkins+maven+git+sonar 系统持续集成&代码单測管理
- 持续化集成Jenkins的系统配置+jenkins的构建项目配置
- 持续交付-发布可靠软件的系统方法
- 如何利用容器构建持续交付/持续发布系统? (有彩蛋)