天天看點

AWS EC2 總結和實驗

Elastic Computing Cloud

其實本質就是個虛拟機。

虛拟機的資源劃分就和我們普通的伺服器沒啥差別。計算,存儲,記憶體。是以AWS在提供EC2服務的時候也是這麼劃分的。當然因為業務的需求,現在細分了不少。

英語名稱為instance type:

AWS EC2 總結和實驗
一個compute optimized 的instance type的參數
AWS EC2 總結和實驗
當我們在launch一個EC2 intance的時候,需要選擇一個AMI(AWS Machine Image)。我個人了解這個類似虛拟機硬碟的一個指針,(當然同時包含了執行個體需要的作業系統,應用程式及其相關的模闆)。因為虛拟機的硬碟,記憶體等其實都是以檔案的形式存在的。是以隻要provision了一堆資源,當使用者發起一個EC2,隻要把預先弄好的指針指到相應的EBS 卷就可以了。
AWS EC2 總結和實驗
4種類型的AMI

  1. Published by AMI 免費的
  2. AMI Marketplace (這個是第三方釋出的,例如微軟會釋出一個打完更新檔的Windows 2016)
  3. Generated from Existing Instance 顧名思義
  4. Uploaded Virtual Services (可以用VMWare 的ova,vmdk檔案生産虛拟機,因為我們知道AWS是基于KVM開發的)

AWS預設以及建議使用密鑰對(Key Pair)的形式通路EC2執行個體,AWS将儲存public key,使用者負責儲存私private key。

安全組(Security Group)檢測資料包的端口、協定、源IP位址,類似一個stateful Firewall的作用。記住Security Group隻有allow,沒有deny

彈性IP(Elastic IP address):

An elastic IP address is an address unique on the Internet that you reserve independently and associate with an Amazon EC2 instance. 其實可以把它簡單的了解為公網位址。這個Elastic IP有個備份功能,即這台虛拟機挂了,接上來的虛拟機能繼續使用這個elastic ip,進而實作備援。

Because it can be transferred to a replacement instance in the event of an instance failure, it is a public address that can be shared externally without coupling clients to a particular instance.

在開啟EC2 instance的時候,有幾個feature在實際運維中也可以有所幫助。

  1. Bootstraping:實際上就是在開機的時候刷一段腳本,可以是Linux bash,也可以是Windows Powershell
  2. VM import/export 不僅可以從AMI導入。也可以将現有的EC2導出,然後放入on-prem的環境裡
  3. Instance meta data: http://169.254.169.254/latest/meta-data/ 會以json格式傳回大量的關于此EC2 instance的attributes

EC2的計費類型

On-Demand Instances 用多少付多少

Reserved Instances

和AWS簽一年或者三年的合同,可以獲得折扣。同時買斷這些運算資源

Spot Instances 競價執行個體,較為便宜,但同時使用者得到的資源也不穩定

Scheduled Reserved Instances

Dedicated Instances

Dedicated Hosts

重點是前三種

開始進入console 建立一個EC2

AWS EC2 總結和實驗

第一個EC2, 選擇AWS 的Linux,裡面預裝了AWS CLI,Ruby,Python

step 1 Choose AMI

step 2 選擇instance type

step 3 配置參數

AWS EC2 總結和實驗

這裡說一下placement group

When you launch a new EC2 instance, the EC2 service attempts to place the instance in such a way that all of your instances are spread out across underlying hardware to minimize correlated failures.

cluster:同一個AZ,一般使用在延時低的環境裡面。

AWS EC2 總結和實驗

同時,如果開啟了CloudWatch對這台EC2進行監控會有額外費用産生。

AWS EC2 總結和實驗

租戶啥的不用管。一般都用最便宜的。

step 4 Add storage 其實就是建立一個EBS volume

step 5 Add Tags

AWS EC2 總結和實驗

Step 6 Security Group

AWS EC2 總結和實驗

AWS竟然還能自動檢測我家的ip位址……

當review 完launch之後,生成一對秘鑰對。

記得這個秘鑰對需要用putty的generator重新load一下 變成ppk形式才能使用。然後Amazon Linux不是root user……是ec2-user...

成功進入

AWS EC2 總結和實驗

檢視metadata的方法 curl http://169.254.169.254/latest/meta-data/

AWS EC2 總結和實驗

建立完EC2之後,也要捎帶開一下這個dashboard

AWS EC2 總結和實驗

個人覺得比較重要的是Tag。Tag可以在業務層面打上表示,在day2 的運維中,很多其他的AWS服務也能調用。典型例子就是IAM。

在建立EC2的時候,需要挂載一個卷。通常卷我們會使用EBS。注意EBS,其實是差別于S3的一種存儲服務,也是可以存資料的,隻不過單價較貴,我們通常隻會用來給EC2的執行個體使用。

