在 Azure 上執行 Linux 虛擬機器

Azure 備份
Azure Bastion
Azure Blob 儲存體
Azure Resource Manager
Azure 儲存體
Azure 虛擬機器

要在 Azure 中配置虛擬機(VM),你需要的元件比虛擬機本身還多。 完整部署包含網路與儲存資源。 本文說明在 Azure 上執行安全 Linux 虛擬機的最佳實務。

架構

這張圖顯示了 Azure 中虛擬機部署的情況。

下載此架構的Visio檔案。

Workflow

這個範例展示了一個基本部署,使用單一虛擬機所需的元件。 虛擬機能執行工作負載並連接公共網際網路,同時避免直接暴露於外部威脅。 在此架構中:

  • 虛擬機上的工作負載沒有直接的網路接觸。 存取僅限於同一虛擬網路或對等互連虛擬網路中的資源,例如在中樞與輪輻組態中。

  • 你可以透過 Azure Bastion 透過 Secure Shell(SSH)來管理虛擬機。 公共網際網路無法直接存取虛擬機來管理。

  • 網路位址轉換(NAT)閘道器及其相關的公共 IP 位址提供外部外接網際網路。

Components

此架構會使用下列元件。

資源群組

資源群組 是一個邏輯容器,用來存放相關的Azure資源。 資源群組讓你能一起部署、監控和刪除相關資源,並作為一個單位追蹤其成本。

一般而言,資源依照共享生命週期與所有權來分組。 使用一致且具描述性的資源名稱,以便更容易辨識與理解。 如需詳細資訊,請參閱 定義命名慣例。

虛擬機器

你可以從已發佈的映像檔清單、自訂管理映像檔,或是上傳到 Azure Blob 儲存體 的虛擬硬碟(VHD)來配置虛擬機。 Azure 支援熱門的 Linux 發行版,包括 Debian、Red Hat Enterprise Linux (RHEL)及 Ubuntu。 欲了解更多,請參閱 認可的 Linux 發行版。

Azure 提供多種不同的虛擬機大小。 如果你將現有工作負載移到 Azure,先從與本地伺服器最接近的虛擬機大小開始。 部署虛擬機後,請以 CPU、記憶體和磁碟輸入輸出運算(IOPS)來衡量實際工作負載的效能,並視需要調整大小。

選擇一個離你內部使用者或客戶最近的 Azure 區域。 並非所有 VM 大小在所有區域都可供使用。 如需詳細資訊,請參閱 Azure 地理位置。 若要查詢特定區域可用的虛擬機大小清單,請從 Azure CLI 執行以下指令:

az vm list-sizes --location <location>

關於選擇已發佈虛擬機映像的資訊,請參閱「尋找 Azure Marketplace 映像資訊」。

磁碟

為了獲得最佳的磁碟輸入輸出(I/O)效能,我們推薦Premium SSD,這些SSD會將資料儲存在固態硬碟(SSD)上。 配置好的磁碟容量決定成本、IOPS 與吞吐量(資料傳輸速率)。 選擇磁碟大小時,請考慮所有三項因素。 高級 SSD 包含免費突發功能,幫助你在不過度配置的情況下滿足尖峰需求,並結合對工作負載模式的理解,降低未使用容量的成本。

注意

Premium SSD v2 和 Ultra 磁碟只能用於資料磁碟。 作業系統(OS)磁碟不支援這些功能。

Managed disks 透過幫你處理儲存空間來簡化磁碟管理。 受管磁碟不需要儲存帳戶。 您可以指定磁碟的大小和類型,並將其部署為高可用性資源。 管理型磁碟也能降低成本,提供所需的效能且不會過度配置,幫助你避免為未使用的配置容量支付費用。

