在雲原生場景下構建企業級存儲方案

引言

隨着雲原生技術日益普及的今天,在 Kubernetes 上運行無狀態應用已經非常成熟,平滑擴展能力也很強,但對於有狀態的應用,數據需要持久化存儲,這還有很大提升的空間,面臨着很多挑戰。

雲原生存儲的挑戰

上圖是 CNCF 對於“在使用/部署容器的過程中遇到的挑戰”做出的調查報告。根據報告的結果,可以總結出雲原生存儲遇到的挑戰表現在以下幾個方面:

  • 易用性:存儲服務部署、運維複雜,雲原生化程度低,缺少與主流編排平臺整合
  • 高性能:大量應用 IO 訪問,IOPS 需求高,低時延,性能成爲應用運行效率瓶頸
  • 高可用:雲原生存儲已經應用到生產環境,需要高可靠/高可用,不能出現單點故障
  • 敏捷性:PV 快速創建、銷燬、平滑的擴展/收縮,PV 隨 Pod 遷移而快速遷移等

常見雲原生存儲解決方案

Rook-Ceph:Rook-Ceph 是一個可以提供 Ceph 集羣管理能力的 Operator,使用底層雲原生容器管理,調度和編排平臺提供的功能來執行其職責。

OpenEBS:OpenEBS 存儲控制器本身就運行在容器中。OpenEBS Volume 由一個或多個以微服務方式運行的容器組成。

優勢

1.與雲原生編排系統的融合,具有很好的容器數據卷接入能力; 2.完全開源,社區較爲活躍,網絡資源、使用資料豐富,容易入手;

劣勢

Rook-Ceph 不足:

  • 性能差:IO 性能、吞吐、時延等方面都表現欠佳,很難應用在高性能服務場景;
  • 維護成本高:雖然部署、入門簡單,但組件多,架構複雜,排錯困難,一旦運行中出現問題解決起來非常棘手,需要有很強的技術團隊加以保障;

OpenEBS-hostpath 不足:沒有高可用功能,單點故障; OpenEBS-zfs-localpv 不足:在磁盤上安裝 zfs,然後在 zfs上 創建 vol,也是沒有高可用功能;

因此多在企業內部測試環境,很少用於持久化關鍵應用數據,部署到生產環境中;

NeonIO 爲什麼適合雲原生存儲

NeonIO 簡介

NeonIO 是一款支持容器化部署的企業級分佈式塊存儲系統,能夠給 Kubernetes 平臺上提供動態創建(Dynamic Provisioning) 持久存儲卷(Persistent Volume) 的能力,支持 Clone、Snapshot、Restore、Resize 等功能,NeonIO 的結構圖如下:

NeonIO 包括的服務組件如下:

  • zk/etcd: 提供集羣發現、分佈式協調、選 master 等服務
  • mysql:提供元數據存儲服務,如 PV 存儲卷的元數據
  • center:提供邏輯管理服務,如創建 PV 卷,快照
  • monitor: 提供監控服務,能夠把採集監控指標暴露給 Promethus
  • store:存儲服務,處理應用 IO 的功能
  • portal:提供 UI 界面服務
  • CSI:提供 csi 的標準 IO 接入服務

下面從以下幾個方面來看 NeonIO 爲什麼適合雲原生存儲:

易用性

  1. 組件容器化:服務組件、CSI、Portal 容器化

  2. 支持 CSI:提供標準的 IO 接入能力,可靜態、動態創建 PV

  3. UI 界面,運維方便:

    • 存儲運維操作界面化、告警、監控可視管理;
    • 有基於 PV 粒度的性能監控,如 IOPS、吞吐量,可以快速定位到熱點 PV;
    • 有基於 PV 粒度的 Qos,能夠保證用戶高優先級的服務質量;

  1. 與雲原生高度融合:

    • 支持 Promethus,通過 ServiceMonitor 把 NeonIO 的採集指標暴露給 Promethus、Grafana,進行圖形化展示
    • 同時 UI 界面可與 Promethus 對接,展示其他雲原生監控的指標,如 node-exporter 的磁盤 IO 負載、帶寬等
    • 平臺化的運維方式,存儲的擴容、升級、災難恢復運維操作、只需要 Kubernetes 的一些命令即可實現,不需要額外掌握過多的存儲相關的運維知識
    • 服務發現、分佈式協調支持 etcd、元數據的管理,使用 CRD 的方式
  2. 一鍵式部署:: helm install neonio ./neonio --namespace kube-system

  1. 部署簡單靈活:和 Rook-Ceph 對比:
