Try   HackMD

AWS EC2 運算資源 (觀念講解篇)

tags: 概論介紹

EC2 重點架構

EC2 Instance (EC2 虛擬機) 由許多重要元件組成,我們分成三大部分介紹。

◆ AMI

在一個 EC2 Instance 裡,有一個重要元件叫做 AMI (Amazon Machine Image)

什麼是 AMI:

  • 最主要的功用為決定我們的 OS (Operating System) 作業系統
  • AMI 如同一個模板,當每次在建立 EC2 Instance 時,就要選擇使用何種 AMI。
  • 包含許多細部設定,之後會再來討論,這裡先用 TBD (To Be Defined) 標記起來。

◆ Instance Metadata

當我們啟動一台 Instance 時,會有一些 Instance 層面的資料,裡面包含:Instance ID、Hostname 等。

◆ Instance Type

在 Instance Type 中,我們會去決定 Instance 本身要使用多少資源,包含我們要使用 vCPU、記憶體、儲存空間的多寡。

Instance Storage 是一個本地的儲存空間,會隨著 EC2 Instance 的更動而改變。

換句話說,若 EC2 Instance 消失,Instance Storage 就會不見,因此不適合放置永久資訊。

不過 Instance Storage 的好處是:

  • 它就在 EC2 Instance 上,所以能讓我們進行非常高效率的 I/O 工作。

  • 可以決定 Network speed,Network speed 能決定 EC2 Instance 能負荷多少網路流量。

EC2 中還有許多細部設定,一樣先標 TBD。

◆ EC2 連接的子服務

當我們在 AWS Consol 建立一台 EC2 時,我們會連接許多子服務。

  • Network 網路
    我們會配給 EC2 一個或多個虛擬網卡 (ENI),而 EC2 Instance 在 AWS 網路架構中的角色是由 ENI 來決定。

    如下圖,我們必須看 ENI 在哪個 SG (Security Group) 、哪個 Subnet,以及被哪個 NACL 所管控。

    NACL 及 SC 相關介紹

  • Permission 權限
    在 AWS 中,管理權限有個重要元件 IAM Role

    IAM Role 並不能直接被 EC2 Instance 給使用,因此需要一個銜接角色來串接,也就是 Instance Profile,如下圖:

    Instance Profile 會將 IAM Role 轉換為 EC2 Instance 可以使用的形式,來管控 EC2 Instance 可以使用哪種權限及 AWS 服務。

  • External Storage
    External Storage 是一個外接的儲存空間。

    服務名稱叫做 EBS Volume (Elastic Block Storage Volume)

    有別於 Instance Storage,EBS Volume 並不會隨者 EC2 Instance 的消失而不見,因此適合放置永久資料。

小結

EC2 主體實際上只有下圖紅框圈起來的部分,右側都是可以連結的子系統們。

EC2 必須透過與這些服務的連結才能建出一個完整的虛擬機功能。


EC2 儲存資源 Instance Store vs Elastic Block Storage (EBS)

◆ EC2 Instance 與 EBS Volume 的關係介紹

在 EC2 Instance 中,有個 Instance Storage,他們會在同一個 Host 主機上。

我們可以透過網路連結到另外的外部硬碟空間 EBS Volume (Elastic Block Storage)。

EC2 Instance 與 EBS Volume 會在同一個 AZ 中,如下圖:

EBS Volume 可以備份,而 AWS 提供的備份功能叫做 EBS Snapshot

EBS Snapshot 有個特點,它會進行漸進式的備份 (backup),也就是說,已備份的部分不會重複備份,只會針對新的部分備份,這種漸進式的方法稱作 Incremental

另外, EBS Snapshot 會與 EC2 Instance 在同一個 Region 中。

EC2 Instance、EBS Volume、EBS Snapshot 三者的關係如下圖:

◆ EBS 與 Instance Storage 的優缺點比較

  • Instance Storage

    • 優點:

      • High I/O
        由於 Instance Storage 跟 EC2 Instance 在同一個 Host 中,因此具有很好的 I/O 處理能力。
    • 缺點:

      • Ephemeral,短暫存在
        當 EC2 Instance 被刪除時,Instance Storage 的資料也會全部消失。
      • No Backup
        當主機儲存硬碟故障時,資料因為沒有備份,所以也會跟著消失。
        換句話說,它的耐久性非常低,不適合存放長久資料。
  • EBS

    • 優點

      • Persistent
        EBS Volume 的生命週期與 EC2 的出現消失無關,即使 EC2 被砍掉,EBS Volume 的資料也不會消失
      • Backup
        當創造 EBS Volume 時,在背後的 AZ 中,AWS 會幫忙建立多台儲存設備,簡稱 Nodes,來組成 EBS Volume,就算一個硬碟故障,資料仍完整保存,提供較高的耐久性。
        另外,還有 EBS Snapshot 來保護資料,就算 AZ 所有資料中心都無法使用,資料仍會保存在同一個 Region 下的 EBS Snapshot。
    • 缺點

      • Lower I/O
        由於 EBS 和 EC2 之間連通內部網路會造成時間消耗,因此 I/O 處理能力較低