預設情況下,作業系統磁碟是儲存在 Azure 磁碟儲存體 的管理磁碟,因此即使主機當機,磁碟仍會持續存在。 對於無狀態工作負載,需要快速配置且不希望作業系統持久化,則使用 臨時作業系統磁碟。 這些磁碟將作業系統映像置於虛擬機主機的本地儲存裝置,而非遠端 Azure 儲存體,降低讀取延遲、加快重構檔速度,並消除管理磁碟成本。 然而,臨時作業系統磁碟上的所有資料在停止(解除配置)、重灌檔或主機維護修復事件時都會遺失。 臨時作業系統磁碟不支援快照或 Azure 備份。 只有當虛擬機完全可從自動化中重新部署時,才使用臨時作業系統磁碟。

預設情況下,許多 Linux 映像檔不會設定交換空間。 如果你的工作負載需要交換,請用 cloud-init 在暫存磁碟上建立,而不是在作業系統磁碟或資料磁碟上。

我們建議您建立一個或多個應用程式資料 磁碟 。 資料磁碟是由儲存系統(Storage)支援的持久性管理磁碟。

當你建立磁碟時,它是未格式化的。 登入虛擬機以格式化磁碟。 在 Linux shell 中,資料磁碟會顯示為 /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 ID,或是有應用程式尋找特定 LUN ID,也可以指定 LUN ID。 然而,LUN ID 必須對每顆磁碟保持唯一。

對於高級儲存硬碟,你可能想調整 I/O 排程器,以優化 SSD 的效能。 一個常見的建議是使用 SSD 的無操作(NOOP)排程器,但你應該使用像 iostat 這類工具來監控你的工作負載的磁碟 I/O 效能。

許多虛擬機是以暫存磁碟建立,該磁碟儲存在主機上的實體磁碟上。 它 不會 儲存在儲存裝置裡,可能會在重開機或其他虛擬機生命週期事件中被刪除。 只將此磁碟用於暫存數據,例如頁面或交換檔案。 對於 Linux 虛擬機,暫存磁碟為 /dev/disk/azure/resource-part1,掛載位置為 /mnt/resource 或 /mnt。

網路

網路元件包含下列資源:

  • 虛擬網路: 每台虛擬機都部署到一個虛擬網路中,並被分段成子網。

  • 網路介面卡(NIC): 網卡將虛擬機連接到虛擬網路,處理所有進出流量。 每個 虛擬機大小 定義了最大網卡數量。

  • 公共 IP 位址:可以使用公共 IP 位址透過 SSH 從 Azure 外部與虛擬機通訊。 然而,這種選項被不建議,因為它可能存在安全風險。

    Warning

    避免直接將公開 IP 位址附加到虛擬機上。 僅 在極端情況下使用,並包含其他安全措施,例如使用網路安全群組(NSG)來過濾流量。

    若要管理虛擬機,請使用 Azure Bastion 進行瀏覽器式 SSH 存取,或透過 VPN 或 Azure ExpressRoute 私密連線。

    • 公用IP位址可以是動態或靜態的。 預設值為動態。 當你需要一個固定且不會改變的 IP 位址時,可以保留一個 靜態 IP ,例如你需要建立 DNS 'A' 紀錄或將該 IP 位址加入安全清單。

    • 您也可以為IP位址建立完整網域名稱(FQDN)。 接著,您可以在 DNS 中註冊 指向 FQDN 的 CNAME 記錄 。 欲了解更多資訊,請參閱 為虛擬機建立完全限定的網域名稱。

  • NSG: 使用 NSG 來允許或拒絕網路流量給虛擬機和子網。 將它們與子網或連接到虛擬機的個別網卡關聯。

    所有 NSG 都包含一套 預設的安全規則,包括一條阻擋所有入站網路流量的規則。 你無法刪除預設規則,但可以用其他規則覆蓋它們。 例如,你可以建立規則,允許入站網路流量到特定埠口,例如 HTTPS 的 443 埠。

  • Azure 網路位址轉換(NAT)閘道:Azure NAT 閘道 允許私有子網中的所有實例在保持完全私密的情況下,外向連接至網際網路。 只有以回應封包的形式抵達輸出連線的封包才能通過NAT閘道。 不允許來自因特網的未經請求的輸入連線。

    注意

    為了提升預設安全性,所有新虛擬網路的隱式外接網路存取都被棄用。 你需要明確設定外接網路連線,使用其他資源,例如 NAT 閘道、Azure 標準負載平衡器或防火牆。 更多資訊,請參閱 Azure 中的 Default outbound access。

  • Azure Bastion:Azure Bastion 是一個完全託管的平台即服務(PaaS)解決方案,透過私有 IP 位址提供對虛擬機的安全存取。 透過此設定,VM 不需要公開給因特網的公用IP位址,這會增加其安全性狀態。 Azure Bastion 可讓您透過傳輸層安全性 (TLS),使用包括 Azure 入口網站或原生 SSH 或 RDP 用戶端程式在內的各種方法,直接安全地連線到您的 VM,並使用遠端桌面通訊協定 (RDP) 或 SSH。

