Azure 成本管理 04 - Virtual Machine 費用解析和選擇定價層

在雲端上最多人使用的服務應該就是  VM 了,初期將服務上雲,最簡單的方式還是把現有地端環境的 VM 複製備份到雲端是最快速的方式了,加上避免大幅度調整程式配合雲端 Paas 服務,大部分人還是會選擇使用 VM,所以本篇文章來介紹 VM 的費用解析和如何挑選合適的機器。

說明

基本介紹

首先來建立一台基本的 VM,看會產生多少的服務項目出來。

根據服務和使用情境大致上可以整理成下表:

類型費用說明
虛擬機器最主要的費用項目,在機器有開機的狀態下就會根據選擇的定價層產生費用,可以透過購買 RI 或是 Saving Plan 來節省費用。
公用 IP 位址如果虛擬機器設定是可以從外部連入,就會產生公用 IP 的項目,會根據服務建立的時數以及定價層去計算,定價層則有基本跟標準兩種,在 VM 關機狀態下還是會持續產生費用
網路安全性群組針對虛擬網路或網路介面套用基本的安全性設定,也就是基本的防火牆相關設定,此項目不會產生額外的費用。
虛擬網路設定 VM 使用的網路區段和子網路區段等,此項目不會產生額外的費用。
網路介面也就是俗稱的網卡,此項目也不會產生額外的費用。
磁碟VM 使用的作業系統或資料存放磁碟,會根據服務建立的時數和定價層等來計算費用,在 VM 關機狀態下還是會持續產生費用,部分類型可以透過購買保留來節省費用。
儲存體帳戶當開啟診斷設定或是一些 Log 機制的時候會將 Log 存放在儲存體帳戶,會根據用量跟儲存體類型來計費,也是關機狀態會持續產生費用。
頻寬基本上指的是從 VM 出資料中心的流量費用,從外面連入 VM 的費用是不計算的,但是如果網路架構有設定 Peering、VPN 等就會有不一樣的計算方式了。

虛擬機器定價層

因為 VM 的定價類型相當的多,就不一一介紹,而是針對挑選的時候該如何判斷的一些參考依據或是使用官方提供的虛擬機器選取器來挑選適合的虛擬機器類型,就不用看後面一長串的介紹了

Azure 虛擬機器大小命名慣例

首先先針對虛擬機器命名慣例來做說明,這樣後面提到的時候就會比較清楚代表的意義。

[系列] + [子系列] + [vCPU 數] + [限制 vCPU 數] + [額外功能] + [加速器類型] + [版本]

 說明
系列以大寫英文字母來表示,目前有 A、B、D、E、F、G、H、L、M、N 等系列。
子系列以大寫英文字母來表示,部分類型系列會有子系列,例如 N 系列底下有 NV 的子系列。
vCPU 數呈現 vCPU 個數的數值。
限制 vCPU 數特定系列會使用的 vCPU 數,
額外功能以小寫英文文字來表示。
a = AMD 類型 CPU
b = 區塊儲存體效能
d = 暫存儲存體 (本機暫存用的磁碟,速度快,但存放的資料可能會在重開機時候清空),適用于較新的 Azure VM,比如 DCadsv5 和 DCasv5,後者是沒有暫存儲存體的,而有標示此功能的新系列 VM 的暫存儲存體也會比其它類型來的多,就會適合需要有快速的暫存儲存體的情境使用,比如 Ddv4 和 Ddsv4 系列。
i = 隔離類型,虛擬機器為單一客戶專用,適用於需要符合法規和安全性的情境。
l = 記憶體較少,比如 D2s v5 和 D2ls v5,前者記憶體為 8GB 後者為 4GB。
m = 記憶體較高,比如 B1s 和 B1ms,前者記憶體為 1GB 後者為 2GB。
t = 微小記憶體,記憶體會比 l 的更少。
p = ARM Cpu
s = 支援進階儲存體功能,包括可以使用Ultra SSD,但是有些新系列沒標示也是可以支援的。

底下兩個雖然官方文件是放在額外功能區塊,但是應該是特定子系列的機器。
C = 機密,此標記會是大寫,官方文件雖然放在額外功能,但是位置應該會是子系列才對,比如 DCsv3,此系列會有額外的記憶體保護區,可以保護我們執行的程式碼和資料。
NP = 節點封裝,文件一樣放在額外功能,但是應該是指 NP 系列機型。
加速器類型主要針對新的 GPU 類型系列,比如 NC A100 v4,A100 即為此類型。
版本VM 系列的版本。

