Categories
程式開發

「深度解析」告訴你如何選擇容器存儲


隨著容器技術在生產環境中越來越多被使用,實際用戶應用正在從無狀態應用程序擴展到需要持久化存儲支持的有狀態應用程序。 IT技術專業人員需要知道如何選擇適合在容器中運行有狀態應用程序的存儲。我們深度解讀Gartner報告,就存儲類型及應用類型兩個維度來幫技術專業人員分析容器存儲的選擇。

01 容器存儲分類

自2013年Docker技術出現以來,容器的持久存儲需求逐漸顯現。近些年,存儲供應商一直在提供各種類型的存儲用於在容器和外部存儲系統之間建立直通連接的存儲插件。

CSI的引入大大加強了容器存儲生態系統,因為它標準化了外部存儲系統與許多容器編排系統的集成。使用基於CSI的驅動程序,一個容器化的有狀態應用程序不需要知道關於底層存儲系統的任何信息,應用程序只需將其數據寫入文件系統或塊設備的容器存儲卷,而容器編排系統將透明地處理存儲編排和調度的事情。

2018年12月,雲原生計算基金會(CNCF)發布了Kubernetes 1.13,CSI正式GA,使得CSI可以在該平台上使用。因此,基於Kubernetes的編排平台現在可以無縫集成任何為存儲產品或服務實現CSI的第三方驅動程序。

「深度解析」告訴你如何選擇容器存儲 1

接下來,我們需要了解一下所有能夠提供容器存儲卷的方法:

服務器本地存儲:固定在容器正在運行的主機上的存儲傳統存儲設備:由其他供應商提供的容器存儲驅動程序配置的SAN、NAS或超融合系統(HCIS)平台分佈式文件系統:由多個服務器提供的統一命名空間的共享文件系統容器原生存儲:一種軟件定義的容器化存儲系統,專門為容器化應用程序提供數據管理雲塊存儲服務:IaaS平台的塊存儲服務雲文件存儲服務:IaaS平台的文件存儲服務

「深度解析」告訴你如何選擇容器存儲 2

02 容器化應用分析

容器化應用分類

在容器環境下,每個容器化的應用程序必須實現在啟動時確定其數據狀態的流程,以及與其他應用程序實例協調狀態的流程。下表顯示了可以部署在容器中的有狀態應用程序的示例。

「深度解析」告訴你如何選擇容器存儲 3

適合容器化的有狀態應用程序可以分為以下幾個類,每個類具有不同的集群化特徵:

SQL數據庫:MySQL和PostgreSQL等開源數據庫深受雲原生應用程序開發人員的歡迎。傳統SQL數據庫通常使用HA集群配置,當HA集群部署在容器中時,可以使用容器編排系統自動重新啟動失敗的數據庫實例——只要容器在故障轉移之後與原始存儲重新連接。

NoSQL數據庫:NoSQL數據庫是為超大規模設計的非關係型數據庫。這類數據庫具有模塊化、特性,將它們部署到容器中非常簡單。容器可以使用編排系統進行管理,使用數據複製來確保在組件實例失敗時數據副本仍然可用。

分析:分析應用程序,如Elasticsearch、Solr和Spark,使用集群等方式來做負載均衡及維護可用性。它們的核心組件通常適合在容器中部署, Elasticsearch可以執行自己的數據複製;Hadoop和Spark依賴Hadoop分佈式文件系統來同步對數據的訪問。

內容管理:內容管理應用程序(如Drupal和WordPress)在數據庫(如MySQL或PostgreSQL)中維護它們的狀態。

CI/CD:容器可用於構建CI/CD工具(如Jenkins)。 Jenkins使用主從模型構建分佈式集群,它用一個文件目錄來維護其狀態。因此,有必要使用共享文件系統在運行在不同主機上的容器之間共享該目錄。

數據處理:數據處理應用程序,如圖形繪製和視頻轉碼工具,都可以使用應用程序實例集群化來處理大型批處理作業。它們通常依賴於共享文件系統來協調分佈式任務的狀態和傳輸數據。

