Amazon EC2 (Amazon Elastic Compute Cloud) 是 Amazon Web Services (AWS) 提供的核心服務之一,它讓您可以在 AWS 雲端中,彈性且可擴展地獲得虛擬伺服器 (Virtual Servers)。
簡單來說,EC2 就像是你在雲端租用了一台電腦(或多台),你可以完全控制這些電腦的作業系統、軟體、儲存空間和網路設定,就像你擁有自己的實體伺服器一樣,但卻無需投資和維護實際的硬體。
主要概念與特點:
- 彈性運算 (Elastic Compute):
- 「Elastic」意指彈性,你可以根據需求快速啟動或終止虛擬伺服器(在 AWS 中稱為「實例 Instance」)。
- 當你的應用程式流量增加時,可以快速擴展(增加實例);當流量減少時,可以快速縮減(減少實例),避免資源浪費。
- 虛擬伺服器 (Instances):
- 每個 EC2 實例都是一個虛擬機器,提供運算能力 (vCPU)、記憶體 (RAM)、網路和暫時儲存。
- 你可以選擇不同的實例類型 (Instance Types),它們有不同的 CPU、記憶體、儲存和網路組合,以滿足不同工作負載的需求(例如:通用型、計算優化型、記憶體優化型、儲存優化型、加速計算型等)。
- 作業系統 (Operating Systems):
- 你可以選擇多種作業系統,包括: 各種 Linux 發行版 (Amazon Linux, Ubuntu, Red Hat Enterprise Linux, SUSE Linux Enterprise Server 等) Microsoft Windows Server 甚至可以導入自己的自訂作業系統映像。
- Amazon Machine Image (AMI):
- AMI 是一個預先配置好的模板,包含了啟動 EC2 實例所需的一切,例如作業系統、應用程式伺服器、應用程式等。
- 你可以使用 AWS 提供的公共 AMI,也可以創建自己的自訂 AMI,或從 AWS Marketplace 購買第三方 AMI。
- 儲存選項:
- Amazon EBS (Elastic Block Store): 持久性的塊級儲存,可以掛載到 EC2 實例作為根設備或附加儲存。即使實例終止,EBS 數據也能保留。
- 實例儲存 (Instance Store): 暫時性的塊級儲存,直接連接到主機的硬碟。實例終止時數據會丟失,適合暫時性、高 I/O 需求的數據。
- Amazon S3 (Simple Storage Service): 物件儲存,雖然不能直接掛載為檔案系統,但 EC2 實例可以透過 API 存取 S3 上的資料。
- 網路與安全:
- Amazon VPC (Virtual Private Cloud): EC2 實例在您專屬的虛擬網路中運行,您可以完全控制網路拓撲、IP 地址範圍、路由表、子網路等。
- 安全群組 (Security Groups): 充當虛擬防火牆,控制進出 EC2 實例的流量。
- 彈性 IP 位址 (Elastic IP Addresses): 靜態的公有 IP 位址,可以與您的實例關聯,在實例終止後依然保留。
- 定價模式:
- 隨需實例 (On-Demand Instances): 按小時或按秒計費,無需前期承諾,適合開發測試、流量變化大的應用。
- 預留實例 (Reserved Instances, RIs): 預先承諾一年或三年用量,可獲得顯著折扣,適合長期穩定運行的工作負載。
- Spot 實例 (Spot Instances): 利用 AWS 中未使用的 EC2 容量,價格遠低於隨需實例,但如果 AWS 需要容量,可能會被中斷,適合無狀態、容錯性高的工作負載。
- Savings Plans: 彈性定價模型,承諾在一段時間內消耗特定量的計算用量(以美元/小時計),適用於 EC2、Lambda 和 Fargate,可提供顯著折扣。
- 專用主機 (Dedicated Hosts) / 專用實例 (Dedicated Instances): 提供物理隔離的 EC2 實例,適用於嚴格的合規或授權要求。
典型使用案例:
- 網站和 Web 應用程式: 託管各種規模的網站和 Web 應用程式。
- 批次處理: 運行大規模的計算任務,如影片轉碼、科學模擬。
- 大數據處理: 作為 Apache Hadoop 和 Spark 等巨量資料框架的基礎運算資源。
- 企業應用程式: 運行 ERP、CRM 等企業級應用程式。
- 遊戲伺服器: 託管多人線上遊戲伺服器。
- 機器學習訓練和推理: 提供所需的運算能力。