第1页
脚踏实地,仰望星空—运维可以不那么伤
2015-04 黄河
微信:h2ofly 微博:黄河H2O
第2页
Sections
«devops理念 «c mdb «持 续集成 «发 布
第3页
桑感的运维是怎样的?
搬机器
人肉运维 背黑锅的
第4页
实地,星空
«实地
þ 日常运维:繁杂系统,支持故障频发的系统:运维维度各种优化+架构开 发维度优化
þ 各个运维模块,平台建设 。。。
«星 空
þ 系统可用率99.99% þ 自动化服务器生命周期管理、服务管控 þIAAS
þ 私有云 。。。
第5页
devops理念
«开 发、运维协作更加紧密
þ 尽量全程参与开发流程
– 运维了解应用系统的的体系结构、核心代码
þ 问题前置:
– 提出:配置、监控、安全、潜规则、规范,容量 – 推动:运维+开发层面系统优化 – 了解:开发的要求,部署、特殊要求等
«透 明
þ cmdb、puppet
«自动化
þ 项目启动、开发、测试、(预发布)、发布、运维流程对接和串联 þ 高效工具的提供
第6页
cmdb——基础
«配 置管理数据库
þ 机器信息 þ 应用信息 þ 机器生命周期管理:上线、使用(初始化、部署)、下线 þ Pool维护:自动化申请,下线归还
服务器上 架安装 +虚拟化
自动化入 库
空闲机器 自动化部 署运行
潜规则配 置透明化: puppet
第7页
cmdb
第8页
向前一步——持续集成
«当前面临问题
þ 手工合并代码工作量大 þ 手工合并耗时耗力 þ 多项目分支一起发布合并麻烦 þ 不断合并,不断部署 þ 上线后再合并入trunk þ 配置文件管理费力
第9页
持续集成流程
«设 计流程 «整个流程需要自动化
þ 合并:
– svn merge – 检测冲突
þ 编译:mvn þ 部署:tomcat封装脚本 þ 流程一键化 þ 下游接口对接
第10页
持续集成系统——jenkins
系统组成
合并
编译
部署
提交
撤回
合并
第11页
发布
«发布面临问题
þ 居然有增量发布? þ 上传代码,scp,rsync? þ 启动脚本不一致? þ 配置文件怎样管理,手工拷贝? þ 发布怎样做到灰度? þ 怎样确认应用发布ok与否? þ 发布不成功,回滚? þ 整个过程手工多,需要运维全程参与 þ 一不小心敲错了 þ 开发永远比运维多,怎样让他们自助,降低劳动量
第12页
发布平台
«发 布平台面临问题
þ 发布面临的问题+ þ 版本如何管理? þ 代码如何分发? þ 发布状态如何抽象流转? þ 发布怎样做到灰度?
第13页
发布平台
«发 布版本管理
þ 链接+上浮版本号 þ 配置文件和代码一起->zookeeper配置中心
«发 布发布状态抽象和流转
第14页
发布平台
«发布检查
þ 版本 þ 启动时长 þ 错误日志:容器+应用 þ 健康检查页面
– 应用启动完成,根据业务情况,反馈ok or error – GET /monitor.jsp
第15页
发布平台
系统模块组成
代码分 发
deploy check
Version DB
App DB
第16页
Sections
«devops理念
þ 紧密协作、透明、自动化
«c mdb
þ 基础:自动化服务器生命周期管理、IAAS
«持续集成
þ 向前一步,对接发布系统
«发布
þ 自动化部署,从重复的工作中解放