乾貨丨玩轉 AWS 的必備工具

儘管 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。

TerraformTerraform by HashiCorp

和 Packer 一樣,Terraform 也是由 HashCorp 公司提供的一個架構管理自動化工具。Terraform 是 Infrastructure as Code 的一個實現,通過自定義的一種形式化語言來模塊化地描述各個服務組件和由這些組件構成的整個架構。這樣用戶便可以通過管理代碼的方式來描述、追蹤對架構的修改。然後通過 Terraform 命令來便利地創建或者是解構服務。Terraform 支持 AWS, Google Cloud Platform, Microsoft Azure, OpenStack 等多種平台,因此一個架構只需要編寫一次,稍作修改,則可以在不同的平台上運行。

如下圖的代碼則顯示了如何創建一個由4台伺服器組成的Elastic Load Balancer。

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 中存儲的數據大小等等。

Netflix ICENetflix/ice

眾所周知,Netflix 是 AWS 的最大客戶之一,每個季度 Netflix 通過 AWS 向全球60個國家的5000萬用戶提供70億小時的視頻服務。這同時也意味著 Netflix 在 AWS 上花費的開銷是巨大的。為了精確地實時把握使用 AWS 各個服務的開銷,Netflix 開發了一套名為 ICE 的 AWS 使用量和成本監控的開源工具。和 AWS 提供的 CloudWatch 不同,ICE 側重於從一個頂層管理者的角度對一個企業組織內部的眾多團隊使用 AWS 資源的狀況和開銷進行細粒度的分析和把握,以實現資源分配最優化的目的。

作為一個雲平台的管理員,經常需要問這樣的問題:某個 AWS 在某個環境下,運行了多長時間?花了多少錢?這個服務是又哪個開發小組負責的?這個服務是屬於哪個應用?在開銷當中,各種服務分別花了多少錢?比如 EC2 計算資源花了多少錢?S3 存儲花了多少錢?各種服務的使用的趨勢如何?通過 ICE(用戶界面如下圖所示)則非常容易通過可視化的數據回答上面的問題。

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.

推薦閱讀:

如何卡片創作之西蒙篇
如何評價「奪命U盤USB Killer」?
一些電影中計算機為什麼要擁有統治地球的權力?

TAG:AmazonWebServicesAWS | 工具 | 计算机 |