Instance Storage 與 EBS 優缺點比較圖:

小結

相較於 Instance Storage,更常使用 EBS 儲存,因為 EBS 提供較高的 Durability。

雖然 EBS 存在 lower I/O 的問題,但 AWS 提供我們許多不同的 EBS Type 來解決這個問題,之後會再詳細說明。

EC2 儲存資源 EBS Types 方案比較

AWS 提供以下四種 EBS Types,讓我們根據 I/O 需求來做選擇,改善 lower I/O 的問題:

  1. io1
  2. gp2
  3. st1
  4. sc1

◆ SSD 與 HDD 與四種 EBS Types

  • SSD 下含有 io1 與 gp2 兩種類別
  • HDD 下含有 st1 與 sc1 兩種類別

各類別的數據比較:

  • Max Storage:最大容量都是 16TB
  • I/O:Input / Output 的簡寫,用來評量檔案讀寫的速度效能
  • IOPS:I/O Per Second,每秒可處理的 I/O 請求次數
  • IO Packet Size:指的是每次處理一個 I/O 請求時,一個 Package 的大小。
  • Throughput:「每秒可以處理的 I/O 資料總量」,Throughput = IOPS * I/O Packet Size
  • Cost:這邊以相對的數值來建立數字級距的概念,以處理一單位資料的花費,以 $ 當作比較符號

關於 IO Packet Size:

SSD 底下兩個 Type 的 Packet Size 只有 16 KB,HDD 底下兩個 Type 的則有 1MB

主要是因為在 SSD 底下,是針對「次數高但量小的使用情境
而 HDD 則是處理「次數少但量大的狀況

◆ 比較數值意義

HDD

最重要的數值是 Throughput,st1 處理 500MB/s,sc1 處理 250MB/s,勝過 gp2。

雖然 io1 可以達到 1000MB/s,但是花費成本也是最高的,因此並非最佳選擇。

sc1 的花費最低,又可以達到 250MB/s,算是較經濟實惠的選擇。

gp2 需花 4 倍的花費才能達到 sc1 的 Throughput,因此也不划算。

因此當我們要使用 HDD 底下的 Type 時,必須特別注意 Throughput 和 Cost 兩個數值。

SSD

底下兩個 Type 都是以 IOPS 為主要數值,雖然比 HDD 貴很多,但是相對它的 IOPS 也高出非常多。

所以當我們使用 SSD 底下的 Type 時,就是願意花大錢買很高的 IOPS。

四個 Type 適用情境

  • io1
    • 建議使用於 EC2 上有建立「資料庫」的情況,因為在資料庫處理中的 CRUD,可能都是資料小但請求次數多的狀況。
  • gp2
    • 建議使用於「開機硬碟」,AWS 建議大家使用的預設硬碟選擇,可使開機速度快,費用也不像 io1 那麼貴。
  • st1
    • 建議使用於「影音串流」,影音串流的請求頻率不高,但每次都是幾 GB 的容量。
  • sc1
    • 建議使用於「資料封存」的情況,因為使用資料的頻率非常低,保存成本也不高。

EBS 效能

SSD 最強的效能是 IOPS,HDD 則是 Throughput。

決定最後 EBS 可以得到的效能是由兩種要件組成的:

  1. EBS Type 之間不同的效能
  2. EBS Volume 被 attach 到一台 EC2 Instance 上時,那台 Instance 的 EC2 Type 也會影響最後 EBS Volume 的效能

參考下圖,儘管左邊 EBS type 效能高,但終究還是會被右邊 EC2 Type 最高效能給拉下來,最後取得兩者的交集。

小結

  1. HDD 底下的 st1 和 sc1 是「便宜大流量
  2. SSD 底下的 io1 和 gp2 是「高貴快手速

參考網站:
Day 9 運算寶石:EC2 重點架構
Day 10 運算寶石:EC2 儲存資源 Instance Store vs Elastic Block Storage (EBS)
Day 11 運算寶石:EC2 儲存資源 EBS Types 方案比較