除了 VM 本身之外,在 Azure 中佈建虛擬機 (VM) 需要額外的元件,包括網路和記憶體資源。 本文說明在 Azure 上執行安全 Linux VM 的最佳做法。
架構
下載此架構的 Visio 檔案。
工作流程
資源群組
資源群組是保存相關 Azure 資源的邏輯容器。 一般而言,根據資源的存留期和誰將管理資源分組。
將共用相同生命週期的緊密關聯資源放入相同的 資源群組中。 資源群組可讓您將資源部署和監視為群組,並依資源群組追蹤計費成本。 您也可以將資源刪除為集合,這對測試部署很有用。 指派有意義的資源名稱,以簡化尋找特定資源並瞭解其角色。 如需詳細資訊,請參閱 Azure 資源的建議命名慣例。
虛擬機器
您可以從已發佈的映像清單,或從上傳至 Azure Blob 記憶體的自定義受控映射或虛擬硬碟 (VHD) 檔案布建 VM。 Azure 支援 執行各種熱門 Linux 發行版,包括 Debian、Red Hat Enterprise Linux (RHEL) 和 Ubuntu。 如需詳細資訊,請參閱 Azure 和 Linux。
Azure 提供許多不同的虛擬機大小。 如需相關資訊,請參閱 Azure 中虛擬機器的大小。 如果您要將現有的工作負載移至 Azure,請從最符合內部部署伺服器的 VM 大小開始。 然後,以每秒 CPU、記憶體和磁碟輸入/輸出作業來測量實際工作負載的效能,並視需要調整大小。
一般而言,請選擇最接近內部使用者或客戶的 Azure 區域。 並非所有 VM 大小在所有區域都可供使用。 如需詳細資訊,請參閱 依區域的服務。 如需特定區域中可用的 VM 大小清單,請從 Azure CLI 執行下列命令:
az vm list-sizes --location <location>
如需選擇已發佈 VM 映射的相關信息,請參閱 尋找 Linux VM 映像。
磁碟
為了獲得最佳磁碟 I/O 效能,建議您 進階儲存體,以將數據儲存在固態硬碟上。 成本是以布建磁碟的容量為基礎。 IOPS 和輸送量(也就是數據傳輸速率)也取決於磁碟大小,因此當您布建磁碟時,請考慮這三個因素(容量、IOPS 和輸送量)。 進階記憶體也提供免費高載功能,結合對工作負載模式的瞭解,為IaaS基礎結構提供有效的SKU選擇和成本優化策略,讓高效能不過度布建,並將未使用的容量成本降至最低。
受控磁碟 為您處理記憶體來簡化磁碟管理。 受控磁碟不需要記憶體帳戶。 您可以指定磁碟的大小和類型,並將其部署為高可用性資源。 受控磁碟也可藉由提供所需的效能來提供成本優化,而不需要過度布建、考慮變動的工作負載模式,以及將未使用的布建容量降到最低。
OS 磁碟是儲存在 Azure 儲存體 中的 VHD,因此即使在主電腦關閉時仍會保存。 VHD 可以是本機連結的 NVMe,或許多 VM SKU 上可用的類似裝置。
暫時磁碟提供無額外成本的良好效能,但具有非持續性、容量有限且僅限於 OS 和暫存磁碟使用的重大缺點。 針對 Linux VM,OS 磁碟為 /dev/sda1
。 我們也建議您建立一或多個 數據磁碟,這些磁碟是用於應用程式數據的持續性 VHD。
當您建立 VHD 時,它未格式化。 登入 VM 以格式化磁碟。 在Linux殼層中,數據磁碟會顯示為 /dev/sdc
、 /dev/sdd
等。 您可以執行 lsblk
來列出區塊裝置,包括磁碟。 若要使用數據磁碟,請建立分割區和文件系統,然後掛接磁碟。 例如:
# Create a partition.
sudo fdisk /dev/sdc # Enter 'n' to partition, 'w' to write the change.
# Create a file system.
sudo mkfs -t ext3 /dev/sdc1
# Mount the drive.
sudo mkdir /data1
sudo mount /dev/sdc1 /data1
當您新增數據磁碟時,會將邏輯單元編號 (LUN) 識別碼指派給磁碟。 您可以選擇性地指定 LUN 識別碼,例如,如果您要取代磁碟並想要保留相同的 LUN 識別碼,或者您有尋找特定 LUN 識別符的應用程式。 不過,請記住,每個磁碟的 LUN 識別碼都必須是唯一的。
您可能會想要變更 I/O 排程器,以優化 SSD 上的效能,因為具有進階記憶體帳戶的 VM 磁碟是 SSD。 常見的建議是使用 SSD 的 NOOP 排程器,但您應該使用 iostat 之類的工具來監視工作負載的磁碟 I/O 效能。
VM 是使用暫存磁碟建立的。 此磁碟會儲存在主電腦上的實體磁碟驅動器上。 它不會儲存在 Azure 儲存體 中,而且可能會在重新啟動和其他 VM 生命週期事件期間刪除。 只將此磁碟用於暫存數據,例如頁面或交換檔案。 針對 Linux VM,暫存磁碟是 /dev/disk/azure/resource-part1
,並掛接在 /mnt/resource
或 /mnt
。
網路
網路元件包含下列資源:
虛擬網路。 每個 VM 都會部署到分割成子網的虛擬網路。
網路介面 (NIC)。 NIC 可讓 VM 與虛擬網路通訊。 如果您需要 VM 的多個 NIC,每個 VM 大小都會定義最大 NIC 數目。
公用 IP 位址。 需要公用IP位址才能與VM通訊,例如,透過遠端桌面通訊協定(RDP)。 公用IP位址可以是動態或靜態的。 預設值為動態。
- 如果您需要未變更的固定IP位址,請保留靜態IP位址,例如,如果您需要建立 DNS 'A' 記錄或將IP位址新增至安全清單。
- 您也可以為IP位址建立完整功能變數名稱 (FQDN)。 接著,您可以在 DNS 中註冊 指向 FQDN 的 CNAME 記錄 。 如需詳細資訊,請參閱在 Azure 入口網站 中建立完整域名。
網路安全性群組 (NSG)。 網路安全組 可用來允許或拒絕對 VM 的網路流量。 NSG 可以與子網或個別 VM 實例相關聯。
- 所有 NSG 都包含一組 默認規則,包括封鎖所有輸入因特網流量的規則。 無法刪除默認規則,但其他規則可以覆寫它們。 若要啟用因特網流量,請建立允許輸入流量流向特定埠的規則,例如 HTTP 的埠 80。 若要啟用安全殼層 (SSH),請新增 NSG 規則,以允許將輸入流量傳送至 TCP 連接埠 22。
Azure NAT 閘道。網路地址轉換 (NAT) 網關允許私人子網中的所有實例連線到因特網,同時保持完全私人。 只有以回應封包的形式抵達輸出連線的封包才能通過NAT閘道。 不允許來自因特網的未經請求的輸入連線。
Azure Bastion。Azure Bastion 是完全受控的平臺即服務解決方案,可透過私人IP位址安全地存取VM。 透過此設定,VM 不需要公開給因特網的公用IP位址,這會增加其安全性狀態。 Azure Bastion 會透過各種方法,直接透過傳輸層安全性 (TLS) 提供與 VM 的安全 RDP 或 SSH 連線,包括 Azure 入口網站 或原生 SSH 或 RDP 用戶端。
Operations
SSH。 建立 Linux VM 之前,請產生 2048 位 RSA 公開-私鑰組。 當您建立 VM 時,請使用公鑰檔案。 如需詳細資訊,請參閱 如何在 Azure 上搭配 Linux 和 Mac 使用 SSH。
診斷。 啟用監視和診斷,包括基本健康情況計量、診斷基礎結構記錄和 開機診斷。 如果您的 VM 進入無法開機狀態,開機診斷可協助您診斷開機失敗。 建立 Azure 儲存體 帳戶來儲存記錄。 標準本地備援記憶體 (LRS) 帳戶足以用於診斷記錄。 如需詳細資訊,請參閱 啟用監視和診斷。
可用性。 您的 VM 可能會受到 計劃性維護 或 非計劃性停機的影響。 您可以使用 VM 重新啟動記錄 來判斷 VM 重新啟動是否由計畫性維護所造成。 如需更高的可用性,請在可用性設定組中部署多個 VM,或跨區域中的可用性區域部署。 這兩個組態都提供較高的服務等級協定(SLA)。
備份 若要防止意外遺失數據,請使用 Azure 備份 服務將 VM 備份至異地備援記憶體。 Azure 備份提供應用程式一致備份。
停止 VM。 Azure 會區分「已停止」和「已解除分配」狀態。 當 VM 狀態停止,但未解除分配 VM 時,您需支付費用。 在 Azure 入口網站 中,[停止] 按鈕會解除分配 VM。 如果您在登入時透過OS關閉,則會停止VM,但 不會 解除分配,因此您仍會向您收費。
刪除 VM。 如果您刪除 VM,您可以選擇刪除或保留其磁碟。 這表示您可以安全地刪除 VM,而不會遺失數據。 不過,您仍需支付磁碟的費用。 您可以刪除受控磁碟,就像任何其他 Azure 資源一樣。 若要防止意外刪除,請使用 資源鎖定 來鎖定整個資源群組或鎖定個別資源,例如 VM。
考量
這些考量能實作 Azure Well-Architected Framework 的支柱,其為一組指導原則,可以用來改善工作負載的品質。 如需更多資訊,請參閱 Microsoft Azure 結構完善的架構。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化支柱的概觀。
視使用量和工作負載而定,VM 大小有各種選項。 此範圍包含 Bs 系列最經濟的選項,以及針對機器學習優化的最新 GPU VM。 如需可用選項的相關信息,請參閱 Azure Linux VM 定價。
針對可預測的工作負載,請使用 Azure 保留 和 Azure 節省方案來計算 一年或三年期合約,並節省大量隨用隨付價格。 對於沒有可預測完成時間或資源耗用量的工作負載,請考慮 [ 隨用隨付] 選項。
使用 Azure Spot VM 來執行可以中斷的工作負載,而且不需要在預先決定的時間範圍內完成或 SLA。 Azure 會在有可用的容量時部署 Spot VM,並在需要容量時收回。 與 Spot 虛擬機相關聯的成本大幅降低。 請考慮針對這些工作負載找出 VM:
- 高效能運算案例、批次處理作業或視覺效果轉譯應用程式。
- 測試環境,包括持續整合和持續傳遞工作負載。
- 大規模無狀態應用程式。
使用 Azure 定價計算機來預估成本。
有關詳細資訊,請參閱 Microsoft Azure 架構完善的框架中的 DevOps 成本部分。
安全性
安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性支柱的概觀。
使用 適用於雲端的 Microsoft Defender 來取得 Azure 資源安全性狀態的集中檢視。 適用於雲端的 Defender 監視潛在的安全性問題,並提供部署安全性健康情況的完整畫面。 每個 Azure 訂用帳戶會設定 適用於雲端的 Defender。 啟用安全性數據收集,如將 Azure 訂用帳戶上架至 適用於雲端的 Defender Standard 中所述。 啟用數據收集時,適用於雲端的 Defender 會自動掃描在該訂用帳戶下建立的任何 VM。
修補程式管理。 如果啟用,適用於雲端的 Defender 會檢查是否有任何安全性和重大更新遺失。
反惡意代碼。 如果啟用,適用於雲端的 Defender 會檢查是否已安裝反惡意代碼軟體。 您也可以使用 適用於雲端的 Defender,從 Azure 入口網站 內安裝反惡意代碼軟體。
存取控制。 使用 Azure 角色型存取控制 (Azure RBAC) 來控制 Azure 資源的存取。 Azure RBAC 可讓您將授權角色指派給 DevOps 小組的成員。 例如,讀者角色可以檢視 Azure 資源,但無法建立、管理或刪除它們。 某些許可權專屬於 Azure 資源類型。 例如,虛擬機參與者角色可以重新啟動或解除分配 VM、重設系統管理員密碼、建立新的 VM 等等。 此架構可能有用的其他 內建角色 包括 DevTest Labs 使用者 和 網路參與者。
注意
Azure RBAC 不會限制使用者登入 VM 可以執行的動作。 這些許可權取決於客體OS上的帳戶類型。
稽核記錄。 使用 稽核記錄 來查看布建動作和其他 VM 事件。
資料加密。 如果您需要加密 OS 和資料磁碟,請使用 Azure 磁碟加密。
卓越營運
卓越營運涵蓋部署應用程式並使其持續在生產環境中執行的作業流程。 如需詳細資訊,請參閱卓越營運支柱的概觀 (部分機器翻譯)。
使用單 一 Azure Resource Manager 範本 來布建 Azure 資源及其相依性。 由於所有資源都位於相同的虛擬網路中,因此它們會隔離在相同的基本工作負載中。 它可讓您更輕鬆地將工作負載的特定資源與 DevOps 小組產生關聯,讓小組可以獨立管理這些資源的所有層面。 此隔離可讓 DevOps 小組執行持續整合和持續傳遞 (CI/CD)。
此外,您可以使用不同的 Azure Resource Manager 範本 ,並將其與 Azure DevOps Services 整合,以在幾分鐘內布建不同的環境,例如只在需要時復寫生產環境,例如案例或負載測試環境,以節省成本。
如需更高的可用性架構,請參閱 使用 Apache Cassandra 在 Azure 中的 Linux 多層式應用程式,參考架構包含多個 VM,而且每個 VM 都包含在可用性設定組中。
請考慮使用 Azure 監視器 來分析和優化基礎結構的效能、監視和診斷網路問題,而不需要登入虛擬機。
下一步
- 若要建立Linux VM,請參閱快速入門:在Azure 入口網站 中建立Linux虛擬機
- 若要在Linux VM上安裝 NVIDIA 驅動程式,請參閱 在執行Linux的 N 系列 VM 上安裝 NVIDIA GPU 驅動程式
- 若要布建 Linux VM,請參閱 使用 Azure CLI 建立和管理 Linux VM
- Azure 中的預設輸出存取權限