Kafka流處理平台是個例外,它使用自己的複制機制在實例之間共享數據。如果應用程序實例失敗,它的數據仍然對其他實例可用,而不依賴於共享存儲。

高性能計算:當這些應用程序部署在容器中時,可以使用容器編排來調度它們的多個實例,以便跨主機集群並行處理任務。與數據處理應用程序一樣,HPC應用程序通常依賴於並行共享文件系統在應用程序實例之間傳輸數據。

機器學習:容器適用於部署ML應用程序,比如TensorFlow。 TensorFlow使用分佈式計算處理不同進程中的圖形部分,每個進程都可以在單獨的容器中運行。

03 應該使用哪種容器存儲?

我們該怎樣選擇適合的容器存儲呢?在選擇存儲之前,需要回答以下問題:

應用程序將使用集群架構嗎?應用程序集群將使用複製或共享存儲進行數據同步嗎?應用程序使用什麼數據格式?應用程序是否需要高級數據服務?應用程序容器的啟動和停止的頻率是多少?應用程序部署的基礎架構(公有云、私有云、混合雲)?

集群架構

容器化應用程序使用的數據同步方法從根本上決定了持久化存儲方案。對於獨立應用程序和無共享集群方法(基於主從復製或多主機複製),Gartner建議將容器存儲卷綁定到提供最高性能的本地存儲資源。

在本地,使用容器主機上的硬盤,這些硬盤不需要通過網絡。在雲計算中,使用能提供最高性能的存儲服務,共享存儲。

對於需要共享存儲的應用程序,應該選擇NAS或者分佈式文件系統解決方案。

在本地,可以使用傳統的NAS設備,也可以使用分佈式文件系統產品。在雲計算中,使用雲平台提供的本地文件服務。但是,這種方法不一定會產生最大的性能,因為公有云中的文件服務本質上必須通過多租戶網絡訪問。容器原生存儲解決方案可保證容器運行中的可伸縮性和可靠性,同時還提供企業數據管理特性。

存儲數據類型

根據容器存儲驅動程序的實現,容器存儲卷有以下兩種方式來對容器編排提供存儲資源:

塊:塊存儲卷,將作為容器內部的一個虛擬塊設備出現。這些設備直接通過FC、FCoE、小型計算機系統接口(SCSI)或Internet SCSI (iSCSI)等底層協議。塊存儲主要提供給管理塊級數據的數據庫服務。文件:使用文件系統掛載的捲,它將作為容器內的目錄出現。容器化的應用程序使命令(如打開、關閉、創建和刪除)與存儲進行通信。

高級的數據服務

在生產環境中,一些企業應用程序需要高級數據服務,比如加密、快照、備份和DR。

隨著有狀態應用程序的容器化,一些應用可能需要重新設計數據服務。例如,可能要求能夠跨集群備份和恢復該容器的存儲卷。在公共雲中,可能需要跨區域複製,或者將存儲卷備份到雲服務的對象存儲服務。在這些情況下,在遷移或恢復之後,都需要有通過一些方法將存儲卷與容器重新綁定。

容器的生存期

有狀態應用程序有不同的存儲需求,還取決於以下幾點:

應用規模應用的性能需求(吞吐量或延遲)容器的生命週期及啟動和停止運行的頻率

根據Datadog對Docker採用情況的調查,容器的啟停頻率是vm的12倍,平均使用壽命為2天(而vm為23天)。

高啟停頻率的系統會帶來數據持久化的挑戰,因為有些存儲系統的設計目的不是處理容器存儲資源的頻繁、快速供應和回收。容器啟停後可能面臨跨服務器重新掛載數據的挑戰。焱融科技YRCloudFile就這一問題單獨做了改進,適應容器高頻啟停的挑戰。

部署基礎設施:公有云、私有云或混合雲

容器不管在共有云環境還是在私有云環境中,同樣能運行得很好。根據風險分類、策略、工作負載需求或延遲和帶寬需求,可以將數據放在公有云或者私有云環境中。

04 YRCloudFile,我們為容器做了什麼?

