更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud
在2017在线技术分会——运维/DevOps在线技术峰会上,来自阿里云的李珊分享了使用开源DevOps工具在云上完成自动化运维的实践。首先,她通过对五个应用场景的分析,介绍了“自动化可以自动化一切”的概念。然后,介绍了使用Terraform和Packer开源工具在云上实现自动化运维的具体实现过程。最后分享多工具组合的案例。
以下内容根据现场视频整理。
云计算的特点是开箱即用的能力,可以随时扩展和收缩,不考虑硬件损坏,有丰富的云平台和云产品可供选择。
应用场景分析应用1
在应用1中,为了提高吞吐量,进行了流量平衡、扩展并发和缩短延迟,并选择了在一个SLB基础架构上组合两个ECS。要实现上述架构,需要以下八个步骤来完成基础架构的构建:创建ECS、创建安全组、添加安全组规则、创建SLB、添加后端服务器、配置监听端口、配置会话持久化、添加健康检查。
2应用
应用2的特点是需要与网络隔离,其整个应用架构需要建立在VPC网络中。同时需要外部网络接入,部分应用也提供外部服务。所以整个架构就是VPC下面有两个子网,通过NAT网关和共享带宽包提供外部请求,然后通过负载均衡提供网络接入能力。实现上述架构有七个步骤:创建VPC、创建VSWITCH、创建NAT网关、创建新的共享带宽包、创建ECS、创建SLB、创建SNAT、挂载SLB。
应用程序3
应用程序3与应用程序2具有相同的基础架构要求。这时候就需要按照固定的流程手动重复工作。由于人员流动和文档不完整,接手的人需要几天时间来熟悉环境和各种配置。
应用程序4
随着应用的增加,ECS和SLB等资源也在增加。我们希望通过“标签”来区分哪些资源属于哪些应用,并根据应用对资源进行分组。此时,我们需要找到资源和应用的对应关系,然后给每个资源贴上标签。
应用程序5
2应用在市场上很受欢迎,流量飙升。需要增加ECS来承载更多的并发和流量。有必要扩展一个与在线应用程序一致的ECS,并将其安装在SLB上。此时,需要四个步骤来完成上述任务:为应用的ECS创建快照,生成镜像,基于此镜像创建ECS,并将其添加到SLB。
通过上面的场景分析,我们发现操作过程是有序的,配置是固定的。如果全靠人工操作,效率低,耗时长,还可能出错。变更无法回滚,流程没有历史记录,流程无法审计(不知道谁做了什么样的操作)。解决上述问题的方法是自动化。
把能自动化的都自动化。
图中有三条主线。第一种是使用Packer生成图像,自动存储在图像列表中,使用Terraform自动创建更新或破坏这些基础设施。在创建ECS时,可以选择Packer创建的映像ID,在运行时,可以使用Ansible来管理这些基本设置或管理ECS上的应用程序。
IaC对场景5的思考
场景5的需求是扩展一个与在线应用一致的ECS。具体操作流程是使用Packer创建镜像,将提供服务的应用打成镜像,使用Terraform创建ECS等资源,创建ECS时选择Packer键入的ID。更改时只需要修改Terraform的模板,在ECS变量的参数上加1即可。
Terraform/Packer简介
他们属于哈希公司家族。它们有两个特点:多平台支持和开源。
将(行星)地球化(以适合人类居住)
Terraform是inst
上图是Terraform的一个模板,最重要的是resource,后面是两个字符串(资源的名称是固定的,别名可以自定义)。在安全组规则中,alicloud_security_group_role是固定的,您可以定义安全组的传出和传入规则、端口、规则所作用的安全组以及指定的网段。对于ECS实例,您可以指定名称、镜像ID、实例类型、创建数量(计数)、ECS安全组、收费类型、带宽、IO优化、公共IP分配、可用区域、实例的收费类型、系统盘类型等。SLB还可以指定名称、费用类型等。SLB山定义了SLB的主要参数和实例。
Terraform最重要的三个命令是计划、应用和破坏。plan命令将会看到所有的参数值,以及执行后要创建哪些资源。如果没有问题,执行apply来实际创建这些资源,可以通过destroy销毁这些资源。
上图显示了VPC集群的资源拓扑图。自下而上有VPC和VSWITCH,安全组规则作用于安全组。在VSWITCH下有两个实例,即带有别名worker的ECS实例和带有别名master的ECS实例。Eip绑定到具有别名主服务器的实例,自定义路由的下一跳指定具有别名主服务器的实例。
包装工人
Packer的主要思想是通过模板定义一些内容,然后创建镜像。在此过程中,Packer支持基于创建阿里云基础映像创建映像和基于自定义映像创建映像,并将根据模板定义自动创建经典网络的ECS或VPC网络的ECS。在ECS上安装相关的应用程序,拍摄ECS的快照,并根据快照生成镜像。创建镜像后,在此过程中创建的资源将被释放。最后可以做进一步的操作,比如弹性扩展,共享镜像,复制镜像。
上图是Packer的典型模板,最重要的是建设者和置备者。构建的类型决定了镜像的用途,资源调配器定义了镜像要完成的任务。
多工具组合案例案例1
您可以使用Packer制作图像,生成图像ID,然后使用Terraform的模板指定图像ID并创建ECS。该ECS与要提供的服务一起提供。这种方案的优点是可以一次性制作和重用,省去了每次创建机器和安装服务的重复过程。
2起案件
Packer可用于镜像应用程序,ESS可用于扩展和收缩。Terraform可用于创建弹性膨胀和收缩的ESS模板。很多用户在弹性伸缩过程中比较麻烦的一点是,一开始ECS使用的镜像是基础镜像(只有一个操作系统的镜像),所以弹出的机器是一个无法提供服务的实例。结合封隔器可以解决这个问题。
3起案件
将Terraform与Ansible结合。Terraform执行后会在本地生成一个tfstate文件,开源插件Terraform Inventory可以通过tfstate生成Ansible Inventory(用于分组机器)。Ansible可以通过读取库存文件来管理配置或将配置应用于指定的分组。
之前的想法可以总结为一句话:自动化可以让一切自动化。其优点是:用代码来描述基础设施的创建、变更和破坏;代码写得不错,验证无误。之后每次执行任务都不会出错。非常快速高效;代码代替文档,有历史记录,可以回滚,不用担心文档更新不及时或者人员流动带来的“黑箱”问题;不用访问生产环境就可以知道生产环境中的配置;提高整个团队的DevOps能力。
Referenc