阿里云黎山:如何利用开源DevOps工具完成云上的自动运维

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 本文内容来源于黎山在阿里云栖社区-运维/DevOps在线技术峰会上的主题演讲,IT大咖说为视频合作方。

3fb33a97c46324cd04e0fc8cda8736ee15f5c454

编辑 IT大咖说字数:2916 用时:8分钟

本文内容来源于黎山阿里云栖社区-运维/DevOps在线技术峰会上的主题演讲,IT大咖说为视频合作方。

f8c63ad326c38401a15cbc25d2146b53076ef6d3

内容概况

云计算的特点是开箱即用,可以随时的扩缩容,不用考虑硬件的损坏问题,也有丰富的云服务和云平台供我们选择。在本次演讲中,黎山通过实际应用场景为我们讲述了基础设施及代码的重要性,以及在云计算的运维中,如何利用工具来实现自动化,提高效率。

大家好,今天我们围绕几个议题展开:

  • 通过实际的应用场景来讲解IaC的重要性。

  • Terraform、Packer的使用介绍。

  • 多个工具组合案例+操作演示。


0ae58336b222794aae6dee0556e509f5e042be6c


实际应用场景


应用场景解析一

某应用为了增大吞吐量,做了流量的均衡处理,在整个的基础设施架构中,选择了两台ECS挂在SOB的一个基础设施。如果要实现这样的一个架构,需要做以下8个步骤来完成这些基础设施的搭建:创建ECS、创建安全组、添加安全组规则、创建SOB、添加后端服务器、配置监听端口、配置会话保持、添加健康检查。要通过这八个步骤来完成两个ECS挂到SOB上面的基础设施搭建。


747b314e848163738665925a2f7ecdce76e4ff06


应用场景解析二

应用二的特点是需要做网络隔离,所以要把它整个的应用架构搭在VPC下面。它有对外访问网络的需求,同时也有应用对外提供服务。如果要实现这样一个基础设施的话,大的步骤是需要以下七步:创建为PC、创建VSWITCH、创建NET网关、新建共享带宽包、创建ECS、创建SLB、创建SNAT、最后挂载SLB。中间省略了若干个配置操作。


a7e4ec483a9854d070df27e38c41102e80b8425d


应用场景解析三

应用三与应用二是一样的基础设施要求,就要按照固定的流程再重新做一遍重复的这些操作。

234675f8bdaa601089996247f37471eca5665db3

应用场景解析四

随着应用的增加和业务的发展,我们的基础设施的资源也在增加。我们希望能够把应用和基础设施做一个分组,也就是通过打标签的方式,把哪些资源属于哪一个应用做分类。


7970a6af7397165334e4b75b702a8e4c8d0d61b9


应用场景解析五

随着业务的发展,应用二深受市场欢迎,流量也暴增。就需要增加ECS以承载更多的并发和访问量,所以需要扩容一台与线上应用一致的ECS挂载到SOB上面,这里的一个关键点是扩容一台与现上应用一致的ECS。


按照传统的操作方式,先将已经安装好应用的ECS打上快照,然后生成镜像,基于此镜象创建ECS,再添加到SLB当中,同样这里面省略了若干的配置步骤。


32f288fce34f7261e6d7c7ef9b3458a954aa84e5


场景总结:

通过以上几个场景可知,它们的特点就是,操作流程是有序可循的,并且配置是固定的。如果全部是手工操作的话,会带来以下缺点:效率低、时间长、可能导致错误、变更不能回滚、过程中没有历史记录、过程不能审计。


针对场景五的IaC思想。场景五的一个需求就是要扩展,扩容一台与线上应用一致的ECS。如果用IaC的思想,操作流程应该是利用Packer创建一个镜像,在打镜像的时候,把提供服务的应用打到镜像当中,然后用Terraform创建ECS以及其他资源。在创建ECS的时候,选择Packer打出来镜像ID。在变更的时候,我们只需要修改Terraform的模板,把ECS变量的参数加一,执行变更就可以了。就能够实现扩容一台与线上应用一致的ECS并且自动挂载到SLB下面。


