明晚九点|发布系统演进与持续集成

主题:发布系统演进与持续集成

内容:

  • 背景介绍
  • 手动发布的阶段
  • 自动化阶段---脚本
  • 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+Marathon
  • Kubernetes

Mesos+Marathon解决方案

Kubernetes 方案

加小助手微信:1902433859(进入直播分享群)

原文地址:http://blog.51cto.com/51reboot/2064727

时间: 2024-11-02 14:05:51

明晚九点|发布系统演进与持续集成的相关文章

Jenkins在Windows系统dotnet平台持续集成

        之前写过一篇文章是在CentOS上构建.net自动化编译环境, 今天这篇是针对于Windows平台的环境.        Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作, Jenkins是由Sun的前员工开发的,它的根基是Java,但也可以用在非Java的项目里,比如PHP.Ruby on Rails..NET.持续集成相关的工具有很多.它提供了Web界面,用户

一步步部署基于Windows系统的Jenkins持续集成环境

如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境.之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一些问题,而大多数教程文档都是基于Mac或是Linux平台.为此很是头疼,经过一番摸索,终于走通了Windows平台下的一条路. 本CI系统流程:Dev提交代码,并merge到master分支-->Jenkns获取最新代码,开始构建(解析git触发响应,build solution,run automation,get result都在此步内完成)

自动打包发布到服务器的持续集成工具:Jenkins+钉钉

钉钉,智能移动办公平台工具. Jenkins,是一个开源的持续集成的服务器,开源帮助我们自动构建各类项目. 持续集成,检测代码逻辑,高效率自动化发布工程项目. 安装Jenkins在服务器:Jenkins具体安装与构建部署使用教程 发布后台API配置:图片太大 发布前端Vue项目:图片太大 原文地址:https://www.cnblogs.com/yancongyang/p/10832561.html

持续集成(一)思想篇

 定义 持续集成(ContinuousIntegration,简称CI),又被称为持续构建(ContinuousBuild),最初是以一种研发管理的思想被提出来.1996年,持续集成的思想首先在Kent Beck的极限编程中被提了出来.KentBeck在他的书中是这样描述的:"团队编程就是先分而治之地解决问题,然后集成.但集成的过程是不可预知的,你等待集成的时间越长,付出的代价就可能越高.因此,每完成一段时间编程,系统就应当进行一次集成,并进行相应的测试."KentBeck将这里的&q

为什么要做持续集成

持续集成在目前大多数的公司里都会有这样或者那样的使用.有的会选择一些Open Source的工具,如CruiseControl,Hudson,LuntBuild等等等等,有的会购买有更好服务,更强功能的商业产品,如TeamCity,QuickBuild等等,而有的会选择自己实现,如Cron+Ant/Maven/Make等等.那么使用下来效果如何呢?真得达到了预期的效果吗?我想来恐怕未必吧,否则也就不会有这么多的讨论了.[@[email protected]] 持续集成与敏捷编程 在敏捷领域中,测

浅谈自动化测试之持续集成

from:https://www.cnblogs.com/wysk/p/7517277.html 一.持续集成是什么? 持续集成是一种软件开发的实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误.许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件. 持续集成指的是,频繁地(一天多次)将代码集成到主干,通过持续集成流程的进行自动化方式的

浅谈持续集成的理解以及实现持续集成,需要做什么?

一.持续集成是什么? 持续集成是一种软件开发的实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误.许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件. 持续集成指的是,频繁地(一天多次)将代码集成到主干,通过持续集成流程的进行自动化方式的构建,编译和测试,提供可以部署发布的单元包 持续集成的目的,就是让产品可以快速迭代,同时还能保持高

如何用 Gitlab 一键实现 CI 持续集成?

背景 在目前快节奏生活已经成为社会风潮的大背景下,越来越多的互联网公司为了其应用产品能更快的掌控风向脉搏,抢占市场红利,需要更快速的应用产品开发上线,在市场的反馈下,不断的迭代新功能.在此需求下,持续集成,持续部署,持续交付被越来愈多公司所推崇,DevOPS文化的兴起,一方面是实践打破运维与研发的堡垒之墙,另一方面也是敏捷开发过程中的必要产物. 提高软件开发效能,快速迭代.快速试错,以及根据自己开发团队特点,使用怎样的技术手段,才能是软件开发效能最高,更为快速敏捷,以及怎样才能满足产品能在最短周

在TFS持续集成(持续发布)中执行Telnet任务

Telnet是一种在因特网或局域网上使用虚拟终端连接,提供双向交互式文本通信设备的协议. 它是最早的互联网通讯协议之一.自1969年启用以来,已经经过了将近50年时间,在开放式的操作系统中拥有广泛的用户. 虽然由于其安全性的弊端,已经逐渐被淘汰,但是在许多AIX系统的服务器上,运维人员都习惯使用Telnet作为自己的主要工具,维护服务器系统.TFS系统作为应用软件生命周期管理(ALM)平台的产品,原生提供SSH工具连接Linux系统,可惜没有提供Telnet的工具,这里我介绍如何使用Ant中的T