系统架构

ZStack作为新一代产品级私有云管理平台,通过提供灵活完善的APIs来管理包括计算、存储和网络在内的数据中心各种资源。


ZStack功能架构

ZStack功能架构如图 1所示:

图 1. ZStack功能架构


ZStack提供了对企业数据中心基础设施的计算、存储、网络等资源的管理,底层支持KVM和VMware虚拟化技术,支持DAS/NAS/SAN/DFS等存储类型,支持本地存储、NFS存储、SAN存储、分布式块存储,支持VLAN/VXLAN等网络模型。

ZStack的核心云引擎,使用消息总线同数据库MariaDB及各服务模块进行通信,提供了云主机管理、物理主机管控、存储调度、网络功能、账号计费、实时监控等功能。ZStack还提供了Java和Python的SDK,且支持RESTful APIs进行资源调度管理。基于ZStack打造的专有云管理平台充分体现专有云的4S优势,即:简单Simple、健壮Strong、弹性Scalable、智能Smart。

ZStack核心架构设计特点:

  1. 全异步架构:异步消息、异步方法、异步HTTP调用。
    • ZStack使用消息总线进行各服务的通信连接,在调用服务时,源服务发消息给目的服务,并注册一个回调函数,然后立即返回;一旦目的服务完成任务,就会触发回调函数回复任务结果。异步消息可以并行处理。
    • ZStack服务之间采用异步消息进行通信,对于服务内部,一系列相关组件或插件,也是通过异步方法来调用,调用方法与异步消息一致。
    • ZStack采用的插件机制,给每个插件设置相应的代理程序。ZStack为每个请求设置了回调URL在HTTP的包头,任务结束后,代理程序会发送应答给调用者的URL。
    • 基于异步消息、异步方法、异步HTTP调用这三种方式,ZStack构建了一个分层架构,保证了所有组件均能实现异步操作。
    • 基于全异步架构机制,单管理节点的ZStack每秒可并发处理上万条API请求,还可同时管理上万台服务器和数十万台云主机。
  2. 无状态服务:单次请求不依赖其他请求。
    • ZStack的计算节点代理、存储代理、网络服务、控制台代理服务、配置服务等,均不依赖其他请求,一次请求可包含所有信息,相关节点无须维护存储任何信息。
    • ZStack使用一致性哈希环对管理节点、计算节点或者其他资源以UUID为唯一ID进行认证的哈希环处理,消息发送者无需知道待处理消息的服务实例,服务也无须维护、交换相关的资源信息,服务只需单纯的处理消息即可。
    • ZStack管理节点间共享的信息非常少,两个管理节点即可满足高可用性和可扩展性需求。
    • 无状态服务机制让系统更为健壮,重启服务器不会丢失任何状态信息,数据中心的弹性扩展和伸缩性维护更为简单。
  3. 无锁架构:一致性哈希算法。
    • 一致性哈希算法保证了同一资源的所有消息均被同一个服务实例来处理。这种聚合消息到特定节点的方法,降低了同步与并行的复杂度。
    • ZStack使用工作队列来避免竞争锁的问题,串行任务以工作队列的方式保存在内存中,工作队列可对任意资源的任意操作进行并行处理来提高系统并行度。
    • ZStack基于队列的无锁架构,使得任务可以简单地控制并行度,从而提升系统性能。
  4. 进程内微服务:微服务解耦。
    • ZStack使用消息总线对各服务进行隔离控制,例如,云主机服务、身份认证服务、快照服务、云盘服务、网络服务、存储服务等。所有的微服务都集合在管理节点的进程内,各服务之间利用消息总线进行交互,所有消息发送到消息总线后,再通过一致性哈希环选择目的服务进行转发处理。
    • 进程内微服务,以星状架构实现各服务独立运行,将高度集中的控制业务进行解耦,实现了系统的高度自治和高度隔离,任何服务出现故障并不影响其他组件。可靠性与稳定性得到有效保障。
  5. 全插件结构:插件支持横向扩展。
    • ZStack使用中任何新加入的插件对目前其他的插件没有任何影响, 均是独立自主提供服务。
    • ZStack支持策略模式和观察者模式进行插件设计。策略插件会继承父类的接口然后执行具体实现;观察者插件,会注册listener进行监控内部的业务逻辑的事件变化,当应用内部发现事件时,插件会对此事件做出自响应,在插件自身的代码里执行相应的业务流。
    • ZStack支持插件的横向扩展,云平台可以快速更迭,而整体系统架构依然健壮。
  6. 工作流引擎:顺序管理,出错回滚。
    • ZStack工作流基于XML对每个工作流程进行清晰定义,在任何步骤出现错误均可按照原本执行路径进行回滚,清理掉执行过程的垃圾资源。
    • 每个工作流还可以包含子工作流用于扩展业务逻辑。
  7. 标签系统:支持业务逻辑变更,增加资源属性。
    • ZStack支持利用系统标签和插件机制对原本的业务逻辑进行扩展变更。
    • 使用标签机制,可对资源进行分组划分,支持对指定标签进行资源搜索。
  8. 瀑布流架构:支持资源的级联操作。
    • ZStack使用Cascade Framework对资源管理进行瀑布状的级联操作,对资源进行卸载或者删除时,会对相关的资源进行级联操作。
    • 资源也可以通过插件形式加入到瀑布框架中,加入或者退出瀑布框架,并不影响其他资源。
    • 级联机制使得ZStack的配置灵活轻便,快速满足客户资源配置的变更。
  9. 全自动化Ansible部署:Ansible无代理自动部署。
    • ZStack使用Ansible进行无代理的全自动化安装依赖、配置物理资源,部署代理程序,全过程对用户透明,无须额外干预,可透过重连代理程序对代理进行升级。
  10. 全API查询:任意资源的任意属性均可查询。
    • ZStack支持数百万个条件的资源查询,支持全API查询,支持任意组合。

