产品架构

系统架构

ZStack ZStone具备业界领先的性能、可靠性和可管理性,能够支持大型企业及运营商实现数十PB级以上容量的存储资源池。

ZStack ZStone产品架构具有以下优点:
  • 高度云集成:块存储可对外提供RBD云计算接口,对接各种虚拟化和云原生平台,提供云基座。对象存储提供完全匹配云原生环境的能力,支持在私有云、公有云、混合多云、边缘环境上部署,提供无缝一致的数据体验。
  • 全方位监控:提供独立的监控体系,实现从硬件到网络的全方位实时监控,帮助用户及时掌握存储性能,保障数据安全。
  • 低硬件依赖:软件定义存储,支持普通x86服务器、利旧服务器、信创服务器等硬件的资源池化,减少供应商锁定。
  • 高性能:以SSD设备作为缓存,充分利用SSD低延迟、高IOPS的特性为后端HDD进行加速;性能和容量随服务器规模呈线性增长。
  • 高可靠:通过副本和纠删码等技术,保证在服务器宕机时不丢失数据;采用强一致写,保证数据一致性。
ZStack ZStone产品逻辑架构如图 1所示:
图 1. 产品架构


硬件设备层

ZStack ZStone分布式存储软件目前支持以x86、信创x86(海光)作为底层硬件平台,同时支持利旧共池,保护既有IT资产。
  • 硬盘:兼容主流企业级SATA SSD、NVMeSSD、SATA HDD。
  • 网络:兼容主流千兆、10G、25G网卡及交换机。

平台层

ZStack ZStone通过故障域算法解决存储服务中的一致性哈希问题。简单而言,故障域算法在原来的哈希算法之上增加了物理部署逻辑和集群状态参数,使得在发生集群数据迁移变化时,根据物理部署情况最小化数据迁移量。比如根据输入的物理逻辑拓扑,故障域算法可以选择性地进行服务器内部迁移,或者在同一个机架/核心交换机内迁移,大大减小了迁移造成的资源损耗。同时根据集群状态进行数据分布,能够充分兼容不同的存储设备。

数据层

ZStack ZStone采用自研缓存技术,支持使用企业级SATA SSD或NVMe SSD对后端HDD盘进行读写缓存,将高频访问的热数据存储在高速SSD设备,将冷数据通过智能刷盘策略动态调整到低速HDD设备。既提升了存储集群的整体性能,又为上层业务提供了海量存储空间。
  • 写数据:对于数据的写操作,系统数据首先写到SSD的写缓存中,所有副本写缓存成功后,I/O立即返回。数据缓存均匀分布到各台服务器的数据盘上。同时,数据盘会周期性地将缓存在SSD Cache中的写I/O数据批量写入到硬盘,周期未到之前若超过预定水位也会写入硬盘。
  • 读数据:对于数据的读操作,ZStack ZStone将RAM Cache与SSD Cache 一同构成多级Cache机制,降低热数据对HDD的访问频次,同时提升存储集群的读性能。
  • 数据刷盘策略:刷盘是指将写入SSD的数据通过缓存组件写入到后端硬盘上。刷到硬盘之后,原来驻留在SSD中的数据仍可以提供读命中,不会立即失效。除非缓存模块判定其为不经常被访问的冷数据,才会被回收。
图 1所示:
图 1. 存储节点


围绕自研缓存技术,ZStack ZStone为用户提供了丰富的运维功能和特性:
  • 支持同一平台下的多存储池管理。
  • 支持自定义存储池数据冗余类型,包括副本、纠删码。
  • 支持自定义拓扑及多级故障域,包括服务器、机架、机房。
  • 支持自定义数据重构场景下的存储池恢复QoS策略。
  • 支持统一管理原生存储卷及第三方存储卷。

接口层

ZStack ZStone的接口层提供以下两种接口类型:
  • 块存储:通过RBD接口,向操作系统、云平台、数据库提供虚拟卷设备。
  • 对象存储:通过S3接口,向第三方应用提供S3非结构化数据存储服务。

