EC2 簡介
Overview
首先是原廠介紹:
Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides secure, resizable compute capacity in the cloud. It is designed to make web-scale cloud computing easier for developers. Amazon EC2’s simple web service interface allows you to obtain and configure capacity with minimal friction. It provides you with complete control of your computing resources and lets you run on Amazon’s proven computing environment.
可以看出 EC2 具備以下特性:
提供 compute capacity,也就是俗稱的 virtual machine(VM)
包含了許多安全性功能
可以因應使用者需求,提供可大可小運算能力的 VM,並且可隨時 scale up & down
大大降低了產生 VM 所花費的時間,讓使用者可以很低門檻的開始使用 VM 相關服務
VM 是運行在 AWS 長久以來被驗證很穩定的基礎建設上
Pricing Type
Om Demand:用多少算多少,不用保證用量,但每個時間單位費用是最高的
Reserved:預先跟 AWS 保留使用量,需要簽約 & 預付一大筆金額,但整體來說可以得到很大的折扣(相較於 on demand 模式),
使用這類型的 instance 無法做 region 之間的移動(但可以更換 AZ、網路設定、instance size …. 等等)
Spot:透過競價模式取得的 EC2 instance,最便宜,但由於價格是浮動的,一旦價格高過原本設定的出現,instance 就會被砍掉;適合用在使用時間彈性的應用上(例如:大數據資料處理)
Dedicated Host:整台實體機器都給你用了,如果軟體必須跟實體機器綁定時 or 想要先把地端的運用完全不動的先移植到雲端時,才會用到的選項。
Saving Plan:這是新一代的省錢方式,對使用者來說,運用彈性變大了(例如:可改變 instance type),詳情可參考官網說明,但同樣會需要使用者預付一筆費用
Spot Instance 計費
spot instance 是以小時(hour)為單位計費
如果因為出價太低,導致 AWS 主動砍了 spot instance,未滿一小時的部份則不收費
如果使用者自行砍掉 VM,未滿一小時的部份則會被收一小時整的費用
Instance Type
每個 instance type 的代碼其實都有其意義,可以對應到特別的場景 & 應用,以下列出說明:
F
:FPGAI
:IOPSG
:GraphicsH
:High Disk ThroughputT
:Cheap general purpose (例如:t2.micro)D
:DensityR
:RAMM
:Main choice for general purpose appsC
:ComputeP
:Graphics (例如:Pics)X
:Extreme MemoryZ
:Extreme Memory & CPUA
:ARM-based workloadsU
:Bare Metal
AMI Virtualization Type
目前有以下兩種:
HVM(Hardware Virtual Machine):可利用到特殊的硬體所提供的效能
PV(Paravirtual, 全虛擬化):可以在不確定可以支援虛擬化的硬體上運作,若要模擬很特殊的作業系統,這個選項可能會用到
基本上,如果不是很特殊的應用,為了要得到相對較好的效能,直接選擇 HVM
就對了。
關於 EC2 設定的選項
設定 Instance
選項中的 AZ 跟實際中的 AZ 並不同
在 subnet 的部份,可以選擇對應到不同 AZ 的 subnet,但上面的選項不一定會對應到實際的 AZ,例如在 region us-east-1 中,有以下 AZ:
us-east-1a
us-east-1b
us-east-1c
假設使用者 Andy 選了 us-east-1a
,另外一位使用者 Bill 也選了 us-east-1a
,但實際上兩個使用者的 VM 並不一定放在同一個 AZ 中。
但對同一個使用者來說,us-east-1a
、us-east-1b
、us-east-1c
就是三個不同實體的 AZ,只是你不需要去關心到底對應到那個實體 AZ;這表示使用者其實不需要知道或關心 AZ 代碼對應到的實際哪個 AZ,只要知道若是當 cloud resource 指定放置在不同的 AZ,AWS 就會幫你在實體上放在不同的 AZ 中。
監控
預設情況下,CloudWatch 每五分鐘會收集 EC2 instance metrics
若希望可以取得更細節的資訊(例如:每一分鐘),那可以勾選 Monitoring 選項中的
Enable CloudWatch detailed monitoring
一般選項
Capacity Reservation:跟 saving plan 有關係,看起來像是要在省錢 & 確保有特定容量的資源可用所設計的機制,詳細的內容可以參考官方文件說明。
IAM Role:可以指定 EC2 instance 所使用的 IAM 身份為何,若是需要串接其他服務,這個部份需要有正確的設定才行
Shutdown Behavior:可指定關閉 instance 時,只是單純的停止(stop),或是直接將其終止(terminate)
Enable Termination Protection:可以用來保護此 VM 不會被誤刪
若是 shutdown behavior 設定為
terminate
,那當 EC2 instance shutdown 時,還是會被移除,不受 Termination Protection 的保護Tenancy:可用來決定是否可以跟別的使用者共享同一台實體機的資源,有
Shared
、Dedicated
、Dedicated host
三個選項
進階選項
- User data:這裡可以用來指定 bootstrap script
增加 Storage
預設會有一個 Volume Type 為
Root
的磁碟,這個就是 EC2 instance 的開機磁碟,容量通常很小,預設只有 8GBRoot volume 只能選擇
SSD
&Magnetic(standard)
兩種 volume typeRoot volume 中的
Delete on Termination
是固定會勾選的,表示 instance 砍了,Root volume 也會跟著不見可以指定增加 EBS volume,指定容量 & Volume Type(HDD, SSD … 等等)
EBS volume 則可以選擇更多種 Volume Type,例如:Cold HDD、Throughput Optimized HDD … 等等
若是選擇 Throughput Optimized HDD,畫面就會出現 Throughtput 能力(MB/s)的資訊,基本上容量越大 throughtput 就會越大
指定不同的 Volume Type 會顯示對應的 IOPS 資訊
General Purpose SSD 能提供的 IOPS 是根據磁碟容量而定的,另外有一個 burst 的上限
Provisioned IOPS SSD 則是可以提供固定 IOPS 能力的磁碟 (可能效能無法達到預期)
若使用 Provisioned IOPS SSD 也無法達到預期的效能,那 instance type 可以改選
EBS optimized instance type
,這類型的 instance 在網路傳輸上,EBS traffic 會優先處理,因此可以確保達到 provisioned IOPS 的效能原本 Root volume 是無法加密的,但現在已經可以進行加密了
設定 Security Group
Security Group 就是個虛擬的防火牆
若要連到 EC2 instance,設定正確的 security group rule 是需要的
security group rule 在設定上不同的 protocol, port, source, destination …. 等規則
設定 Key Pair
要用來設定連線到 VM 的 ssk keypair,可以預先上傳自己的 key,也可以直接在 console 中產生
透過 SSH 連線,使用者名稱為
ec2-user
EC2 Instance 管理功能
Status Check
System Status Checks:這是用來檢查底層實體機器 & Hypervisor 的狀態
這檢查有問題通常是 AWS 需要負責解決的
Instance Status Check:這是用來檢查 VM 本身的狀態
這檢查有問題通常是使用者自己需要自行解決的
Actions
- 若有開啟 Termination Protection 的功能,要先在 Instance Settings -> Change Termination Protection 中關閉此功能,才可以砍掉此 VM
Security Group
EC2 & Security Group
EC2 instance 可以同時與多個 security group 綁定
EC2 instance 一旦綁定 security group,規則馬上就會生效
一個 security group 可以對應到多個 EC2 instance
所以 EC2 instance & security group 是多對多的關係
Security Group v.s. VPC Network ACL(Access Control List)
Security Group
Security Group rule 是 stateful 的
承上,若是 allow HTTP in,就會有一個隱性的 allow HTTP out 存在
承上,即使將 outbound rule 中允許向外的流量規則刪除,EC2 還是可以回應 HTTP request
預設所有 inbound traffic 都會被擋住,需要根據需求一條一條規則打開
預設所有 outbound traffic 都是開放的
無法設定黑名單(blacklist),因此無法進行類似 “阻擋存取特定服務的 traffic“ 這樣的設定
VPC Network ACL(Access Control List)
VPC network ACL 是 stateless 的
承上,若是建立了 inbound rule,就要建立相對應的 outbound rule,否則對應的服務不會通
可以設定黑名單,因此 “阻擋存取特定服務的 traffic“ 這類的規則是可以設定的
應考重點整理
EC2 概觀
Termination Protection 預設是關閉的,有需要就必須自己打開
VM 被刪除(Terminated),Root volume 會一起被刪除
Root volume 可以加密,可以搭配第三方工具(例如:bot locker)使用,或是透過 AWS 提供的 API
額外加入的 volume 也可以加密
EC2 instance tenancy 可以從 host 轉為 dedicated,也可以從 dadicated 轉為 host;但無法轉成 default or 從 default 轉為其他種(host or dedicated)
若是希望可以不透過 RDP or SSH 的方式在 EC2 instance 內執行指令,可以從 AWS console 中選擇
Run Command
來達成此目的這是由 SSM 所提供的功能
Security Group
所有 inbound traffic 預設都會被擋住
所有 outbound traffic 預設是開放的
security group 規則修改後馬上會生效
EC2 instance & security group 是多對多的關係
security group 是 stateful,在 inbound 設定的規則會同時在 outbound 中自動開放
security group 無法設定黑名單,若需要黑名單功能,則需要使用 Network ACL 來做 (只可以設定 allow rules,無法設定 deny rules)
Spot Instance
若是取消目前啟用中的 spot request,並不會中止相關的 EC2 instance
若是 spot request 一直為持續啟用,當 spot instance 被中斷後,之後會在重新開啟
- spot block 的設計是用來不要被中斷的
監控
- 透過 AWS console 所建立的 launch configuration,預設是 basic monitoring;若是透過 AWS CLI 所建立的 launch configuration,預設則是 detailed monitoring