大話AWS 雲端架構讀書心得 — EC2 採購流程大哉問

J米的學習日記
8 min readFeb 6, 2023

此篇為筆者閱讀本書後,吸收資訊結合本身從業經驗,並搜尋網路資源去撰寫,如有任何錯誤請告知,謝謝。

本篇收錄該書第四章讀書心得。

採購伺服器 EC2 流程概要

筆者認為 Devops 就像是雲端版的 MIS,MIS 管理採購電腦設備,Devops 則是將其雲端化,需了解如何在虛擬市集內買到合適的虛擬主機與設定合適的環境架構。

AWS 租借流程對照圖 來源:大話AWS 雲端架構

書中介紹設定 AWS EC2 流程,透過 AMI Marketplace,選擇需要的作業系統環境 AMI,用 AMI 建立 Instance,過程中用 Userdata 功能達到虛擬機的前置部署,再來看使用情境添加 Instance 需要之硬碟。考慮專案成本,利用 Tag 管理 AWS 帳號成本與權限管理,考慮網路連線安全,以 Security Group 控管協定與 Port 存取,透過 KeyPair 在 Instance 內置入公鑰,未來管理人員可連線回作業系統底層。

相關名詞

這篇Day 9 運算寶石:EC2 重點架構寫得很清楚,可以先看完後,可以理解整體輪廓。

  1. EC2(Amazon Elastic Compute Cloud) instance 概念: 使用者租用此雲端電腦運行系統服務,可彈性使用自己的映像檔(AMI),運行自己的軟體程式,簡單說就是租借虛擬機器,租借機器當然可以根據自己使用情境不同做選擇,可使用不同 CPU、記憶體、儲存體和容量,每種 instance 都包含一或多種 instance 個體大小,使用者可以隨時建立、執行、終止自己的虛擬伺服器以及設定虛擬主機地理位置。
  2. Instance metadata: instance 相關資料,有點像是這台主機的資訊,管理者可設定與管理,差別在於是雲端主機的資訊,包含主機名、IP、 Instance ID、Hostname 等。
  3. AMI(Amazon machine images): 提供執行個體 instance 所需設定檔,其中最重要的是紀錄使用何種作業系統、其他軟體設定。
  4. AMI Marketplace: 可購買 AWS 上執行的 instance 、 AMI 等等。
  5. Instance Type: 決定此 instance 資源 CPU、記憶體、instance storage、聯網速度,可以想成此主機的規格。延伸閱讀: AWS instance type 介紹
  6. Userdata: 當 EC2 instance 啟動時,可以作為啟動虛擬主機時執行的 Linux 指令(腳本),將使用者資料傳遞給 instance,執行常見的自動化任務,或是 instance 啟動完後,執行腳本,也可以將此資料以純文字、檔案或編碼文字傳遞給啟動精靈。在 Instance 裡面是存在 meta-data 裡面,以明碼顯示。延伸閱讀: AWS EC2 關於 User Data 的小事
  7. Instance storage: 依附在 instance 上,只有在 instance 啟動時可以指定,當 instance 停止或終止,storage 資料會消失,適合存放暫時性資料,例如:快取、緩衝、臨時資料,暫存記憶體的感覺,簡單說是取資料快速簡單,I/O 快,資料保存性低,存在 instance 那台 host。
  8. EBS (Amazon Elastic Block Store): 持久性的資料儲存磁碟區,不會因 EC2 關機而消失,可選擇 SSD 或 HDD,虛擬的外接硬碟空間,如 EBS 要備份,其名詞為 EBS snapshot,採取漸進式備份(上次備份的就不備,指加上新的部分),I/O 慢,資料保存性高,存在另一台 host。 延伸閱讀: Day 10 運算寶石:EC2 儲存資源 Instance Store vs Elastic Block Storage (EBS)
  9. Tag: 識別性標籤,將資源寫上註記,便於後續資源管理與權限設定,自定義 key & value。
  10. Security group: 安全群組,像是守衛一樣,作為一種虛擬防火牆,控制一或多個 instance 流量。
  11. KeyPair: 公有金鑰與私有金鑰稱為 KeyPair,啟動 instance 需要指定 KeyPair,若需登入執行個體,必須連線到該 instance 指定私有金鑰。
  12. Placement group: 一群 EC2 啟動位置的策略,分為叢集(instance 緊密包裝在一個 AZ 內,低延遲網路效能、一起掛掉風險高)、分區(instance 分散到不同 Region,使一個分區中的 instance group 不與其他分區的 instance group 共用底層硬體,大量分散和複寫工作負載,ex: Hadoop、Cassandra、Kafka)、分散(嚴格將一小組 instance 分散到不同底層硬體,減少關聯故障)。