比較有趣的是,EBS是可以脫離EC2執行個體存在的,即你terminate一個EC2的時候,你是可以選擇是否保留這個EBS卷的。這個EBS卷,隻在本AZ裡面生效。這裡我搬運一句study 貴的上的原話:Each Amazon EBS volume is automatically replicated within its Availability Zone to protect you from component failure。

EBS備份的方式是做snapshot,這個snapshot可以儲存在S3上面,并且是incremental的。

如果要将EBS卷複制到不同的AZ,那就是将這個快照複制到另外一個AZ,然後根據這個snapshot生成一個卷。

EBS根據需求一般分為三類,magenetic,general purpose SSD, provisioned-IOPS-SSD。加個麼,肯定最後那個最貴啦。

總結一下:

  1. 備份的快照将會儲存在亞馬遜S3 (Simple Storage System)上
  2. EBS快照屬于ncremental backup,即隻會在更新過的資料上做備份
  3. 你可以在EC2執行個體運作的狀态下進行EBS的快照操作,但會給EC2的系統帶來一定延遲(CPU,記憶體使用率會變高)
  4. 最佳實踐是将EC2執行個體停止,然後将EBS從EC2上解除安裝下來,進行快照操作
  5. 你可以基于EBS Snapshot去建立一個新的EBS volume
  6. 加密的EBS volume創造的snapshot, 也是自動加密的

EC2/AMI/EBS/Snapshot的關系

如果想要将EC2從一個區域遷移到另外一個區域。唯一的方法就是如下:

  1. 從EC2中建立一個AMI
  2. 将此AMI複制到另一個region中,注意,雖然AMI 内容一樣,但是AMI的ID是不同的
  3. 通過這個AMI建立一個EC2執行個體
  4. 将此EC2挂載的EBS卷,備份成snapshot
  5. 将snapshot遷移到另外一個區域(其實這是S3的操作),轉換成一個EBS卷
  6. 将這個volume挂載到我們之前建立的EC2上

同一個AZ就不用那麼麻煩了,直接建立一個你想要的用的EBS挂上去就行。

ELB/ALB/ASG

AWS的load balancer在功能性上較為簡單,隻是簡單的TCP,SSL。實際上就是F5的LTM的基礎功能。不過在一般的生産環境中也夠用了。load balancer本身也是managed service,是以不需要對太多的具體參數進行調優,也不需要考慮redundancy,打更新檔等,因為本來就是分布式架構

study guide上把load balancingf和auto scaling 單獨放在一章,配置界面裡面可以看到實際上內建在EC2 dashboard的。

AWS EC2 總結和實驗

一邊配置這個load balancer一邊講概念

AWS EC2 總結和實驗
AWS EC2 總結和實驗

Step 1: 基礎配置

Internet LB vs Internal LB

Internet 好了解,一般來說end user都是通過使用者名通路某些資源(通常是web server,是以這裡我選擇了ALB,listener 開啟https 443)

Internal LB 通常是放在web server通路application server之間。我放一段學習指南的原話:

An Internet-facing load balancer might receive and balance external traffic to the presentation or web tier whose Amazon EC2 instances then send its requests to a load balancer sitting in front of the application tier.

注意在基礎配置裡面,會讓你選擇AZ,可以看出AWS的load balancer就是分布式架構。

Step 2: 安全配置

AWS EC2 總結和實驗

這裡的證書,其實就是一個根證書,用來validate使用者通路的。取決于你是用internal 還是internet LB。

Step 3 Configuring Routing

AWS EC2 總結和實驗

選擇target group,實際上就是F5裡面的Pool,定義了一個業務/服務。

Step 4 Registering Targets

往Pool 裡面添加pool member。一般這時候Auto Scaling Group就派上用場了。

附上茶館的一張圖:

AWS EC2 總結和實驗

Auto Scaling:自動地增加/減少EC2執行個體的數量,進而讓你的應用程式一直能保持可用的狀态。

Auto Scaling Plans:(一看名字就一目了然,沒啥好說的)

  1. Manual Scaling
  2. Sceduled Scaling
  3. Dynamic Scaling

Auto Scling 的元件

  1. Launch Configuration

    其實就是一台EC2 一般需要的參數 (這個截圖就不放了,基本和建立一台EC2 沒設呢麼差別,就是少了些步驟)

    AMI, keypair,Instance type, Security Group,IAM Role(這些可以複用的參數)

  2. Auto Scaling Group

    Name, Launch Configuration, AZ, Desired Capacity, Maximum Capacity, Load Balancer

  3. Scaling policy

    指的是在何種情況下我們需要添加或者删減EC2 的執行個體。Auto Scaling Group還可以根據CloudWatch的警報在調整。

    AWS EC2 總結和實驗

放一張三個元件的關系。

AWS EC2 總結和實驗