干货丨玩转 AWS 的必备工具


(haoyushui) #1

尽管 AWS 平台已经已经为用户提供了非常完整和高质量的工具集,但在实际应用中有的工具还不是特别便捷或者能满足用户的需要,因此,围绕整个AWS 平台,用户以及很多专门开发 AWS 工具的公司推出了不少和 AWS 标准工具互为补充的第三方开发工具。这些工具集中在系统部署管理自动化、系统架构自动生成管理工具、以及系统资源监控工具等AWS 技术栈的底层服务。

系统部署管理自动化工具

通常我们在 AWS 上创建了一个服务器集群,则很有可能我们要对这些这个集群的所有服务器进行统一的操作,比如安装一个软件包,启动某个服务,部署某个文件等等。假如我们如果只有一台服务器,那整个过程很简单,直接通过 ssh 登录到服务器,并手动执行一系列的命令即可。但如果操作的对象是成百上千的服务器的时候,我们就需要一个能实现集群操作 (collective operation) 的工具了。目前这样的工具不少,包括 Ansible、Chef、Fabric、Puppet、Saltstack,本文重点介绍 Ansible 和 SaltStack。

AnsibleAnsible is Simple IT Automation

Ansible 的配置简单,不需要在远程 instances 上预先特别的软件,只需要能通过 ssh 登录和Python就行。其工作原理也不复杂,Ansible 首先通过 ssh 将 Ansible 的可执行文件复制到目标 isntances 上并执行,然后通过 ssh 链接在远程主机上调用 Ansible 可执行文件。Ansible 使用YAML作为配置模板语法。

笔者在读博期间曾经参与过一个非常类似 Ansible 的集群管理软件项目 GXP Cluster Shell。GXP 比 Ansible 大概早了五年。通过 GXP 不仅可以实现类似 Ansible 的集群管理,同时也包含了一个基于 make 的 Map-Reduce 处理架构和一个轻量的分布式文件系统。笔者至今仍然还在使用 GXP 进行日常的管理和大规模数据处理操作等等,有兴趣的读者可以到 GXP 主页查看:qnu/gxp

SaltStackSaltStack automation for CloudOps, ITOps & DevOps at scale

SaltStack 也是基于 Python 的一种系统部署管理软件。和 Ansible 类似,SaltStack 也是通过 ssh 和服务上的 SaltStack 进程 (minions) 通信并通过 YAML 描述配置文件。但是不同于 Ansible,SaltStack 采用的是主从式的多级体系结构,因此需要在服务器端预先安装一个 SaltStack minion 软件包。

系统架构自动生成管理工具

PackerPacker by HashiCorp

尽管 AWS AMI Marketplace 提供了可以直接使用的各种操作系统镜像,但是很多情况下,这些通用的系统镜像 AMI 并不能完全满足用户的需求,比如现有的系统镜像的缺少某个内核模块,或者默认的镜像缺少一些需要的包管理系统,或是缺少用户自己的一些工具。如果我们每次都使用标准的 AMI 来创建资源,则这些资源每次都必须经过一个繁琐的配置过程才能达到用户的要求,这样不仅增加了资源创建的启动时间,也增加了很多额外不必要的费用开销。

通常在 AWS 上创建用户定制的 AMI 的过程比较繁琐,用户首先使用一个基本的 AMI 启动一个EC2 Instance 然后登录到该 Instance 对该资源进行一系列的手动配置,然后再用 AWS 的创建镜像工具生成一个定制的AMI。这样手动创建的 AMI 过程通常耗时耗力不容易配置,而且非常容易出错。所以我们需要一个工具来自动化整个创建 AMI 的过程,同时描述创建 AMI 的代码可以存储并且通过再配置复用,来极大地简化和管理 AMI 创建的过程。

Packer 就是这样一个自动化创建 AMI 的工具。如下图所示,Packer 通过 JSON 文件模板来描述一个创建 AMI 的过程,如何配置 AMI 都由代码描述。用户只需通过修改这个描述文件来然后执行一个简单的命令来自动生成定制的 AMI。这样定制 AMI 的过程则可以直接进入版本管理系统,方便用户查询和追踪定制过程的变化。

本次 AWS Data Processing Infrastructure 课程中将会通过实例介绍如果通过 Packer 创建一个 AMI。

![](data:image/svg+xml;utf8,)

TerraformTerraform by HashiCorp

