NeonIO 云原生存儲簡介與應用

作者簡介:楊興祥,QingStor 顧問軟件工程師,2012 年開始先后在創(chuàng)新科、華為從事存儲相關的開發(fā)工作,在分布式存儲領域有豐富的開發(fā)經驗,目前負責 QingStor NeonIO 云原生存儲的開發(fā)工作。

NeonIO 是什么

NeonIO 是一款支持容器化部署的企業(yè)級分布式塊存儲系統(tǒng),能夠給 Kubernetes 平臺上提供動態(tài)創(chuàng)建(dynamic provisioning)持久存儲卷(persistent volume)的能力,支持 clone、snapshot、resstore、resize 等功能。

NeonIO 架構圖

file

NeonIO 架構如圖上所示。

  • zk/etcd:提供集群發(fā)現(xiàn)、分布式協(xié)調、選 master 等服務;
  • mysql:提供元數(shù)據(jù)存儲服務,如 PV 存儲卷的元數(shù)據(jù);
  • center:提供邏輯管理服務,如創(chuàng)建 PV 卷,快照;
  • monitor:提供監(jiān)控服務,能夠把采集監(jiān)控指標暴露給 Prometheus;
  • store:存儲服務,處理應用 IO 的功能;
  • portal:提供 UI 界面服務;
  • CSI:提供 csi 的標準 IO 接入服務;

NeonIO 特點

易用性

(1) 組件容器化:服務組件、CSI、Portal 容器化。

(2) 支持 CSI:提供標準的 IO 接入能力,可靜態(tài)、動態(tài)創(chuàng)建 PV。

(3) UI 界面,運維方便:

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

(4) 與云原生高度融合:

  • 支持 Prometheus,通過 ServiceMonitor 把 NeonIO 的采集指標暴露給 Prometheus、Grafana,進行圖形化展示;
  • 同時 UI 界面可與 Prometheus 對接,展示其他云原生監(jiān)控的指標,如 node-exporter 的磁盤 IO 負載、帶寬等;
  • 平臺化的運維方式,存儲的擴容、升級、災難恢復運維操作、只需要 k8s 的一些命令即可完成,不需要額外掌握過多的存儲相關的運維知識;
  • 服務發(fā)現(xiàn)、分布式協(xié)調支持 etcd、元數(shù)據(jù)的管理,使用 CRD 的方式;

(5) 一鍵式部署:helm install neonio ./neonio -- namespace kube-system。
(6) 部署簡單靈活:和 Rook-Ceph 對比:

功能 NeonIO Rook-Ceph
Quick Start 總共 4 步:
1.檢查確保有可給供 neonio 的設備;
2.檢查是否已經安裝 QBD;
3.添加 helm repo;
4.安裝部署:helm install neonio ./neonio --namespace kube-system
總共 5 步:
1.檢查確保有可給供 ceph 的設備;
2.檢查是否已經安裝 RBD;
3.apt-get install -y lvm2;
4.下載代碼:git clone --single-branch --branch master https://github.com/rook/rook.git
5.cd rook/cluster/examples/kubernetes/ceph
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
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 rook/cluster/examples/kubernetes/ceph
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl create -f cluster-test.yaml
使用區(qū)別與集群部署時的另一個配置cluster-test.yaml進行部署,不能做到配置共用
節(jié)點規(guī)劃部署 通過對對應節(jié)點打 label 通過修改 cluster.yaml,需要配置節(jié)點 IP 配置那些服務
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 適配復雜

高性能

(1) 全閃的分布式存儲架構

  • 集群中所有節(jié)點共同承擔壓力,IO 性能隨著節(jié)點增加而線性增長;
  • 存儲介質支持 NVME SSD;
  • 支持 RDMA:通過高速的 RDMA 技術將節(jié)點連接;

(2) 極短的 IO 路徑:拋棄文件系統(tǒng),自研元數(shù)據(jù)管理系統(tǒng),使 IO 路徑極短

file

(3) 使用 HostNetwork 網絡模式

file

好處:

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

高可用

(1) 服務組件可靠性與可用性

  • 管理服務默認使用3副本Pod,副本數(shù)可以配置,推薦使用 3/5 副本,任何一 Pod 因故障無法提供服務,還有其他 Pod 提供服務;
  • 使用探針檢測 Pod 服務是否可用,是否存活,檢測到 Pod 服務部可用剔除組件服務, 檢測到 Pod down 掉后重啟 Pod,使其重新啟動服務;

(2) 數(shù)據(jù)的可靠性與可用性

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

敏捷性

(1) Pod 跨節(jié)點重建高效:2000PV 的掛載/卸載 16s。

(2) 批量創(chuàng)建 PV 能力:2000PV 的創(chuàng)建 5min。

NeonIO 性能表現(xiàn)

測試平臺:NeonIO 超融合一體機集群(3 個節(jié)點,192.168.101.174 - 192.168.101.176)。

注意:所有測試均使用 NVMe SSD,卷大小 = 1TiB。性能工具:https://github.com/leeliu/dbench

file

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

NeonIO 應用場景

  • Devops 場景:批量快速創(chuàng)建/銷毀 PV 能力,2000PV 創(chuàng)建 5min。
  • 數(shù)據(jù)庫場景:WEB 網站后端數(shù)據(jù)庫 MySQL 等提供穩(wěn)定的持久化存儲,提供高 IOPS、低時延。
  • 大數(shù)據(jù)應用分析場景:提供超大容量,PV 可擴容到 100TB。
  • 計算和存儲分離部署場景:k8s 集群 1 部署 neonio,k8s 集群 2 通過 CSI 使用 k8s 集群1的neonio存儲。

相關文章推薦

存儲大師班 | ZFS存儲池塊管理與事務模型
對象存儲手把手教四 | Bucket 生命周期管理

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容