業務

本節涵蓋管理 Azure 中 Linux 虛擬機的關鍵操作實務。

  • SSH: 在建立 Linux 虛擬機之前,先產生一對 2048 位元的 RSA 公私密金鑰。 當您建立 VM 時,請使用公鑰檔案。 欲了解更多資訊,請參閱 建立並使用 SSH 公私密金鑰對。

  • 診斷: 啟用監控與診斷功能,包括基本健康指標、診斷基礎設施日誌及 開機診斷。 如果您的虛擬機器處於無法開機的狀態,開機診斷可協助您診斷開機失敗問題。 將診斷日誌儲存在儲存帳號中。 標準的本地冗餘儲存體(LRS)帳戶即可記錄診斷日誌。 欲了解更多資訊,請參閱 監測與診斷的最佳實務。

  • 可用性:計畫性維護 或 意外停機 可能會影響你的虛擬機。 你可以利用 虛擬機重啟日誌 來判斷是否因計畫性維護導致虛擬機重啟。 為了提升可用性,可以在區域內的多個虛擬機部署於不同 可用區域 。 此部署提供較高的服務水準協議(SLA)。 當不支援可用性區域時, 可用性集 可以幫助防止主機故障或主機更新。 不過,建議在可能的情況下使用可用性區域。

  • 備用:為了防止意外資料遺失,請使用 Azure 備份 服務將虛擬機備份到儲存空間。 根據地區不同,你可以使用地理冗餘儲存或區域冗餘儲存作為備份。 Azure 備份 提供應用程式一致性的備份。 對於效能敏感的工作負載或不支援傳統備份代理程式的專用 Linux 發行版,可以使用 無代理多磁碟當機一致性備份 功能,自動進行備份保護,同時不影響應用程式效能。

  • 停止虛擬機:Azure 會區分已停止和已解除配置這兩種狀態。 當虛擬機器處於已停止狀態時,仍會收費;但在虛擬機器已解除配置時,則不會收費。 在 Azure 入口網站中,按下 Stop 按鈕會解除配置該虛擬機。 如果你在登入時透過作業系統關閉虛擬機,虛擬機會被停止但 不會 被解除分配,所以你還是要付費。

  • 刪除虛擬機: 如果你刪除虛擬機,可以選擇刪除或保留它的磁碟,這樣就能保留資料。 不過,你還是得付光碟費。 你可以像刪除其他 Azure 資源一樣刪除受管理磁碟。 為防止意外刪除,請使用 resource lock 鎖定整個資源群組或鎖定個別資源,例如虛擬機。

Alternatives

  • Azure 虛擬機器擴展集 提供將工作負載分散到節點的能力。 對業務運作至關重要的工作負載絕不應依賴單一虛擬機。 你可以根據需求自動新增或移除虛擬機實例,並且可以在流量較多時擴展,或在流量較低時擴展,以降低成本。

  • Azure Load Balancer 將流量分配到多個虛擬機或虛擬機擴充集之間。 它也可以作為 NAT 閘道器的替代方案,允許從網際網路存取工作負載,同時支援出站存取。

  • Application Gateway 為 Azure Load Balancer 提供 Azure 區域內 HTTP/HTTPS 工作負載的負載平衡功能。

  • 若為企業級部署,請參閱 Azure 虛擬機器 基準架構於 Azure 登陸區。

案例詳細資料