通常原則是 [系列] + [子系列] + [版本] 會是使用同一型號的 CPU,所以單核心運算能力會一樣,然後再針對額外功能去挑選適合情境的類型,所以就可以從上表說明從型號比較出差異。

而針對不同用途有哪些系列可以選擇,可以直接參考官方的文件說明。

Azure 計算單位 (ACU)

再來要介紹的就是 ACU,它是針對 CPU 運算能力計算的單位,數字越高代表單一核心 CPU 運算能力越高,詳細列表可以到這邊察看。底下僅截圖依小部分來說明,基準值是以 A1 系列來計算,數值為 100,其它的則為該系列 1 vCPU 來比較出來運算能力,表格第三欄則為表示 vCPU 對應實體的 CPU,比如說 Dv3 是 1實體 CPU 對應 2 vCPU,所以如果去看定價就會發現 D 系列是不會有 D1 的定價層,而 B 系列比較特殊 ACU 是不固定的,因為它會在平時 CPU 負載較低的時候累積點數,在需要大量運算資源的時候再一次從累積的點數去增加可使用的運算資源上限,更詳細的累積和使用說明可以參考官方文件介紹。另外還有一個想特別說明的是假設需要巢狀虛擬化,比如說在 VM 裡面跑 Hyper-V 或是 Docker 就要挑選特定的系列才有辦法啟用巢狀虛擬化,也就是在表中有標示 *** 的系列,比如說 Dv3,這點在挑選的時候也需要納入考量。

資料中心

VM 相對其它服務來說,在不同資料中心的價錢差異較大,所以如果要僅是測試,不考慮網路延遲等問題,僅考量成本因素,就可以針對某系列挑選較便宜的資料中心,可以透過 Azure VM Comparison 此網站來挑選和比較價錢。

Azure Spot 虛擬機器

除了前面說明的一般標準計價方式的 VM,針對成本考量,還有 Spot VM 可以選擇此類型 VM 價格會相當優惠,它是以優惠的價格來使用較低使用量類型的 VM 運算資源,且也不保證服務不會中斷,在需要特定類型 VM 的運算資源的時候會優先收回此系列 VM,所以適合用在測試或工作可以中斷的情境。

在建立 VM 的時候勾選使用 Azure 現成折扣執行這一個選項就可以使用此類型 VM,而可以選擇的定價層也不多,而資源回收的類型分為兩類僅容量和價格或容量,容量指的就是 Azure 需要該類型 VM 時候就會收回此虛擬機器,而第二個選項則再加上價格,我們可以設定可以接受的價格 (比牌價高),當需要收回資源時候,就會保留願意付出較高成本的價格的資源,但是還是會比該系列一般計費模式來的優惠。

虛擬機器部署狀態

另外最後要特別說明的主題就是虛擬機器的部署狀態,狀態會有以下的類型和流程。

可以透過 VM 的概觀,察看目前 VM 的狀態,而此狀態也會影響到是否是在計費的狀態。

狀態描述計費
建立中虛擬機器正在配置資源。
啟動中虛擬機器正在開啟電源。
執行中虛擬機器已完全啟動。此狀態是標準運作狀態。
停止中此狀態是執行中與已停止之間的過渡狀態。
已停止虛擬機器配置在主機上,但未執行。 也稱為 PoweredOff 狀態或「已停止 (已配置)」。 此狀態可能是叫用 PowerOff API 作業或從客體 OS 內叫用關機所造成。 在 VM 建立期間,或從「已解除配置」狀態啟動 VM 時,也可能會短暫觀察到「已停止」狀態。
正在解除配置此狀態是「執行中」與「解除配置」之間的過渡狀態。
已解除配置虛擬機器已對基礎硬體釋出租用,並關閉電源。 此狀態也稱為 [已停止 (已解除配置)]。

要特別說明的就是已停止這一個狀態,很多剛開始使用雲端虛擬機器的人可能會犯的錯誤,就是是透過 VM 內關機的功能來關機,這時候 VM 狀態會是已停止 (已配置),但是他是要計費的,並非真正的 VM 關機,請從 Azure Portal 點選關機來關機,且確保狀態是已解除配置才是真正不會再針對運算費用計費的狀態,此時僅剩下磁碟、公用 IP 等會在計費。

結論

簡單針對了挑選定價層的一些考量的依據,針對適合的情境跟需求可以挑選出適合的 VM,而針對成本考量上也有 Spot VM 可以選擇,在費用的計算上也要注意 VM 的狀態,避免 VM 並不是真正實質上的釋放運算資源,而導致產生非預期的費用。在未來針對節費,我們還可以購買 RI 跟 Saving Plan,這主題會在後續的文章陸續介紹。

參考資料