35d001425f0cc21d423219c82d4abc34fc5b5073


Terraform 和 Packer 的介绍


它们来自于HashiCorp家族,有两大特点,第一是支持多平台,第二是开源。现在主流的云平台像阿里云、AWS、Azure等都已经支持了。另一个开源的好处是成熟、透明、可自增强。


d297c9f68bf1ca2ec3b2795df6624ecccb4652fb


Terraform最重要的一点就是模板,模板里面最重要的就是resource。resource是来描述资源,它后面有两个字串。第一个字符串是资源名称,这个名称是固定的;后面的一个串代表的是别名,别名可以自定义。我们就以这个模板为例来详细讲解一下,怎么通过模板去描述一个把资源的定义。


首先看一下安全组。安全组的规则可以定义出网或者入网规则,它的端口是多少,指定的规则作用在哪一个安全组上。也就是对security_group的一个引用,还可以指定它的网段。


对于ECS来讲可以指定instance的name,还有它的镜像ID和count。前面说如果应用于场景五,我们如果想扩容一台的话,我们就在count数加一,它就会自动创建一台ECS,可以指定这台ECS所依赖的安全组。SLB同样是指定它的name以及网络的收费类型,它是公网SLB还是私网SLB,还有对它监听的一些配置。


最后一个是SLB的挂载。这里定义了SLB和instance这两个主要的参数,也就是要把哪些instance挂载到SLB下面。


42ca935deeedd9924548067c6b8adb83d926125e


Terraform最重要的三个命令就是PLAN、APPLY和DESTROY。Terraform的意义是执行之后会看到资源的所有的参数值以及要创建哪些资源,如果确认没有问题的话,就执行APPLY去真正的创建这些资源,然后通过DESTROY做销毁。


6b4917e4dd9378b760f2d873b8d48035121cd427


我们通过一个实例的操作演示来看一下,创建一个VPC集群的。Terraform在运行时是怎样的状态。这个整个的基础架构是一个VPC集群,有一个子网,子网里面有一个ECS,有安全组、安全组规则,通过NET网关和共享带宽包来实现子网出网和入网的能力。


首先执行Terraform plan。我们要预览一下要创建哪些资源,一共有八个资源会被添加。确认没有问题的话,我们去执行Terraform apply,这个时候就会实际的创实际的创建这些资源。创建完成之后会返回带宽包的两个ip以及instance的ID。


1b9b4d44be5ecfbf1c8a35b5a5ec3804e5ad2784


Packer主要的思想也是通过模板来定义一些内容,然后创建镜像。Packer会通过模板自己来决定是基于阿里云的基础镜像创建还是基于自定义镜像创建,然后会自动创建一个经典网络的ECS或者是VPC网络的ECS,同时会根据模板的定义在ECS之上去添加这个去安装相关的应用,然后把ECS打一个快照,根据这个快照生成镜像。当镜像创建完成之后,会把它中间所用到的这些资源都释放掉,可以再做进一步的操作。


Packer模板最重要的就是两部分,一个是builders一个是provisioners。Builders的type来决定她创建的这个镜像是给哪里用的。Provisioners定义的就是镜像中要处理的任务。Packer的命令最主要的就是Packer build的一个指定目录的json。在执行完build之后会提示镜像创建完成并返回镜像ID。


36ce62f23619caa3d4cf49dc328ea064036d68eb


多个工具组合案例


用Packer制作镜像,制作镜像之后会生成镜像ID,然后用Terraform的模板镜像ID创建ECS,这个ECS就自带了所要提供的服务的应用。这个好处就是一次制作重复使用,免去每次创建机器来重复安装服务的过程。也可以用Packer把应用打在镜像当中,然后通过ESS去做伸缩。很多用户在做弹性伸缩的时候呢会遇到一个麻烦,就是在最初的时候,ECS所用到的镜像是只有一个操作系统的镜像,是没有服务的,创建出来之后不能够直接使用。如果结合Packer,Packer把这些应用打在镜像当中,然后用Terraform或其他工具,在用弹性伸缩的时候直接是基于已经安装好应用服务的镜像去做伸缩。另外一个工具就是把Terraform和Ansible结合,一起去实现这个组合。