业务层

ZStack ZStone支持通过块存储接口、对象存储接口对接上层业务。

典型业务对接场景包括:
  • 虚拟化云平台:支持对接ZStack CloudZStack Cube等。
  • 云原生平台:支持通过CSI插件,对接ZStack ZakuZStack EdgeZStack RDS等。
  • 第三方应用:支持通过S3接口对接有非结构化数据存储需求的应用场景,例如视频监控、医疗影像、备份归档等。

核心组件

ZStack ZStone分布式存储系统遵循主从架构,由多个Master和Node组成,整个ZStack ZStone可以被划分为控制面和控制面管理的众多Node。

图 1所示:
图 1. 核心组件


分布式调度组件

分布式调度组件是一款常用的分布式系统组件,它作为一个任务引擎,利用ZStack ZStone提供的持久化和通信能力,实现了工作流编排、客户端/服务器架构、状态管理等一系列功能。分布式调度组件用于对ZStack ZStone系统中的业务任务进行统一调度,实现了工作流编排和调度,同时也实现了分布式任务的收集和分发。

zstone-master

zstone-master组件是ZStack ZStone最重要的核心组件之一,提供了平台的全部API能力。该组件安装在管理节点,为平台管理提供RESTful API接口,以及认证授权、许可证服务、准入控制等安全校验功能,同时也负责ZStack ZStone集群的业务能力。

zstone-master组件具有以下特点:
  • 支持HA模式。
  • 与数据面解耦,支持与数据面分离部署。
  • 提供基于Swagger的标准RESTful API接口文档。

zstone-ui

zstone-ui组件基于React.JS框架,采用微前端的架构,部署在Nginx服务器上,提供Web界面供用户访问登录。通过调用RESTful API接口,实现从Web界面上操作ZStack ZStone中的资源。由于采用微前端的架构,可以更容易与其他虚拟化云平台、云原生平台对接,实现无缝衔接ZStack ZStone的管理页面。

zstnlet

zstnlet组件安装在计算节点上,主要负责与管理节点之间的通信,以及执行被调度到该计算节点上的任务。zstnlet组件采用基于gRPC的通信协议,在提升效率和稳定性的同时,避免了安全风险和漏洞。

zstnlet组件负责对各种计算资源的调度和管理,包括服务器、硬盘、数据盘、存储池、数据卷等。同时,它还负责对计算节点上其他服务的生命周期管理,如服务器的启停、数据节点拉起等。

zstnctl

zstnctl组件是ZStack ZStone分布式存储平台中独立的管理工具,主要用于运维人员进行一些底层运维工作。

zstnctl组件主要包括以下三种管理工具:
  • 存储集群管理工具,支持对存储集群的服务和配置进行管理,包括:
    • 配置管理,批量下发集群中的配置。
    • 监控节点服务管理,批量启停监控服务。
    • 管理节点服务管理,批量启停管理服务。
    • 对象存储网关服务管理,批量启停对象存储网关服务。
    • 集群清理工具,一键清理当前集群。
  • 对象存储清理工具,支持一键清理对象存储所有相关资源,包括对象用户、存储桶、对象存储系统资源池等。
  • 集群缓存配置工具,支持批量修改集群中的缓存配置。

zstnadm

zstnadm组件是ZStack ZStone的服务管理工具,主要负责ZStack ZStone服务跨版本升级功能和版本内升级功能。

zstone-alertmanager

zstone-alertmanager组件主要负责为ZStack ZStone提供告警消息。该组件安装在管理节点,通过与Promethues联动,当组件发现有监控指标异常且满足告警规则时,便会生成告警消息,并向ZStack ZStone的相关API接口推送告警消息。

zstone-pushgateway

zstone-pushgateway组件安装在管理节点,主要负责汇总ZStack ZStone上所有服务器的监控指标,提供给Promethues采集。Promethues通过访问zstone-pushgateway组件提供的HTTP接口,获取监控数据。