ZStack资源结构

ZStack在本质上是云资源的配置管理系统。ZStack管理的相关资源在结构上如图 1所示:
图 1. ZStack资源结构


ZStack主要包括以下资源:
  • 区域:ZStack中最大的一个资源定义,包括集群、二层网络、主存储等资源。
  • 集群:一组物理主机(计算节点)的逻辑集合。
  • 物理主机:也称之为计算节点,主要为云主机实例提供计算、网络、存储等资源的物理服务器。
  • 主存储:用于存储云主机磁盘文件(包括:根云盘、数据云盘、根云盘快照、数据云盘快照、镜像缓存等)的存储服务器。支持本地存储、NFS、Shared Mount Point、Shared Block、Ceph类型。
  • 镜像服务器:用于保存镜像模板的存储服务器,支持镜像仓库、Sftp、Ceph类型。
  • VXLAN Pool:VXLAN网络中的Underlay网络,一个 VXLAN Pool可以创建多个VXLAN Overlay网络,这些Overlay网络运行在同一组Underlay网络设施上。
  • 二层网络:对应于一个二层广播域,进行二层相关的隔离。一般用物理网络的设备名称标识。支持 L2NoVLANNetwork、L2VLANNetwork、VXLANNetwork类型。
  • 三层网络:云主机使用的网络配置,包含了IP地址范围、网关、DNS、网络服务等。
  • 计算规格:云主机的CPU、内存、磁盘带宽、网络带宽的数量或大小规格定义。
  • 云盘规格:云主机使用的云盘的大小规格定义。
  • 云主机:运行在物理主机上的虚拟机实例,具有独立的IP地址,可以访问公共网络,运行应用服务,是ZStack的核心组成部分。
  • 镜像:云主机或云盘所使用的镜像模板文件,镜像模板包括系统云盘镜像和数据云盘镜像,其中系统云盘镜像支持ISO和Image类型, 数据云盘镜像支持Image类型。
  • 根云盘:安装云主机操作系统的磁盘,用于支撑云主机的系统运行。
  • 数据云盘:为云主机提供了额外的存储空间,用于云主机的存储扩展。
  • 快照:采用增量机制对云盘在特定时间点上的数据进行备份。
  • 网络服务模块:用于提供网络服务的模块。在UI界面已隐藏。
  • 网络服务:给云主机提供的各种网络服务,主要包括安全组、虚拟IP、弹性IP、端口转发、负载均衡、IPsec隧道等。
  • 安全组:给云主机提供三层网络防火墙控制。
  • 云路由规格:指定云路由器使用的CPU、内存、云路由镜像、管理网络、公有网络等资源定义。
  • 云路由器:为云主机提供分布式DHCP、DNS、SNAT、弹性IP、端口转发、负载均衡、IPsec隧道、安全组等各种网络服务的定制云主机。
  • VPC路由器:基于云路由规格直接创建的路由器,拥有公有网络和管理网络,是VPC的核心。公有网络作为默认网络,用于提供各种网络服务,包括:DHCP、DNS、SNAT、弹性IP、端口转发、负载均衡、IPsec隧道、安全组等。
ZStack资源间存在以下关系:
  • 父子关系:一个资源可以是另一个资源的父亲或孩子。例如集群和物理主机,物理主机和云主机。
  • 兄弟关系:拥有同样父资源的资源为兄弟关系。例如集群和二层网络,集群和主存储。
  • 祖先和后裔关系:一个资源可以是另一个资源的直系祖先或者直系后裔。例如集群和云主机,区域和物理主机。
  • 朋友关系:一些资源与资源之间没有以上三种关系,但是这些资源在某些情境下需要分工合作,这时它们是朋友关系。例如主存储和镜像服务器,区域和镜像服务器。
    说明: 主存储和镜像服务器的关系为:
    • 创建VM时,主存储会从镜像服务器下载复制云主机的镜像模板文件作为缓存 。
    • 创建镜像时,主存储会将根云盘拷贝到镜像服务器保存为模板 。

ZStack资源均含有以下基本属性:

  • UUID:通用唯一识别码UUIDv4(Universally Unique Identifier)来唯一标识一个资源。
  • 名称:用于标记资源的可读字符串,名称可以重复,一般为必选项。
  • 描述:也称之为简介,用于概述资源,可选项。
  • 创建日期:资源创建的日期。
  • 上次操作日期:资源上次被更新的时间。

ZStack资源一般都支持CRUD操作:

  • 创建:创建或者添加新的资源。
  • 查询:读取查询资源信息。
  • 更新:更新资源信息。
  • 删除:删除资源,ZStack使用的瀑布框架级联机制,使得父资源被删除后,相关子资源和后裔资源均会被删除。
下载ZStack企业版

您已填写过基本信息?点击这里

姓名应该不少于两个字符
手机号格式错误
公司名称不应该少于4个字符
邮箱格式错误

下载链接将会通过邮件形式发送至您的邮箱,请谨慎填写。

下载ZStack企业版

还未填写过基本信息?点击这里

邮箱或手机号码格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io
申请ZStack多机版
姓名应该不少于两个字符
手机号格式错误
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。 当您收到电子邮件后,请点击 URL 链接,以完成下载。

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。
或点击下方URL链接 (IE内核浏览器请右键另存为), 完成下载:

感谢您使用 ZStack 产品和服务。

成功提交申请。

我们将安排工作人员尽快与您取得联系。

感谢您使用 ZStack 产品和服务。