编辑推荐: |
本文主要讲解了架构设计概念、云平台核心架构设计特点、区域、集群、物理机及主存储。
本文来自于博客园,由火龙果软件Linda编辑、推荐。 |
|
1.1 架构设计介绍
1.全异步架构:异步消息、异步方法、异步HTTP调用。
使用消息总线进行各服务的通信连接,在调用服务时,源服务发消息给目的服务,并注册一个回调函数,然后立即返回;一旦目的服务完成任务,就会触发回调函数回复任务结果。异步消息可以并行处理。
服务之间采用异步消息进行通信,对于服务内部,一系列相关组件或插件,也是通过异步方法来调用,调用方法与异步消息一致。
采用的插件机制,给每个插件设置相应的代理程序。 为每个请求设置了回调URL在HTTP的包头,任务结束后,代理程序会发送应答给调用者的URL。
基于异步消息、异步方法、异步HTTP调用这三种方式, 构建了一个分层架构,保证了所有组件均能实现异步操作。
基于全异步架构机制,单管理节点的 每秒可并发处理上万条API请求,还可同时管理上万台服务器和数十万台云主机。
2.无状态服务:单次请求不依赖其他请求。
的计算节点代理、存储代理、网络服务、控制台代理服务、配置服务等,均不依赖其他请求,一次请求可包含所有信息,相关节点无须维护存储任何信息。
使用一致性哈希环对管理节点、计算节点或者其他资源以UUID为唯一ID进行认证的哈希环处理,消息发送者无需知道待处理消息的服务实例,服务也无须维护、交换相关的资源信息,服务只需单纯的处理消息即可。
管理节点间共享的信息非常少,两个管理节点即可满足高可用性和可扩展性需求。?无状态服务机制让系统更为健壮,重启服务器不会丢失任何状态信息,数据中心的弹性扩展和伸缩性维护更为简单。
3.无锁架构:一致性哈希算法。
一致性哈希算法保证了同一资源的所有消息均被同一个服务实例来处理。这种聚合消息到特定节点的方法,降低了同步与并行的复杂度。
使用工作队列来避免竞争锁的问题,串行任务以工作队列的方式保存在内存中,工作队列可对任意资源的任意操作进行并行处理来提高系统并行度。
基于队列的无锁架构,使得任务可以简单地控制并行度,从而提升系统性能。
4.进程内微服务:微服务解耦。
使用消息总线对各服务进行隔离控制,例如,云主机服务、身份认证服务、快照服务、云盘服务、网络服务、存储服务等。所有的微服务都集合在管理节点的进程内,各服务之间利用消息总线进行交互,所有消息发送到消息总线后,再通过一致性哈希环选择目的服务进行转发处理。
进程内微服务,以星状架构实现各服务独立运行,将高度集中的控制业务进行解耦,实现了系统的高度自治和高度隔离,任何服务出现故障并不影响其他组件。可靠性与稳定性得到有效保障。5.全插件结构:插件支持横向扩展。
使用中任何新加入的插件对目前其他的插件没有任何影响。均是独立自主提供服务。
支持策略模式和观察者模式进行插件设计。策略插件会继承父类的接口然后执行具体实现;观察者插件,会注册listener进行监控内部的业务逻辑的事件变化,当应用内部发现事件时,插件会对此事件做出自响应,在插件自身的代码里执行相应的业务流。
支持插件的横向扩展,云平台可以快速更迭,而整体系统架构依然健壮。
6.工作流引擎:顺序管理,出错回滚。
工作流基于XML对每个工作流程进行清晰定义,在任何步骤出现错误均可按照原本执行路径进行回滚,清理掉执行过程的垃圾资源。
每个工作流还可以包含子工作流用于扩展业务逻辑。
7.标签系统:支持业务逻辑变更,增加资源属性。
支持利用系统标签和插件机制对原本的业务逻辑进行扩展变更。
使用标签机制,可对资源进行分组划分,支持对指定标签进行资源搜索。
8.瀑布流架构:支持资源的级联操作。
使用CascadeFramework对资源管理进行瀑布状的级联操作,对资源进行卸载或者删除时,会对相关的资源进行级联操作。
资源也可以通过插件形式加入到瀑布框架中,加入或者退出瀑布框架,并不影响其他资源。?级联机制使得
的配置灵活轻便,快速满足客户资源配置的变更。
9.全自动化Ansible部署:Ansible无代理自动部署。
10.全API查询:任意资源的任意属性均可查询。
支持数百万个条件的资源查询,支持全API查询,支持任意组合。
1.2云平台核心架构设计特点
主要包括以下资源:
区域: 中最大的一个资源定义,包括集群、二层网络、主存储等资源。
集群:一组物理主机(计算节点)的逻辑集合。
物理主机:也称之为计算节点,主要为云主机实例提供计算、网络、存储等资源的物理服务器。?主存储:用于存储云主机磁盘文件(包括:根云盘、数据云盘、根云盘快照、数据云盘快照、镜像缓存等)的存储服务器。支持本地存储、NFS、SharedMountPoint、SharedBlock、Ceph类型。
镜像服务器:用于保存镜像模板的存储服务器,支持镜像仓库、Sftp、Ceph类型。
VXLANPool:VXLAN网络中的Underlay网络,一个VXLANPool可以创建多个VXLANOverlay网络,这些Overlay网络运行在同一组Underlay网络设施上。
二层网络:对应于一个二层广播域,进行二层相关的隔离。一般用物理网络的设备名称标识。支持L2NoVLANNetwork、L2VLANNetwork、VXLANNetwork类型。
三层网络:云主机使用的网络配置,包含了IP地址范围、网关、DNS、网络服务等。
计算规格:云主机的CPU、内存、磁盘带宽、网络带宽的数量或大小规格定义。
云盘规格:云主机使用的云盘的大小规格定义。
云主机:运行在物理主机上的虚拟机实例,具有独立的IP地址,可以访问公共网络,运行应用服务,是 的核心组成部分。
镜像:云主机或云盘所使用的镜像模板文件,镜像模板包括系统云盘镜像和数据云盘镜像,其中系统云盘镜像支持ISO和Image类型,数据云盘镜像支持Image类型。
根云盘:安装云主机操作系统的磁盘,用于支撑云主机的系统运行。
数据云盘:为云主机提供了额外的存储空间,用于云主机的存储扩展。
快照:采用增量机制对云盘在特定时间点上的数据进行备份。?网络服务模块:用于提供网络服务的模块。在UI界面已隐藏。
网络服务:给云主机提供的各种网络服务,主要包括安全组、虚拟IP、弹性IP、端口转发、负载均衡、IPsec隧道等。
安全组:给云主机提供三层网络防火墙控制。
云路由规格:指定云路由器使用的CPU、内存、云路由镜像、管理网络、公有网络等资源定义。
云路由器:为云主机提供分布式DHCP、DNS、SNAT、弹性IP、端口转发、负载均衡、IPsec隧道、安全组等各种网络服务的定制云主机。
VPC路由器:基于云路由规格直接创建的路由器,拥有公有网络和管理网络,是VPC的核心。公有网络作为默认网络,用于提供各种网络服务,包括:DHCP、DNS、SNAT、弹性IP、端口转发、负载均衡、IPsec隧道、安全组等。
资源间存在以下关系:
父子关系:一个资源可以是另一个资源的父亲或孩子。例如集群和物理主机,物理主机和云主机。
兄弟关系:拥有同样父资源的资源为兄弟关系。例如集群和二层网络,集群和主存储。
祖先和后裔关系:一个资源可以是另一个资源的直系祖先或者直系后裔。例如集群和云主机,区域和物理主机。
朋友关系:一些资源与资源之间没有以上三种关系,但是这些资源在某些情境下需要分工合作,这时它们是朋友关系。例如主存储和镜像服务器,区域和镜像服务器。
注:主存储和镜像服务器的关系为:
创建VM时,主存储会从镜像服务器下载复制云主机的镜像模板文件作为缓存。
创建镜像时,主存储会将根云盘拷贝到镜像服务器保存为模板。
资源均含有以下基本属性:
UUID:通用唯一识别码UUIDv4(UniversallyUniqueIdentifier)来唯一标识一个资源。
名称:用于标记资源的可读字符串,名称可以重复,一般为必选项。
描述:也称之为简介,用于概述资源,可选项。
创建日期:资源创建的日期。
上次操作日期:资源上次被更新的时间。
资源一般都支持CRUD操作:
创建:创建或者添加新的资源。
查询:读取查询资源信息。
更新:更新资源信息。
删除:删除资源, 使用的瀑布框架级联机制,使得父资源被删除后,相关子资源和后裔资源均会被删除。
1.7云资源池
云主机:运行在物理机上的虚拟机实例,具有独立的IP地址,可以访问公共网络,运行应用服务,是 的核心组成部分。
云盘:为云主机提供存储。可分为:
根云盘:云主机的系统云盘,用于支撑云主机的系统运行。
数据云盘:云主机使用的数据云盘,一般用于扩展的存储使用。
云盘管理主要涉及数据云盘的管理。
镜像:云主机或云盘所使用的镜像模板文件。
镜像模板包括系统云盘镜像和数据云盘镜像。
系统云盘镜像支持ISO和Image类型,数据云盘镜像支持Image类型。
Image类型支持raw和qcow2两种格式。
镜像保存在镜像服务器上,首次创建云主机/云盘时,会下载到主存储上作为镜像缓存。
镜像平台类型决定了创建云主机时是否使用KVMVirtio驱动(包括磁盘驱动和网卡驱动),支持以下类型:
Linux:使用Virtio驱动;?Windows:不使用Virtio驱动,使用Qemu模拟设备。镜像操作系统是未安装Virtio的Windows;
WindowsVirtio:使用Virtio驱动。镜像操作系统是已安装Virtio驱动(包括磁盘驱动和网卡驱动)的Windows;
Other:不使用Virtio驱动,使用Qemu模拟设备。镜像操作系统可以是任何操作系统。
Paravirtualization:使用Virtio驱动。镜像操作系统可以是已安装Virtio驱动的任何操作系统;
镜像路径支持添加URL路径或本地文件上传两种方式:
1.URL:采用指定的URL路径来添加镜像。
支持HTTP/HTTPS方式
С諪TP/SFTP方式
镜像服务器上的绝对路径,支持Sftp镜像服务器和镜像仓库
2.本地文件上传:表示选择当前浏览器可访问的镜像直接上传,支持镜像仓库和Ceph镜像服务器。
亲合组
亲和组(AffinityGroup)是一种针对IaaS资源的简单编排策略,可用于保障用户业务的高性能或高可用。
硬件设施
1.3区域
区域: 中最大的一个资源定义,包括集群、二层网络、主存储等资源。
在数据中心中,区域一般对应了一个机房。
区域定义了一个可见的边界,同一区域内的子资源互相可见并且可以形成某种关系,但不同区域内的子资源是不可见的,不能互相发生关系。
如图5:区域资源结构所示,区域中的资源以如下形式组织:
图5:区域资源结构
1.4集群
集群:一组物理机(计算节点)的逻辑集合。在数据中心中,一个集群一般对应了一个机架。
规划集群时,需注意:
1.集群内所有物理机须拥有相同的操作系统;
2.集群内所有物理机须拥有相同的网络配置;
3.集群内所有物理机须能够访问相同的主存储;
4.集群需挂载主存储、二层网络后,才可提供云主机服务;
5.集群的规模,也就是每个集群中可以包含物理机的最大数量,没有限制。
集群和各个资源之间的关系定义如下:
集群|区域
支持多集群操作。可在一个区域内创建多个集群,新增的物理机可以按需添加到不同的集群之中。
集群|主存储和二层网络
集群中可以加载或卸载主存储和二层网络,它们之间的结构关系如图6:集群、主存储、二层网络的关系所示:
储和二层网络加载到集群时需注意:
1.集群|主存储
一个主存储可以加载到多个集群。
一个集群可以挂载多个主存储。
主存储可以被所在集群中的所有物理机访问。
如果数据中心的网络拓扑发生改变导致主存储不能被集群中的物理机继续访问时,主存储可以从集群卸载。
2.集群|二层网络
一个集群可以加载一个或多个二层网络;一个二层网络可以挂载到多个集群。
集群可以挂载VXLANPool,VXLANPool下不同的Vni可用于创建不同的VxlanNetwork。
一个网卡只能创建一个NoVlanNetwork。
对于VlanNetwork,不同VLANID代表不同的二层网络。
如果数据中心的网络拓扑发生改变导致集群中的物理机不再在二层网络所代表的物理二层广播域中,二层网络也可以从集群卸载。
集群|镜像服务器
集群与镜像服务器没有直接依赖关系,一个镜像服务器可以为多个集群提供服务。
注:
集群中所加载的主存储和镜像服务器具有相关性。
Ceph主存储支持与镜像仓库类型的镜像服务器一同工作。
主存储(PS)和镜像服务器(BS)的相关性如表
3.主存储与镜像服务器的关系所示:
1.5物理机
物理机:也称之为计算节点,主要为云主机实例提供计算、网络、存储等资源的物理服务器。
如图7:物理机所示:
图7:物理机
物理机是 云管理平台里的核心资产,云主机运行在物理机之上。
1.6主存储
主存储:用于存储云主机磁盘文件(包括:根云盘、数据云盘、根云盘快照、数据云盘快照、镜像缓存等)的存储服务器。
如图8:主存储所示:
图8:主存储
主存储支持类型可分为以下两大类:
本地存储(LocalStorage):使用物理机的硬盘进行存储。
网络共享存储:支持NFS、SharedMountPoint、Ceph、SharedBlock类型。
NFS为网络文件系统的存储方式。
SharedMountPoint支持常用的分布式文件系统提供的网络共享存储,支持的常见类型有MooseFS、GlusterFS、OCFS2、GFS2等。
Ceph采用了分布式块存储方式。
SharedBlock采用了共享块存储方式。
2.2.2.5镜像服务器
镜像服务器:用于保存镜像模板的存储服务器。
镜像服务器必须挂载到区域之后,区域中的资源才能访问它。通过镜像服务器,可在多个区域之间共享镜像。
如图9:镜像服务器所示:
图9:镜像服务器
注:
UI界面为便于管理镜像服务器和区域的关系,特别设置了一个镜像服务器只能对应一个区域。UI界面上,添加镜像服务器,默认会挂载到当前区域;删除区域的同时会直接删除挂载此区域的镜像服务器。
镜像服务器的类型
镜像服务器支持以下类型:
1.ImageStore(镜像仓库):
以镜像切片方式存储镜像文件,支持增量存储;
支持云主机的在线/关机快照、在线/关机创建镜像;
不带数据云盘克隆云主机时,支持在线/暂停/关机克隆;
整机克隆时,LocalStorage、NFS、SMP和Ceph类型的主存储,支持在线/暂停/关机克隆;SharedBlock类型的主存储,支持暂停/关机克隆;
ImageStore类型的镜像服务器间支持镜像同步。
支持获取已有镜像,可获取该镜像服务器中URL路径下的已有镜像文件。
镜像服务器|主存储
镜像服务器的类型与主存储的类型有关联性要求,如主存储与镜像服务器关系所示 |