a45c48592fb8631cf853e3de88fcb440d0f30219

53f584f749fd44a98642d9a7cc0a740092c15f9c

fa6b409ed8da0348a02f5814490bec7fe284da7f


自动化的实现路径共有三条主线。第一条线可以利用Packer去而生成镜像,自动的存储到自定义镜像列表当中,然后用Terraform创建更新或者销毁这些基础设施。在创建ECS的时候,我们可以选择Packer创建出来的那个镜像ID。在运行期我们可以使用Ansible去管理这些基础设施或是ECS上的应用。


b7223ead480afb4dd8479ea748b5b6286c079174


用代码描述基础设施的好处就是,代码编写好,验证也是正确的,之后每次执行任务都不会出错,并且快速高效。还可以用代码代替文档,并且也有历史记录,可回滚。不用担心文档更新不及时或者是人员流动带来的一些问题。而且不用通过访问生产环境就能够知道生产环境上的配置情况,也可以提高整个团队DevOps的能力。


今天的分享就到这,谢谢大家!


相关推荐

推荐文章

近期活动

9d6412fe41522e1c6e825097949ab68c0e5bff10

视频地址:http://www.itdks.com/dakashuo/detail/1247

目录
相关文章
|
3天前
|
人工智能 运维 Kubernetes
阿里云容器服务AI助手2.0 - 新一代容器智能运维能力
2024年11月,阿里云容器服务团队进一步深度融合现有运维可观测体系,在场景上覆盖了K8s用户的全生命周期,正式推出升级版AI助手2.0,旨在更好地为用户使用和运维K8S保驾护航。
|
15天前
|
运维 Prometheus 监控
🎉 WatchAlert - 开源多数据源告警引擎【运维研发必备能力】
WatchAlert 是一个开源的多数据源告警引擎,支持从 Prometheus、Elasticsearch、Kubernetes 等多种数据源获取监控数据,并根据预定义的告警规则触发告警。它具备多数据源支持、灵活的告警规则、多渠道告警通知、可扩展架构和高性能等核心特性,帮助团队更高效地监控和响应问题。项目地址:https://github.com/opsre/WatchAlert
🎉 WatchAlert - 开源多数据源告警引擎【运维研发必备能力】
|
6天前
|
弹性计算 运维 监控
云资源运维难?阿里云免费工具来帮忙
阿里云推出免费运维工具——云服务诊断,帮助用户提升对云资源的运维效率、降低门槛、减轻负担。其核心功能包括「健康状态」和「诊断」。通过「健康状态」可实时查看云资源是否正常;「诊断」功能则能快速排查网络、配置、安全等问题,并提供修复建议,助您迅速恢复业务。体验评测活动火热进行中,参与即有机会赢取索尼头戴耳机、小米背包等好礼。活动链接:https://developer.aliyun.com/topic/cloud-health。
151 9
|
29天前
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
30天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
2月前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。
|
2月前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
2月前
|
运维 监控 安全
自动化运维的魔法:打造高效DevOps工作流
在软件交付的快车道上,DevOps如同赛车手,而自动化运维则是那辆高性能赛车。本文将揭示如何通过自动化工具和最佳实践,构建一个高效、可靠的DevOps工作流,确保软件交付过程既快速又安全。我们将一起探索从代码提交到部署的每个关键步骤,并展示如何通过实际案例简化这一旅程。
|
2月前
|
存储 运维 关系型数据库
开源新发布|PolarDB-X v2.4.1 增强企业级运维能力
PolarDB-X 是阿里云推出的云原生分布式数据库,自2021年10月开源以来,持续迭代升级,至2024年4月发布的v2.4.1版本,重点增强了企业级运维能力,如无锁变更、物理扩缩容、数据TTL等,提供金融级高可用、透明分布式、HTAP一体化等特性。PolarDB-X 支持集中式和分布式一体化形态,兼容MySQL生态,适用于金融、通信、政务等行业。
|
3月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
70 4

热门文章

最新文章