付費方案

依照使用情境區分如下:

  1. On Demand:適用臨時需求(突發性擴增,ex: 網站流量突然變大)且需要機器穩定,用多少,花多少。
  2. Reserved:需求明確且為長期,可低價購買長期保留機器。
  3. Scheduled Reserved:需求明確,且特定時間使用。
  4. Spot:運算力高的需求,且運算任務可接受中斷,並可接受後續進行,以價高者取得使用權,如後續有人出更高價格,使用權會被迫轉移。
  5. Dedicate:適用於特殊軟體場景(ex: Licence 軟體),須依照主機規格,進行授權使用。

AMI 虛擬映像檔 / Instance 細節

AMI 市場裡又有分官方版與第三方版,且分別有付費與免費,但 AMI 不能跨 Region 使用,日本歸日本,美國歸美國,不能共享。

如果需要跨區用同一份 AMI,作法為 AMI 製作出一份 Snapshot,再透過 Snapshot 複製一個新的 AMI。

Instance 硬體不同場景有不同英文代號

AWS 選購硬體英文代號意義 來源:大話AWS 雲端架構

每個不同應用場景、虛擬化技術版本、規格大小可以轉化成英文與數字去表示,例如:t2.micro,t 表示應用場景、2表示虛擬化技術版本、micro 表示規格大小。

每個 instance 通常至少會配一個 Elastic network interface(網路卡),讓管理員可以透過網路操作。

Internet -> public IP(在開關機時,才會變更) -> ENI -> Instance -> EBS

如不想開關機變更,可使用 Elastic IP(EIPs) 綁定至固定 IP。

Q:如何配置網路與內部環境?

A:透過 Userdata,EC2 創建時,工程師編寫 Userdata 腳本,機器啟動後自動根據此 Userdata 自動安裝應用程式(ex: python, nginx, docker),這樣一來就可以在 instance 內透過裝好這些環境。

EBS 虛擬硬碟細節

EBS 硬碟空間細節 來源:大話AWS 雲端架構

Q:EBS & instance storage 差別?

A:

(a) 速度,instance storage 速度快於 EBS

(b) 資料保存性,EBS 存放保存性高於 instance storage,關機 instance storage 會不見,但如果是同一台重開機,instance storage 不會遺失

(c) host,EBS 跟 instance 不同 host,但 instance storage 與 instance 相同 host

Security group 細節

目的為防止惡意流量或非預期流量存取,是一種外掛式的防火牆,設定好 Inbound rule(外部網路存取) / Outbound rule(內部網路封包發出) 就可以達到上述目的。

Inbound 就是可以存取的協定、Port 號、允許來源網段、IP。

Outbound 則為對外聯絡用協定、Port 號、允許目標網段、IP。

如兩個 EC2 instance 相互連線,可以設定 Security group ID 允許特定 Security group 存取與連線。

Security group 是帶有狀態的,因此先前有傳出去,就不用考慮 先前 Inbound 規則,讓其直接進來,反之,如果先前有流進來,就不用考慮先前 Outbound 規則,讓其直接出去。

KeyPair 細節

有兩種做法,去管理 Instance。

方法 A: User 本機有 private key,EC2 instance 有 public key,User 則透過 SSH 去比對。

方法 B :不埋入金鑰,反正 Instance 掛了,按照原 Userdata 按之前設定重開一台。

EC2 整體架構

希望我的分享對讀者有些幫助,有任何問題可以 Email 與我聯絡,謝謝!

--

--