SAA-C03-002_EC2_01_Basics
## Amazon EC2
- EC2 是AWS最受歡迎的產品之一
- EC2 = Elastic Compute Cloud = Infrastructure as a Service(基礎及設施)
- 主要包括以下功能:
- 租用虛擬機(EC2)
? ? - 數據存儲在虛擬驅動器上(EBS)
? ? - 在機器間進行負載分配(ELB)
? ? - 使用自動縮放組來擴展服務(ASG)
- 了解 EC2 對于了解云服務的工作原理至關重要
* * *
## EC2 Sizing & Configuration Options
- 操作系統(tǒng)(OS):Linux,Windows,Mac
- 需要多少計算力與核心(CPU)
- 需要多少隨機存儲內存(RAM)
- 需要多少存儲空間
? ? - 網絡連接存儲(EBS & EFS)
? ? - 硬件存儲(EC2 Instance Store)
- 網卡:網卡速度,公共 IP 地址
- 防火墻規(guī)則:Security Group(安全組)
- Bootstrap 腳本(**首次啟動配置**):EC2 User Data
* * *
## EC2 User Data
- 可以通過使用 EC2 User Data 腳本來引導啟動(bootstrap) EC2 實例
- 引導啟動(bootstrapping)意味著在機器啟動時啟動命令
- 該腳本僅在 EC2 實例首次啟動時運行一次
- EC2 User Data 通常用于自動化啟動任務
? ? - 安裝更新
? ? - 安裝軟件
? ? - 從互聯網下載公共文件
? ? - 任何可以想到的事情
- EC2 User Data 腳本通過 Root 用戶來運行
* * *
* * *
## EC2 Instance Types
### Overview
- 根據不同 use case(用例)進行 optimised(最優(yōu)化)選擇不同的 EC2 Instance Type
- AWS 擁有以下命名規(guī)定:m5.2xlarge
? ? - m:實例類
? ? - 5:隨時間推移進行改進而生成
? ? - 2xlarge:實例類的大小
* * *
### General Purpose(一般目的,性能平衡)
- 適合多種工作負載,比如 Web 服務器或代碼儲存庫(repositories)
- Balance between(平衡):
? ? - Compute
? ? - Memory
? ? - Networking
* * *
### Compute Optimized(計算優(yōu)化)
- 適合需要高性能處理器的計算密集型任務:
? ? - 批處理(Batch)
? ? - 媒體轉碼(Media Transcoding)
? ? - 高性能 Web 服務器
? ? - 高性能計算(High Performance Computing = HPC)
? ? - 科學建模和機器學習
? ? - 專用游戲服務器
* * *
### Memory Optimized(內存優(yōu)化)
- 可以為內存中處理大型數據集的工作負載提供快速性能
- Use case:
? ? - 高性能,關系型/非關系型數據庫
? ? - 分布式(Distrubuted)Web 規(guī)模緩存存儲
? ? - 針對BI(商業(yè)智能)優(yōu)化的內存數據庫
? ? - 對大型非結構化數據進行實時處理的應用程序
* * *
### Storage Optimized(存儲優(yōu)化)
- 適合需要對本地存儲上的**大型數據集**進行**高順序讀寫訪問**的存儲密集型任務
- Use case:
? ? - 高頻率在線事務處理(High frequency online transaction processing = OLTP)系統(tǒng)
? ? - 關系型 & NoSQL 數據庫
? ? - 內存數據庫緩存(例:Redis)
? ? - 數據倉庫應用程序
? ? - 分布式文件系統(tǒng)
* * *
* * *
## Security Groups Introduction
- 安全組(Security Groups)是AWS網絡安全的基礎
- **安全組**控制了流量如何允許**進出 EC2 實例**
- 安全組僅包含**允許**規(guī)則
- 安全組可以引用 **IP** 或者**安全組**
* * *
## Security Groups Deeper Dive
- 安全組充當 EC2 實例的防火墻
- 規(guī)定(Regulate):
? ? - Access to Ports(訪問端口)
? ? - 授權 IP 范圍 - IPv4 和 IPv6
? ? - 控制**入站**(inbound)網絡(從其他位置到實例)
? ? - 控制**出站**(outbound)網絡(從實例到其他位置)
* * *
## Security Groups Diagram
EC2 Instance IP xxx.xxx.xxx.xxx (attached)SG1,Inbound,Filter IP/Port with Rules(√) ←—— IP xxx.xxx.xxx.xxx(authroised port 22)
EC2 Instance IP xxx.xxx.xxx.xxx (attached)SG1,Inbound,Filter IP/Port with Rules (×)XXX← IP xxx.xxx.xxx.xxx(not authorised port 22)
EC2 Instance IP xxx.xxx.xxx.xxx (attached)SG1,Outbound,Filter IP/Port with Rules (√)——→ WWW,Any IP - Any Port
* * *
## Security Groups Good to Know
- 可以被附加到多個實例
- 鎖定到一個區(qū)域,或者一個 VPC 組合
- 確保被阻止的流量不會被 EC2 看到
- 更好的維護通過 SSH 訪問單獨的安全組
- 如果應用程序無法被訪問給出 time out(連接超時)錯誤,那么這是一個安全組問題
- 如果應用程序無法被訪問給出 connection refused(連接被拒絕)錯誤,那么這是應用程序錯誤或應用程序未被啟動
- **默認**情況下,所有**入站**流量都被**阻止**,所有**出站**流量都被**授權**
* * *
## Referencing other security groups Diagram
EC2 Instance IP xxx.xxx.xxx.xxx ←—— SG1,Inbound,Authorising SG1/SG2(√)←—— SG1(attached)EC2 Instance IP xxx.xxx.xxx.xxx
EC2 Instance IP xxx.xxx.xxx.xxx ←—— SG1,Inbound,Authorising SG1/SG2(√)←—— SG2(attached)EC2 Instance IP xxx.xxx.xxx.xxx
EC2 Instance IP xxx.xxx.xxx.xxx XXX← SG1,Inbound,Authorising SG1/SG2(×)XXX← SG3(attached)EC2 Instance IP xxx.xxx.xxx.xxx
* * *
## Classic Port to know
- 22 = SSH(Secure Shell) - 登錄 linux 實例
- 21 = FTP(File Transfer Protocol) - 上傳文件到文件共享
- 22 = SFTP(Secure File Transfer Protocol) - 使用 SSH 上傳文件
- 80 = HTTP(Hyper Text Transfer Protocol) - 訪問不安全網站
- 443 = HTTPS(Hyper Text Transfer Protocol Secure) - 訪問安全網站
- 3389 = RDP(Remote Desktop Protocol) - 登錄 Windows 實例
* * *
* * *
## EC2 Instance Connect
- 在瀏覽器中連接 EC2 實例
- 無需使用以下載的密鑰文件
- AWS 自動將臨時密鑰上傳到 EC2
- 僅適用于 Amazon Linux 2 開箱即用(out-of-the-box)
- 需要確保端口(Port)22 仍然是被打開的狀態(tài)
* * *
* * *
## EC2 Instances Pirchasing Options
- On-Demand Instances(按需實例)
- Reserved(保留實例):
? ? - 1 & 3 年
? ? - Reserved Instances - 長期工作負載
? ? - Convertible Reserved Instance(可轉換保留實例) - 長期工作負載,具有靈活性的實例
- Savings Plans(儲蓄計劃):
? ? - 1 & 3 年
? ? - 承諾使用量,長期工作負載
- Spot Instance(現貨實例) - 短期工作負載,最便宜,可能會丟失實例(可靠度低)
- Dedicated Hosts(專用主機) - 預定整個物理服務器,控制實例放置
- Dedicated Instance(專用實例) - 沒有其他客戶會共享硬件
- Capacity Reservations(容量預訂) - 在任何期限內保留特定 AZ(Available Zone) 的容量
* * *
### On Demand
- 僅支付使用的費用:
? ? - Linux 或者 Windows - 在一分鐘后,按秒計費
? ? - 其他系統(tǒng) \- 按小時計費
- Cost(成本)最高,但沒有預付款
- 沒有長期使用承諾
- 推薦用于**短期**和**不可間斷**的,且無法預測應用程序行為的工作負載
* * *
### Reserved Instance
- 與按需實例相比,擁有72%的折扣
- 預定了特定的實例屬性(實例類型,地區(qū),租賃,操作系統(tǒng))
- 租期
? ? - 1 年(+折扣)
? ? - 3 年(+++折扣)
- 付款選項
? ? - No Upfront(無預付)(+折扣)
? ? - Partial Upfront(部分預付)(++折扣)
? ? - All Upfront(全預付)(+++折扣)
- 推薦用于穩(wěn)定使用應用程序(Think Database)
- 可以在保留實例商店(Market place)購買或出售
- 可轉換保留實例
? ? - 可以轉換EC2 實例類型,實例系列,操作系統(tǒng),范圍和租賃
? ? - 擁有高達66%的折扣
<br>??
#### *TIPS:折扣隨著時間的推移而變化,并不固定*
* * *
### Savings Plans
- 根據長期使用情況獲得折扣(高達72%的折扣,與Reserve類似)
- 承諾特定類型的使用(每小時$10,持續(xù)1年或3年)
- EC2 儲蓄計劃外的使用情況是按需付費
- 鎖定到特定的實例系列和AWS區(qū)域(例:us-east-1區(qū)域的M5系列)
- 靈活性:
? ? - 實例大小(例:m5.large,m5.2xlarge)
? ? - 操作系統(tǒng)(例:Linux,Windows)
? ? - Tenancy(租賃)(Host,Dedicated,Default)
* * *
### Spot Instance
- 與按需實例相比,可以獲得搞到90%的折扣
- 如果租用時的最高價格低于當前現貨價格,會在任何時候丟失實例(僅有2分鐘保留期來進行調整)
- AWS 中最具有成本效益的實例
- 適用于抗故障能力高的工作負載:
? ? - 批處理
? ? - 數據分析
? ? - 圖像處理
? ? - 任何分布式工作負載
? ? - 具有靈活開始和結束時間的工作負載
- 不適合關鍵工作負載或數據庫
* * *
### Dedicated Hosts
- 具有 EC2 實例容量的物理服務器,完全專屬使用
- 允許滿足合規(guī)性要求并使用現有服務器綁定軟件許可證(per-socket,per-core,pe-VM software licenses)
- 購買選項
? ? - On-demand - 為被激活的主機按秒支付費用
? ? - Reserved - 1 或 3 年(無預付,部分預付,全預付)
? ? - 最昂貴的選項
? ? - 適用于具有負載許可模式的軟件(BYOL - Bring Your Own License)
? ? - 或者需要強監(jiān)管或合規(guī)性需求的公司
* * *
### Dedicated Instances
- 實例在專用的硬件上運行
- 可以與統(tǒng)一賬戶中的其他實例共享硬件
- 無法控制實例放置(可以在 Stop/Start 之后移動硬盤)
* * *
### EC2 Capacity Reservations
- 在任何時間內都在特定的 AZ 中保留按需實例容量
- 需要時始終可以訪問EC2容量
- 沒有時間承諾(隨時創(chuàng)建/取消),沒有賬單折扣
- 結合區(qū)域保留實例和儲蓄計劃,可以獲得賬單折扣
- 無論是否運行實例,都要按需付費
- 適用于需要位于特定 AZ 的短期且不間斷的工作負載
* * *
## Example
- On demand:隨時來度假村居住,支付全價
- Reserved:提前計劃,如果計劃長期入住,可以獲得不錯的折扣
- Saving Plans:在特定時期內每小時支付一定金額,并入住任何房間類型(例:特大號床,套房,海景房...)
- Spot Instances:酒店允許人們競標空房間,出價最高的人保留房間,當然也隨時會被踢出去
- Dedicated Hosts:預定了度假村的整棟建筑
- Capacity Reservations:即使不入住,也可以以全價預定一個房間
* * *
## EC2 Spot Instance Requests
- 與按需相比可以獲得高達90%的折扣
- 當**當前現貨價格**小于**最高可支付價格**時,定義**最高可支付價格**以獲取實例
- 每小時現貨價格因因容量而異
- 如果當前現貨價格大于定義的最高可支付價格,則須在2分鐘的寬限期內停止或終止(terminate)實例
- 其他策略:Spot Block(現貨塊)
- 在指定時間范圍內(1至6小時)內不被打斷的現貨塊
- 在極少數情況下,實例可以被回收
- 用于批處理,數據分析,或其他抗故障能力較強的工作負載
- 不適合關鍵工作或數據庫
* * *
## Terminate Spot Instance
- 只能取消現貨請求的打開,活動或禁用
- 取消現貨請求不會終止實例
- 必須首先取消現貨請求,然后再終止關聯的現貨實例,否則關閉實例后會立即被現貨請求導致實例再次被打開
* * *
## Spot Fleets(現貨隊列)
- 現貨隊列 = 一組現貨實例 + 按需實例(可選的)
- 現貨隊列將嘗試在價格限制下滿足目標容量
- 定義可能的啟動池(Launch pool):實例類型(m5.large),操作系統(tǒng),AZ(可用區(qū)域)
- 可以有多個啟動池,以便隊列可以選擇
- 現貨隊列在達到容量或最大成本時,停止啟動實例
- 現貨實例分配策略
- LowestPrice(最低價格):來自價格最低的池(成本優(yōu)化,短時工作負載)
- Diversified(多樣化):分布在所有池中(可用性高,長時工作負載)
- CapacityOptimized(容量優(yōu)化):對于數個實例具有最佳容量的池
- 現貨隊列允許我們以最低價格自動請求現貨實例、
* * *
## EC2 Section - Summary
- EC2 Instance:AMI(OS) + Instance Size(CPU + RAM) + 存儲 + 安全組 + EC2 User Data
- Security Groups:連接到 EC2 實例的防火墻
- EV2 User Data:在實例第一次啟動時的腳本
- SSH:啟動進入 EC2 實例的終端(port:22)
- EC2 Instance Role:連接到 IAM Role
- Purchasing Options:按需,現貨,保留(Standard + Convertible + Scheduled),專用主機,專用實例)
* * *
* * *
* * *