自從雲原生計算基金會(CNCF) 對Kubernetes 1.13 版本正式GA了Container Storage Interface (CSI),國內一些SDS廠家也紛紛宣布對CSI接口的支持。焱融科技是國內最早支持CSI容器存儲接口的廠商之一,也是國內首家進入CNCF Landscape存儲圖譜的廠商。

「深度解析」告訴你如何選擇容器存儲 4

YRCloudFile是一款分佈式文件系統,可以部署在私有云或者公有云中。使用分佈式文件系統掛載容器存儲卷的一個關鍵特性是,它們可以由多個容器同時訪問,這些容器可以在同一台主機上或者不同的主機上(ReadWriteMany訪問模式)。此功能允許分佈式文件系統支持需要共享存儲的容器化應用程序。另外,YRCloudFile還支持ReadWriteOnce訪問模式,此模式僅允許單個pod訪問,滿足獨享存儲應用程序(如數據庫應用)的需求。

可以說,YRCloudFile在容器存儲支持上有著天然優勢。為了保持焱融科技在國內容器存儲市場的絕對領先的優勢,YRCloudFile還為容器支持做了什麼?

容器編排對CSI故障的動態感知

YRCloudFile CSI接口對故障動態感知功能,當CSI狀態出現問題時,K8S可標記該Node,從而避免Master節點把新建有狀態Pod分發到該CSI故障Node。從而,單個CSI接口出現故障,不會影響整個Kubernetes集群的效能。

列表及過濾

首先,我們把Kubernetes目錄列表(Pod、PVC、PV)引入了YRCloudFile管理界面,並且以可管理性和可操作性為出發點,支持對相關列表(Pod、PVC、PV)的名稱、容量、label等進行檢索、過濾、排序等。

PV粒度的熱點分析及性能監控和告警

針對實際應用環境中,大量PV共享存儲資源,單個PV熱點無法排查的問題,YRCloudFile做了專門的改進方案,列出top hot spot,方便用戶管理。

另外YRCloudFile還增加了針對每一個PV的性能告警功能,可以針對重點需要監控的PV,設置PV性能告警閾值,實現細粒度的管理和監控。

PV性能QoS

YRCloudFile能夠在管理界面設置持久卷(Persistent Volume)的IOPS和帶寬BW的QoS,從而達到有效利用存儲資源的效果。

光伏洞察

PV Insight功能使用戶可以快速瀏覽三維的PV使用情況,使用PV Insight,通過圖形化的方式,能夠快速查看PV內的數據層次、文件大小、數據溫度,從而幫助用戶對業務進行分析和調整。

光伏調整尺寸

YRCloudFile PV resize功能,不需要將應用程序或服務脫機。只需一個簡單的操作,即可以調整PV的大小。

Prometheus及Grafana支持

YRCloudFile不僅提供自定義的Prometheus exporter,向Prometheus server提供集群監控數據,並且提供基於Grafana的集群監控Web展現模板。用戶可以統一觀察到所有集群的狀態,從而提高運維的效率。

YRCloudFile同城雙活數據中心

企業越來越多地考慮基於容器平台的IT架構,容器平台跨數據中心的需求和場景也越來越多,YRCloudFile創新性地實現了雙活容器存儲、本地優先讀、雙活存儲池加本地存儲池統一管理的功能,為客戶提供了更靈活的IT架構。

焱融科技通過收集實際客戶反饋信息,調研行業主流發展方向,在容器持久化存儲方向不斷改進,致力於為用戶提供一個成熟的容器存儲解決方案。

關於焱融科技

焱融科技是一家以軟件定義存儲技術為核心競爭力的高新技術企業,在分佈式存儲等關鍵技術上擁有自主知識產權,是高性能文件存儲和容器存儲的領導者。焱融科技核心產品YRCloudFile在全球IO500性能測試中,進入世界前六。同時,YRCloudFile是國內首個進入CNCF Landscape的容器存儲產品。焱融科技針對各行業業務特性,打造個性化行業解決方案,提供一站式的產品與服務。焱融科技系列產品已服務於人工智能、金融、政府、製造業、互聯網等行業的眾多客戶。了解更多焱融科技信息,請訪問官網http://www.yanrongyun.com“。