一分钟自动化部署笔记
部署的发展历程
问题一:传统手工部署带来的挑战代码上传及部署方式:
手工scp上传代码,开发发送压缩包,手工rz上传,解压部署代码。
缺点∶
全程人员参与,浪费大量时间。
如果节点多,时间就成倍增长。
人为干预,可能导致人为失误多。
无自动化回滚,或者难以回退
问题二:大规模集群部署带来的挑战
物理硬件上架
系统安装
系统环境设置
开发工具
对策一:自动化
基础设施即代码
开源自动化工具
实现一定功能的子系统,解耦,拼接
对策二:DevCloud平台
八个功能:项目管理 代码托管 代码检查 编译构建 测试 部署 发布 流水线
优点:
即开即用,简单高效、大规模云端并发、上下文协作、和华为云紧密集成、一键式部署
快速迭代,快速交付、线上线下协同开发、端到端工具链
华为云适用于
开发 测试 类生产 生产
自动化部署:部署过程的每一个步骤都自动化,可以带来包括效能在内的显著的好处。
保证了部署的质量,实现了标准化,就降低了系统维护的工作量。
自动化部署的目标
1. 一键式部署:尽可能的自动化所有部署过程,包括基础设施的创建和部署。
2. 多环境支撑:能够适应于开发、测试和生产环境。
3. 无服务中断:能够无缝的进行服务升级、切换。
4. 支持回滚:可以很容易的回滚到前面的版本以处理意外问题。
5. 支持私有云和公有云:不仅要支持自身部署,还要作为服务部署在私有云和公有云上提供部署能力。
6. 支持跨网和跨区域部署:要支持跨VPC和多区域部署。
发布是针对业务的,部署是针对环境的。
部署可以频繁、安全、可持续的进行。
部署的版本来自于构建库。
使用相同的脚步、相同的部署方式对所有环境进行部署,确保一致性。
为了确保安全性和可用性、可以采用蓝绿部署、灰度发布等能力。
蓝绿部署
一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。蓝绿部署原理上很简单,就是通过冗余来解决问题。
需要准备两个相同的环境(基础架构)
1. 平时在蓝、绿环境通过负载均衡运行业务。
2. 升级前把负载切到绿环境。
3. 升级时在蓝环境中部署新版本,并进行测试。
4. 测试完成,把负载切回蓝环境,然后升级绿环境。
5. 绿环境升级测试完成后,系统恢复蓝绿环境共同承担负载。
问题
考虑数据库与应用部署同步迁移/回滚的问题。
需要妥当处理未完成的业务和新的业务。
灰度发布/金丝雀部署
灰度发布是在原有版本可用的情况下,同时部署一个新版本/金丝雀,测试新版本的性能和表现,以保障整体系统稳定的情况下,尽早发现、调整问题。
步骤
1. 准备好工件,包括:构建工件,测试脚本,配置文件和部署清单文件。
2. 从负载均衡列表中移除掉“金丝雀”服务器。
3. 升级“金丝雀”应用(排掉原有流量并进行部署)。对应用进行自动化测试。
4. 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。
5. 如果“金丝雀”在线使用测试成功,升级剩余的其他服务器(否则就回滚)。
部署服务概述
部署服务(CloudDeploy)提供可视化、一键式部署服务,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化。
部署服务具有以下特性:
部署任务由原子步骤自由组装编排,免去写脚本实现部署过程,降低门槛。
提供20+原子步骤,支持多种主流部署场景
提供系统模板Tomcat应用模板、Springboot应用模板、CCE模板等快速创建部署任务。
部署过程,每个原子步骤独立输出清晰日志,部署失败能够快速解决失败的原因
拓展性强,支持用户自定义开发插件方式接入部署任务。
部署任务支持自定义参数,可以在执行部署任务时进行动态修改值。
支持无缝集成流水线。
部署服务功能模块
华为云软件开发服务提供一键式自动化部署,部署机器无需安装代理,过程可视化,主持主流编程语言和技术框架,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化。
DevCloud中部署服务的优势
一键式部署主流应用
支持Java、PHP、NodeJS、Python、Go和Tomcat应用
6. 支持并行部署
7. 和流水线无缝集成
8. 目标机器无需安装Agent
9. 部署操作可以多次高效执行
部署服务应用场景
简单Web应用和微服务部署
应用:用户需要开发简单Web应用或者微服务,并使用软件开发云编译构建和部署。适用场景:适用于Web应用程序和微服务的部署,支持Tomcat、Java、Python、
NodeJs、Go、PHP、Ruby语言。
大型应用软件和网站部署
应用:大型应用软件网站有很多的组件或微服务组合协调,需要软件开发云进行部署。。适用场景︰支持Linux下多服务、多组件、多层次的大型应用,用户需要自定义部署模板,定制适合自己应用的部署脚本和部署参数,并应用流水线编排各个组件的统一部署,实现全系统的自动化部署。
部署使用流程
添加授信机器:主机名称、主机IP、用户名、口令
创建部署任务:任务名称、描述信息
选择部署步骤:部署步骤名称、部署需要的配置信息
Tomcat:先停止、安装JDK、安装tomcat、选择部署文件来源、启动
弹性云服务器ECS
弹性云服务器是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算服务器,同时它结合VPC、虚拟防火墙、数据多副本保存等能力,帮助用户打造一个高效、可靠、安全的计算环境,确保服务持久稳定运行。
主机部署管理
主机是部署目标机器,要将应用部署到该机器,需要先取得该机器的授信,主机要加到某个项目中,并且需要加到主机组里。
弹性IP
主机名
用户名
密码
云容器引擎CCE
云容器引擎(Cloud Container Engine)提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建。·用户可以通过CCE实现应用的一站式部署和运维、可定制的DevOps持续交付、灵活
的弹性伸缩等功能。
容器部署架构
http://support.huaweicloud.com/devcloud/1492767785690.html
http://www.huaweicloud.com/devcloud/ ,
1.以下哪项不是传统部署的缺点
全程人员参与,浪费大量时间
如果节点多,上线速度慢
回滚不及时,或者难以回退
脚本写错导致业务出错
2.以下对于蓝绿部署的描述错误的选项是
蓝绿部署的目的是减少发布过程中服务停止时间
蓝绿部署要准备两套相同的环境
蓝绿部署是新老版本同时在线提供服务
蓝绿部署中需要考虑数据库与应用部署同步迁移/回滚问题
1.以下哪些是开源部署工具的选型因素
大规模的并发能力
是否需要编写playbook
第三方工具的丰富程度
二次开发扩展的能力
2.以下哪些是自动化部署的目标
脚本管理
一键式部署
支持回滚
支持跨网和跨区域部署
3.以下哪些不属于DevCloud平台的功能
项目管理
容器集群管理
部署
中间件管理
自动化部署工具
随着服务器集群规模越来越大,自动化配置和部署这些服务器能够使管理变得非常容易并大大减小管理部署成本,因而得到IT公司的高度重视。
目前,市场上主流的四大开源自动化配置管理工具有: Puppet、Chef、Ansible、SaltStack。
开源部署工具对比
主要选型因素
1. 是否需要每台机器部署agent(客户端)
2. 学习的门槛
3. 大规模并发的能力
4. 第三方工具的丰富程度
5. 二次开发扩展的能力
6. 现有用户使用的规模
7. 开源社区的对接
Ansible -轻量级的自动化部署工具
Ansible是新出现的运维工具,它是基于Python研发的,糅合了众多老牌运维工具的优点,实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。
Ansible是基于模块工作的Ansible本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。
简单
类自然语言的自动化脚本、不需要编程技巧、按顺序执行任务、快速获得生产力
强大
应用部署、配置管理、工作流编排、应用生命周期编排
无需代理
架构上无需代理、使用OpenSSH和WinRM、无需开发代理和升级代理、更加安全有效
Ansible的架构
Ansible:核心模块
Connection plugins : Ansible基于连接插件连接到各个主机上,ansible默认使用ssh连接到各个主机,但是也支持其它连接方式
Host inventory:定义可管控的主机列表
Playbooks:按照所设定编排的顺序执行完成安排任务
Core Modules:自带模块
Custom Modules:自定义模块
Plugins:完成模块功能的补充
Playbook的介绍
Playbook采用一种可读性很高的且容易被人类阅读的语法的YAML语法编写。
该语言在被开发时,YAML的意思其实是:“Yet Another Markup Language”(仍是一种置标语言),格式如下:
优势:可读性好、易于实现、和脚本语言的交互性好、每个步骤都配有名称,方便查看结果、脚本模块化、配置灵活
Playbook的编写
1. 创建目录
2. 编写“deploy. json”文件
3. 编写“install.yml”文件
4. 编写“roles/tomcat/tasks/main. yml”文件
5. 编写“group_vars/all”文件
6. 打包上传Playbook
Playbook的执行
Playbook - install.yml文件
定义角色,playbook入口
指定主机
全playbook以root执行
执行setup,获取远程主机信息
Play集
Ansible在DevCloud自动化部署架构中的地位
执行引擎
- 点赞
- 收藏
- 关注作者
评论(0)