和 Packer 一样,Terraform 也是由 HashCorp 公司提供的一个架构管理自动化工具。Terraform 是 Infrastructure as Code 的一个实现,通过自定义的一种形式化语言来模块化地描述各个服务组件和由这些组件构成的整个架构。这样用户便可以通过管理代码的方式来描述、追踪对架构的修改。然后通过 Terraform 命令来便利地创建或者是解构服务。Terraform 支持 AWS, Google Cloud Platform, Microsoft Azure, OpenStack 等多种平台,因此一个架构只需要编写一次,稍作修改,则可以在不同的平台上运行。

如下图的代码则显示了如何创建一个由4台服务器组成的Elastic Load Balancer。

![](data:image/svg+xml;utf8,)

Troposphere & awacscloudtools

Troposphere 和 awacs 是两个帮助用户通过代码生成 CloudFormation 和 Policy 模板的 Python 工具,因为现有的 AWS 管理界面和命令行工具在通过 CloudFormation 创建架构时都需要一个预先编辑好的 JSON 描述文件。写过 JSON 的朋友都知道,即使有很好的编辑器,JSON 文件写起来都非常容易出错。但是也有的用户更偏好直接编写 JSON 代码,仁者见仁。

系统资源监控工具

DataDogModern monitoring & analytics

DataDog 是一个云平台性能分析工具,可以非常容易地整合到众多平台上。DataDog 整合数据的方式也很直接:运行的应用通过一个 StatD 协议将采集的的数据点经有 UDP 发送到一个名为 DataDogD 的数据收集和整合进程,该进程将性能指标数据更具用户定制的需要筛选和整个数据,并最后通过 HTTPS 发送到前端可视化的 Dashboard 供用户查阅。通常 DataDog 采集的数据包括基本的性能数据,如CPU使有率,内存使用率,磁盘使用率,网络流量等等。然后 DataDog 最大的优势即灵活性在于用户可以根据自己的需要自定义数据:比如前端服务器的请求响应时间,文件系统或是数据库中读写次数,每个服务失败的次数和类型,AWS S3 Bucket 中存储的数据大小等等。

![](data:image/svg+xml;utf8,)

Netflix ICENetflix/ice

众所周知,Netflix 是 AWS 的最大客户之一,每个季度 Netflix 通过 AWS 向全球60个国家的5000万用户提供70亿小时的视频服务。这同时也意味着 Netflix 在 AWS 上花费的开销是巨大的。为了精确地实时把握使用 AWS 各个服务的开销,Netflix 开发了一套名为 ICE 的 AWS 使用量和成本监控的开源工具。和 AWS 提供的 CloudWatch 不同,ICE 侧重于从一个顶层管理者的角度对一个企业组织内部的众多团队使用 AWS 资源的状况和开销进行细粒度的分析和把握,以实现资源分配最优化的目的。

作为一个云平台的管理员,经常需要问这样的问题:某个 AWS 在某个环境下,运行了多长时间?花了多少钱?这个服务是又哪个开发小组负责的?这个服务是属于哪个应用?在开销当中,各种服务分别花了多少钱?比如 EC2 计算资源花了多少钱?S3 存储花了多少钱?各种服务的使用的趋势如何?通过 ICE(用户界面如下图所示)则非常容易通过可视化的数据回答上面的问题。

![](data:image/svg+xml;utf8,)

PageDutyPagerDuty | The Incident Resolution Platform

PagerDuty 并不是一个真正意义上的系统监控工具,其主要功能是能在监控系统触发预先设定警报时像系统管理员发送通知的服务,包括屏显、电话呼叫、短信通知、电邮通知等各级通知。PageDuty 还提供了一个便于管理和协调的值班系统,方便各个系统管理员协调安排各自的值班时间。

本文作者:DUN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

------------------------这里是分割线----------------------

本周AWS相关讲座:一小时带你深度揭秘云计算霸主AWS

  • 美西时间1月13日19:00PM

  • 美东时间1月13日22:00PM

  • 北京时间1月14日11:00PM

免费报名链接:Welcome! You are invited to join a webinar: 【太阁直播】揭秘云计算霸主AWS. After registering, you will receive a confirmation email about joining the event.

下周AWS相关公开课:设计实现12亿纽约出租车行驶数据AWS处理平台

  • 美西时间1月20日 07pm

  • 美东时间1月20日 10pm

  • 北京时间1月21日 11am

免费报名链接:Welcome! You are invited to join a webinar: CS211 AWS Data Processing Infrastructure免费第一节课. After registering, you will receive a confirmation email about joining the event.