功能 NeonIO Rook-Ceph
節點規劃部署 通過對對應節點打 label 通過修改 cluster.yaml,需要配置節點 IP 配置那些服務
Quick Start 總共 4 步:<br>1.檢查確保有可給供 neonio 的設備;<br>2.檢查是否已經安裝 QBD;<br>3.添加 helm repo;<br>4.安裝部署: helm install neonio ./neonio --namespace kube-system 總共 5 步<br>1.檢查確保有可給供 ceph 的設備;<br>2.檢查是否已經安裝 RBD;<br>3.apt-get install -y lvm2<br>4.下載代碼:git clone --single-branch --branch master<br>https://github.com/rook/rook.git<br>5.cd<br>rook/cluster/examples/kubernetes/ceph<br>kubectl create -f crds.yaml -f common.yaml -f operator.yaml<br>kubectl create -f cluster.yaml
單機 all-in-one helm install neonio ./neonio --namespace kube-system --set sc.rep_count=1 --set center.servers=1 -- cd<br>rook/cluster/examples/kubernetes/ceph<br>kubectl create -f crds.yaml -f common.yaml -f operator.yaml<br>kubectl create -f cluster-test.yaml<br>使用區別與集羣部署時的另一個配置 cluster-test.yaml 進行部署,不能做到配置共用
RDMA/TCP helm install neonio ./neonio --namespace kube-system --set store.type=RDMA ceph 本身支持 RDMA,rook-ceph 不支持
管理、存儲網絡分離/共有 helm install neonio ./neonio --namespace kube-system --set store.port=eth0 --set rep_port.port=eth1 ceph 本身 pubic、cluster 網口的分離公用,rook-ceph 適配複雜

高性能

性能單 PV IOPS 100K,時延亞毫秒。

  1. 全閃的分佈式存儲架構

    • 集羣中所有節點共同承擔壓力,IO 性能隨着節點增加而線性增長
    • 存儲介質支持 NVME SSD
    • 支持 RDMA:通過高速的RDMA技術將節點連接
  2. 極短的 IO 路徑:拋棄文件系統,自研元數據管理系統,使 IO 路徑極短

  1. 使用 HostNetwork 網絡模式

好處:

  • Store CSI Pod 使用 HostNetwork,直接使用物理網絡,減少網絡層次
  • 管理網絡、前端網絡、數據同步網絡分離,避免網絡競爭;

高可用

  1. 服務組件可靠性與可用性

    • 管理服務默認使用 3 副本 Pod,副本數可以配置,推薦使用 3/5 副本,任何一 Pod 因故障無法提供服務,還有其他 Pod 提供服務
    • 使用探針檢測 Pod 服務是否可用,是否存活,檢測到 Pod 服務部可用剔除組件服務,檢測到 Pod 死掉後重啓 Pod,使其重新啓動服務
  2. 數據的可靠性與可用性

  • Volume 分片爲 Shard
  • 每個 Shard 獨立選擇存儲位置
  • 每個 Shard 的 3 個副本存儲在不同的物理節點上
  • 寫入時同步寫入 3 個副本,強一致
  • 讀取時只從主副本讀
  • 副本數按 volume 可配

敏捷性

  1. Pod 跨節點重建高效:2000PV 的掛載/卸載 16s
  2. 批量創建 PV 能力:2000PV 的創建 5min

NeonIO性能表現

Teststand: NeonIO hyper-converged all-in-one cluster (3 nodes, 192.168.101.174 - 192.168.101.176)

Note: All tests use NVMe SSDs. Volume size = 1TiB. Performance tool: https://github.com/leeliu/dbench

圖中黃色表示的是 NeonIO,第一張圖縱座標是 IOPS,第二張圖縱座標是毫秒,從結果來看,無論是單副本還是 3 副本,NeonIO 在 IOPS、時延都有明顯的優勢。

NeonIO應用場景

  1. Devops 場景:批量快速創建/銷燬 PV 能力,2000PV 創建 5min
  2. 數據庫場景:WEB 網站後端數據庫 MySQL 等提供穩定的持久化存儲,提供高 IOPS、低時延
  3. 大數據應用分析場景:提供超大容量,PV 可擴容到 100TB

本文由博客一文多發平臺 OpenWrite 發佈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章