前述圖示顯示了虛擬網路中單一虛擬機的基本部署。 此情境對於僅內部使用者提供非關鍵工作負載非常有用。

潛在應用情境

這種架構適合不需要公開網路曝光且能容忍偶爾停機的簡單應用。 基本的內部報告工具是典型的使用情境。

考量

這些考量實現了 Azure Well-Architected 框架的支柱,這是一套指導原則,用以提升工作負載的品質。 如需詳細資訊,請參閱 Well-Architected Framework。

Reliability

可靠性有助於確保您的應用程式可以符合您對客戶的承諾。 欲了解更多資訊,請參閱 可靠性設計審查清單。

此範例架構使用單一虛擬機,因此提供最低限度的可靠性。 虛擬機或其運行的主機有任何問題,都會導致停機,並使託管工作負載無法使用。 對於需要更高可用性的工作負載,部署多個包含相同工作負載的虛擬機,並將這些實例置於適當的負載平衡解決方案後方。 如果它們位於同一區域內,請將這些虛擬機部署到可用性區域中(在支援此功能的情況下),並將它們新增至 Azure Standard Load Balancer 的後端集區,或者如果工作負載是以 HTTP/HTTPS 為基礎,則新增至 Application Gateway 的後端集區。 此架構允許工作負載在後端單一虛擬機故障時仍保持可用。

虛擬機擴展集 是另一種簡化多節點工作負載管理的選項,這些工作負載需要根據 CPU 和記憶體消耗等多項指標自動調整實例數量的進出。

高可用性與災難復原(HA/DR)

為了減少爆炸範圍並提升韌性,請在多個區域部署工作負載,並使用 Azure 著陸區指引。 此部署可採用主動-被動配置,若主區域無法使用,則切換至次要區域,或採用主動-主動架構,兩個區域均為消費者提供流量。

舉例來說,請參考為 高可用性與災難復原而建的多層網頁應用程式。 文章中的範例是使用 Azure Site Recovery 將個別虛擬機的磁碟複製到次要區域。 你可以使用 Site Recovery,透過低復原點目標(RPO)和復原時間目標(RTO)將這些虛擬機故障轉移到次要區域。

務必評估你的架構,確保所有元件都能符合 HA/DR 需求,而不僅限於虛擬機。 在所有這些決策中,都應考量網路、身份認同與資料等因素。

安全性

安全提供防範蓄意攻擊及珍貴資料與系統被濫用的防護。 請參閱 安全性設計審查清單 以獲取更多資訊。

在開發架構時請考慮以下幾點:

  • 使用 適用於雲端的 Microsoft Defender 來取得你Azure資源安全狀態的中央視圖。 適用於雲端的 Defender 監控潛在的安全問題,並提供部署安全狀況的全面圖像。 設定 適用於雲端的 Defender per Azure 訂閱並啟用安全資料收集。 適用於雲端的 Defender 會自動掃描該訂閱下建立的虛擬機。

    • 補丁管理:啟用時,適用於雲端的 Defender 會識別缺失的安全及關鍵更新。

    • 反惡意軟體:啟用後,適用於雲端的 Defender 會檢查是否安裝了防惡意軟體。 你也可以直接使用 適用於雲端的 Defender 從 Azure 入口安裝防惡意軟體。

  • 使用 Azure 基於角色的存取控制(Azure RBAC)來控制對Azure資源的存取。 使用 Azure RBAC,你只授予使用者完成工作所需的權限。 例如,讀取器角色可以查看 Azure 資源,但無法建立、管理或刪除它們。 有些權限是針對特定 Azure 資源類型設定的。 例如,虛擬機貢獻者角色可以重新啟動或解除配置虛擬機、重設管理員密碼,並建立新的虛擬機。 其他可能對此架構有用的 內建角色 包括 DevTest Labs 的使用者 與 網路貢獻者。

    注意

    Azure RBAC 不會限制使用者登入虛擬機時能執行的動作。 訪客作業系統上的帳號類型決定了這些權限。

  • 使用 稽核記錄 來查看布建動作和其他 VM 事件。

  • 啟用 主機加密 ,以實現虛擬機資料的端對端加密,包括暫存磁碟和磁碟快取。 主機加密是在虛擬機主機基礎設施上處理加密,且不消耗虛擬機的 CPU 資源,這點與基於訪客的加密不同。 你可以用 客戶管理金鑰搭配 Azure Key Vault 來保存持久作業系統和資料磁碟。 臨時磁碟與 臨時作業系統磁碟 則以平台管理的金鑰加密。 在配置虛擬機前,請確認你選擇的 VM 大小是否支援 host 的加密功能。

