使用 NVMe 加速云原生應用程序
譯文云原生應用程序與傳統應用程序或托管在云中的傳統軟件具有不同的存儲需求。為了更加高效地工作,云原生需要高性能和低延遲的存儲。在實踐中,建議使用本地 NVMe? 閃存,而不管編排平臺如何。
云原生應用程序是設計用于在私有云或公共云上運行的軟件,旨在利用云計算軟件交付模型的先天能力。云原生應用程序通常部署為由 OpenStack、VMware vSphere? 管理的虛擬機 (VM) 或由 Kubernetes 管理的容器。
從基礎架構架構師的角度來看,存儲提供的性能越多,就越有可能在無需對存儲系統進行任何更改的情況下擴展云原生應用程序。如果存儲是分散的(不直接連接到服務器),則尤是如此。在這種情況下,架構師可以將更多服務器添加到越來越多的應用程序中,而無需同時擴展存儲。在這種情況下,網絡連接的 NVMe 閃存存儲是滿足高性能和低延遲要求的理想選擇。
云原生應用程序的 NVMe-oF 協議對比
NVMe over Fabrics (NVMe-oF) 為云原生應用程序提供了最佳存儲特性——將 NVMe over 網絡的低延遲和高性能特性擴展到遠程設備。NVMe-oF 存在多種傳輸選項。但是,最常用的是基于遠程直接內存訪問 (RDMA) 的 NVMe-oF、基于光纖通道的 NVMe-oF 和基于傳輸控制協議/互聯網協議 (TCP/IP) 的 NVMe-oF。這三者都支持創建具有高性能和低延遲的端到端 NVMe 存儲解決方案。
- NVMe-oF over RDMA——提供了一種通過網絡在兩臺計算機的主存儲器之間交換信息的方法,而無需涉及任何一臺計算機的操作系統 (OS) 處理器或緩存。
- NVMe over Fibre Channel — 使用標準光纖通道 (FC) 協議在存儲陣列和服務器之間傳輸數據,該協議支持訪問共享的 NVMe 閃存。
- NVMe over TCP/IP — 使用 TCP 傳輸協議跨 IP(以太網)網絡傳輸數據。
標準 | NVMe-oF RDMA | NVMe-oF 光纖通道 | 使用 TCP 的 NVMe-oF (NVMe/TCP) |
間接費用 | 中等的 | 高的 | 低的 |
基礎設施考慮因素和復雜性,包括互操作性和易用性 | 復雜——具有可擴展性限制,需要具有 RDMA 功能的交換機 | 復雜 — 需要專用網絡、FC 交換機和 HBA | 簡單——利用標準 TCP/IP 網絡。這是一種可擴展的方法,不需要特殊的開關。 |
可訪問性 | 有限的 | 有限的 | 任何地方 |
比較基于 RDMA 的 NVMe-oF、基于 FC 的 NVMe-oF 和基于 TCP/IP 的 NVMe-oF,著眼于成本、基礎架構考慮因素和云原生應用程序的可訪問性。
上表比較了 NVMe-oF over RDMA、NVMe-oF over FC 和 NVMe-oF over TCP/IP 作為云原生應用程序的存儲傳輸協議。在開銷成本方面,基于 FC 的 NVMe-oF 成為三者中最昂貴的。這是因為光纖通道需要一個需要 FC 主機總線適配器 (HBA) 的專用網絡。該協議還需要 FC 交換機。與 RDMA 或 TCP 相比,這些項目導致光纖通道的成本更高。
在這三者中,基于 RDMA 的 NVMe-oF 的開銷成本介于光纖通道或 TCP 之間。RDMA 不需要專用網絡,但該協議確實需要特殊的 RDMA 交換機。相比之下,基于 TCP/IP 的 NVMe-oF 不需要自己的交換機、適配器或網絡。因此,在大多數情況下,它是成本最低的選擇。
RDMA 和光纖通道速率在基礎設施復雜性、易用性和可擴展性方面低于 TCP。由于需要 RDMA 交換機,RDMA 面臨可擴展性的限制。由于對 FC 交換機、HBA 和專用網絡的要求,光纖通道同樣復雜。使用單個交換機擴展單個 RDMA 或 FC 存儲機架是一個復雜的過程。在這種情況下,路由限制也會出現。
NVMe over TCP 相對簡單。它只在標準以太網 TCP/IP 網絡上運行。不需要特殊的網絡適配器或交換機。而且,它具有更高的可擴展性和可路由性——易于跨多條路由和不同網絡進行擴展。這種差異還與存儲的可訪問性有關。與 TCP 相比,云原生應用程序對 RDMA 和 FC 存儲的訪問相對較少。基于 TCP/IP 的 NVMe-oF 可在任何地方被云原生應用程序訪問。
用于云原生應用程序的 NVMe-oF 和 Kubernetes
Kubernetes 是一個開源容器編排系統,可自動執行軟件部署、擴展和管理。運行云原生應用程序的服務器可能很容易讓 Kubernetes 運行數十或數百個微服務,這顯然會影響服務器與存儲資源交互的方式。
許多云原生應用程序使用微服務架構,這種架構可以有效地將資源分配給為特定任務設計的較小(微)服務,從而使應用程序靈活且非常適合云軟件架構。
一些云原生應用程序是輸入/輸出 (IO) 密集型應用程序。它們需要高帶寬和低延遲,因此更加需要滿足這些要求的存儲解決方案和協議。其他時候,作為應用程序共同工作的容器可能不需要大量的每秒 I/O 操作 (IOPS) 和低延遲。在云中,可能有數百甚至數千個應用程序作為容器在許多物理服務器上并行運行。總而言之,它們對存儲的高性能以及高帶寬和低延遲提出了要求。
由 Kubernetes 編排的云原生應用程序具有獨特的存儲需求,可以通過 NVMe-oF 來滿足。大多數 Kubernetes 應用程序都是數據密集型應用程序,因此它們需要 NVMe-oF 提供的那種高性能存儲。對于像數據庫這樣的有狀態應用程序尤其如此,這就需要來自存儲的低延遲,以滿足應用程序對于性能的要求。如果應用程序本身要擴展,此類應用程序的存儲也必須能夠輕松擴展。
當 Kubernetes 應用程序可以訪問正確級別的資源時,它們也會表現出色。無論是計算、網絡還是存儲,支持 Kubernetes 應用程序的資源都應該以正確的比例提供。如果應用程序依賴連接到運行 Kubernetes 應用程序的服務器的直連存儲 (DAS),則這是不可能的。幾乎可以保證服務器的 DAS 使用不足或過度使用。從性能或經濟角度來看,兩者都不是可取的。
在這種情況之下,如果存儲不直接連接到運行 Kubernetes 應用程序的服務器,則可以實現計算和存儲的動態、獨立擴展。使用這種方法,Kubernetes 應用程序將始終可以以正確的比例和正確的性能特征使用存儲。
分類存儲還使 Kubernetes 應用程序能夠從任何地方訪問數據。實際上,能夠讓應用程序和存儲變得可移植,因為 Kubernetes 應用程序可以跨不同的服務器運行和移動。一些架構師通過將存儲放置在集群中來解決這個問題,但必須在所有這些地方都可以訪問數據。
基于 TCP/IP 的 NVMe-oF 對云原生應用程序的好處
TCP/IP 上的 NVMe-oF 為云原生應用程序提供了許多好處,除了可訪問性強、開銷成本降低和復雜性降低之外。它提供可充當本地閃存存儲的虛擬化和集中式存儲池。通過這種方法,基于 TCP/IP 的 NVMe-oF 意味著加速的應用程序性能,以及簡單高效的擴展。
對于 Kubernetes 應用程序,正確的基于 TCP/IP 的 NVMe-oF 實施可以提供 DAS 的性能,但通過具有以太網網絡便利性和普遍性的集群存儲解決方案。以太網已經存在于每個 IT 環境中,因此很容易部署便攜式存儲集群。
結論
NVMe 成為云原生應用程序的最佳存儲介質,滿足了 Kubernetes 應用程序和類似云原生軟件的性能需求。在 NVMe 傳輸選項中,基于 TCP/IP 的 NVMe-oF 為云原生工作負載提供了最佳質量組合。與基于 RDMA 或光纖通道的 NVMe-oF 相比,它能夠以更低的成本和復雜性實現高性能存儲。
原文鏈接:??https://dzone.com/articles/accelerate-cloud-native-applications-with-nvme?? 原文作者:Carol Platz