成本優化

成本優化著重於尋找減少不必要支出並提升營運效率的方法。 欲了解更多資訊,請參閱成本優化設計審查清單。

視使用量和工作負載而定,VM 大小有各種選項。 該系列包含最經濟實惠的 Bs 系列選項,以及最新為machine learning優化的 GPU 虛擬機。 有關可用選項的資訊,請參閱 Azure Linux VM 價格。

對於可預測的工作負載,計算時使用 Azure Reservations 和 Azure 節省計畫。 一年或三年合約可大幅降低計算成本,相較於按需付費的費率。 對於沒有可預測完成時間或資源耗用量的工作負載,請考慮 [ 隨用隨付] 選項。

Azure Spot VM 會使用 Azure 的閒置容量,並以大幅折扣的價格提供。 Azure 可以在需要容量回還時,短時間內驅逐 Spot 虛擬機,因此它們只適合容錯且沒有嚴格完成期限的工作負載。 考慮使用即時虛擬機用於:

  • 高效能運算案例、批次處理作業或視覺效果轉譯應用程式。
  • 測試環境,包括持續整合和持續傳遞工作負載。
  • 大規模無狀態應用程式。

使用 Azure 定價計算機來預估成本。

卓越營運

卓越營運涵蓋部署應用程式的操作流程,並讓它持續在生產環境中運行。 欲了解更多資訊,請參閱營運卓越的設計審核清單。

使用基礎設施即程式碼(IaC)範本來配置 Azure 資源及其相依性。 你可以使用 Bicep、Azure Resource Manager 或 Terraform 來撰寫這些範本。 這些範本可作為持續整合與持續部署(CI/CD)流程的一部分,透過 自動化部署進行。 此方法提供架構版本控制,確保環境間一致性,並強化可重現性、安全性與合規性。

為了協助監控與診斷問題,請啟用資源的診斷日誌,並將其送至 Azure 監視器 進行分析與優化。 您可以利用這些日誌來實施關鍵事件的警示與通知,有時甚至允許在您的 IT 服務管理(ITSM)系統中自動修復或記錄工單。

效能效率

效能效率是指工作負載能夠有效率地調整以符合使用者需求。 有關詳細資訊,請參閱效能效率的設計審核清單。

效能效率幫助您降低延遲、實現可擴展架構、優化資源利用率,並持續提升系統效能。 你在工作負載架構、虛擬機大小和磁碟配置上的決策,會大幅影響你的工作負載效能。 做出正確的選擇可以避免未來需要重新設計解決方案,增加彈性並節省成本。

在開發架構時請考慮以下幾點:

  • 如果工作負載是動態負載,請使用虛擬機器縮放集。 例如,在流量高峰時逐步擴展,流量減少時再縮小。 此方法確保處理能力充足,同時控制成本。

  • 在處理過程中選擇適當的虛擬機與磁碟 SKU,以滿足所需的 IOPS。 配置快取以進一步提升效能。

  • 如果你的工作負載對延遲特別敏感,可以使用 鄰近配置群組(PPG) 確保多台虛擬機物理上彼此靠近,以提升效能。 你也可以將 PPG 與可用性組合結合,在單一實體資料中心內實現低延遲與高可用性。

  • 在可能的情況下,啟用加速網路以減少元件間的延遲。

  • 設計網路架構以減少不必要的跳躍。

  • 使用 Azure 監視器 及其他工具持續分析指標並建立更新的效能基線。 利用效能資訊判斷哪些地方要實施變更,然後再以這些基準來測試。

Contributors

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。

下一步