分类 Paas 下的文章

随着云计算的普及,越来越多的企业开始将业务应用迁移到云上。然而,如何构建一套完整的云原生 Serverless 平台,依然是一个需要考虑的问题。

Serverless的发展趋势

云计算行业从 IaaS(基础设施即服务)到 PaaS(平台即服务),再到 Serverless(无服务器)的发展,经历了一个逐渐从底层到上层,从IT基础设施提供商到应用开发者的转移的过程。

IaaS 时代,云计算提供商主要提供基础设施服务,包括计算、存储、网络等,用户需要自己搭建运维应用。这个阶段主要面向IT运维人员和企业内部的应用开发团队。

随着 PaaS 的出现,云计算提供商开始提供更高层次的服务,包括开发框架、数据库消息队列等,用户只需要关注应用开发,无需关心底层设施。这个阶段主要面向应用开发者和创业公司,可以大大提高开发效率和降低成本。

而 Serverless 的出现,则更进一步解放了应用开发者的手脚,将服务器管理交给云计算提供商,应用开发者只需关注业务逻辑的实现,无需关心服务器的管理和维护。Serverless的出现使得应用开发更加灵活和高效,也降低了开发和运维成本,因此受到了越来越多的关注。

总体来看,从IaaS到PaaS再到Serverless的发展,是云计算服务不断向上层抽象和自动化的过程,提高了IT基础设施和应用开发的效率,降低了成本,推动了数字化转型的进程。随着技术和市场的不断变化,未来云计算服务还将不断地向更高层次的抽象和自动化发展。

自建 Serverless 的意义与困境

建设私有化的云原生 Serverless 平台具有重要的意义和必要性。首先,相比于公共云平台,私有化的云原生 Serverless 平台可以更好地满足企业的特定需求,保障数据的安全性和隐私性,同时也能够更好地管理和控制计算资源的分配和利用。其次,随着数字化转型和云原生技术的普及,企业对于 Serverless 架构的需求也越来越大,建设私有化的 Serverless 平台可以更好地满足企业的需求,提高企业的业务效率和运营效果。

然而,建设私有化的云原生 Serverless 平台也具有一定的难点。首先,需要企业拥有一定的技术实力和人才储备,包括云计算、容器、微服务等多种技术的掌握和运用。其次,需要进行系统的架构设计和资源规划,包括容器集群的搭建、网络的配置、存储的规划等。此外,私有化的Serverless平台需要满足高可用、高性能、高安全的要求,需要进行多方面的测试和优化。最后,建设私有化的Serverless平台需要考虑成本的控制和效益的提升,需要综合考虑多种因素,包括硬件设备、软件开发和维护等成本。因此,建设私有化的云原生Serverless平台需要企业在技术、资源、人才和经济等多方面进行全面的规划和考虑,确保平台的稳定性和可持续性。

ServerLess 的特点

目前,Serverless 并没有一个业界统一的标准规范,因为 Serverless 并不是一种具体的技术或架构,而是一种基于云计算的应用运行和部署方式,这种部署方式凸显出开发人员不必关心服务器等基础设施。一般情况下,我们认为一个云原生的 Serverless 平台应该提供以下能力:

  1. 弹性伸缩:平台应该支持应用自动扩缩容,以便应对变化的负载和流量。

  2. 容器编排:平台应该支持容器编排,以方便管理应用的生命周期和资源分配。

  3. 无服务器计算:平台应该支持无服务器计算模式,以提高开发者的效率和降低成本。

  4. 自动化运维:平台应该支持自动化运维,包括自动部署、自动扩容、自动恢复等功能。

  5. 服务发现与负载均衡:平台应该支持服务发现和负载均衡,以确保应用的高可用性和稳定性。

  6. 日志监控和告警:平台应该支持日志监控和告警,以便及时发现和解决应用问题。

  7. 安全管理:平台应该支持安全管理,包括身份认证、访问控制、审计服务等功能,以确保应用的安全性和隐私性。

  8. 自动化CI/CD:平台应该支持自动化CI/CD,以便实现快速迭代和部署。

  9. 多云支持:平台应该支持多云环境,以便应用可以跨多个云平台部署和运行。

如此多的能力要求,为自建云原生 Serverless 平添了不少难度。那么是否可以选择一个开源的方案来完成这个目标呢?

基于 Rainbond 自建

Rainbond 是一款开源的云原生应用管理平台,它可以帮助用户快速构建和管理云原生应用,其很多功能特性都与 Serverless 的无服务器理念不谋而合。Rainbond 提供了一系列的工具和服务,包括应用编排、容器编排、自动化部署、监控告警、应用管理等功能,可以帮助用户实现应用的快速迭代和部署。此外,Rainbond 还支持多语言、多框架、多云环境的部署,用户可以根据自己的需要选择不同的部署方式。

server-1

server-1

原生支持多云管理

Rainbond 可以架设在多种不同的云之上,原生支持多云管理。这种多云管理能力可以帮助用户抹平多种不同云计算供应商之间的差异,提供一致的应用部署、应用管理体验。无论是公有云私有云混合云,对用户而言都变成透明层,用户的应用可以借助Rainbond提供的能力完成跨云的快速迁移。

server-2

server-2

简化应用部署

Rainbond 支持用户部署由不同开发语言开发而来的应用,这个过程不需要用户编写 Dockerfile,不需要了解容器镜像如何打包。被支持的语言类型包括:Java、Python、Golang、PHP、NodeJS、.NetCore以及静态Html语言。用户在操作时仅需要提供代码仓库地址,或者直接上传 Jar、War 包即可将构建任务交给 Rainbond ,后者会自动识别语言类型,并自动配置语言的构建环境与最终运行环境。构建任务完成后,应用会自动运行起来,整个过程不需要用户过多参与。

部署过程中,用户可以自己选择以哪种 Workload 类型来部署应用,Rainbond 除了支持常见的 Deployment、StatefulSet 之外,也支持部署 Job、CronJob 类型的 Workload。

弹性伸缩能力

弹性伸缩能力是 Serverless 场景中最受关注的能力之一,自动化的弹性伸缩能够提升对计算资源的利用率。用户可以借助这种能力,自动化应对业务的峰谷流量。Rainbond 能够根据 CPU/MEM 资源利用情况进行实例数量上的 1-N 自动伸缩,用户仅需要做非常简单的一次设置即可。在更高阶的场景中,Rainbond 能够旁路感知Http业务的平均响应时间、吞吐率等性能指标,并据此实现自动伸缩能力。

微服务能力

Serverless架构与传统的微服务架构类似,都是基于分布式系统的思想,将一个应用拆分成多个小的、相对独立的服务单元来进行开发、部署和管理。而微服务框架可以帮助开发人员更好地设计和开发这些服务单元,提高系统的可维护性、可扩展性和可靠性。Rainbond内置灵活高效的ServiceMesh微服务框架,能够完成跨语言、跨协议、跨架构的微服务编排,并且提供全面的微服务治理、容错机制等能力。

自动化运维

Rainbond提供完善的自动化运维能力,能够极大的解放开发人员。许多应用运维工作都将由平台来接管,包括定时数据备份、健康检测、故障自愈等。

可观测性中心

可扩展的全方位可观测性能力,提供上至应用组件,下至平台的监控视图。全局日志功能与链路追踪能力,能够帮助开发者快速定位问题。实时告警能力,则保证了每一次异常都会得到开发者的关注。

自动CI/CD

Rainbond 能够对接 Git 或 Svn 类型的代码仓库,简化用户创建应用以及配置自动化 Webhook 的流程。开发者仅需要提交一次代码,就可以触动整个CI/CD链条,自动化完成代码更新后的上线。

一键配置网络入口

用户不需要学习复杂的负载均衡配置,仅仅需要一键,就可以开启 L4/L7 的网关策略,将应用的端口对外暴露,平台将会根据要求自动生成 IP:Port 或域名形式的访问地址。

安全管理

平台中采用双因素认证方式保证登录安全,并提供基于 RBAC 的设计方案来确保对应用的权限控制。除此之外,Rainbond 提供全局的操作日志审计功能,保留用户对应用的每一次操作记录。

Rainbond 作为一个开源的云原生应用管理平台,能够帮助企业应对建设私有化的云原生 Serverless 平台的难点。首先,Rainbond 提供了丰富的组件和工具,使得企业可以轻松构建容器集群、微服务架构、CI/CD流水线等,极大地降低了技术门槛。其次,Rainbond 提供了完善的应用管理和监控机制,包括应用部署、服务编排、负载均衡等功能,大大简化了应用开发和运维的工作量,实现了应用管理的自动化和免运维。此外,Rainbond 提供了网关组件,可通过一键即可对外暴露L4/L7层服务,提高了应用的安全性和可访问性。Rainbond 还支持 Job 任务类型或 CrontabJob 定时任务类型,使得企业能够方便地进行定时任务调度。最重要的是,Rainbond 提供了 ServerMesh 微服务框架和内置的应用编排模型,帮助企业轻松实现应用拓扑的编排和管理,实现应用的快速迭代和更新。此外,Rainbond 还能够对接 Git 类型代码仓库,实现自动化 CI/CD 流程,进一步提高了开发效率和运营效果。

写在最后

通过借助 Rainbond 建设私有化的云原生 Serverless 平台,企业能够更好地应对技术难点,提高平台的稳定性和可持续性。同时,Rainbond 还提供了完善的文档和社区支持,帮助企业更好地了解和掌握相关的技术和应用。因此,借助 Rainbond 建设私有化的云原生 Serverless 平台不仅能够解决技术难点,也能够提高企业的开发效率、降低运维成本,是建设私有化 Serverless 平台的理想选择。


在开始讨论私有云的架构之前我们首先确定一件事情,即没有架构是完美的,总是根据实际业务慢慢优化最终满足或者超越最初需求。
私有云客户与公有云客户最大的不同是——客户对私有的“云”在管理层面上拥有较大的权限,他(她)可以很放心地把有涉及到公司或者单位隐私的东西放进“云”中,出现意外时自己可以要求管理员随时处理。并且私有云就服务器规模、SLA、防火墙、计费、安全性等级要求等方面而言,与公有云的侧重点不大相同,架构上自然也要区别对待。

本稳会从基本原则、架构安全、“云”化架构三个方面叙述基础架构的设计实现,涉及到的技术细节笔者尽量在后面的基础知识章节部分加以叙述。

1、基本架构原则

基础设施架构的核心即是整合计算、存储与网络三种资源,而在配置这些时我们需要在扩展性、稳定性及冗余性达到一定要求。

稳定性

基础架构的稳定性对于一个平台是至关重要的。存储、网络、计算节点自身的稳定性,以及它们之间通信的稳定性,都时时刻刻影响着用户体验。

即使是稳定性非常好的系统,也应该在平时的运维,即监控以及出现故障时的跟踪、定位、解决上花一定功夫。现在国内很多云平台厂商都没有提供服务状态报告,比如可用性、地域延迟、资源统计等,相比国外的主流平台而言仍有很大差距。

扩展性

扩展性包含两个方面:横向扩展(scale out/in)和纵向扩展(scale up/down)。
集群横向扩展主要包括计算节点、存储、网络资源“节点级别”的扩展,比如新添加了服务器、交换机等整机设备。需要注意的是,节点加入集群后,其上的所有业务均能在新节点正常运行;同时,新节点的加入对普通用户来说是透明的,即用户不会感知到集群的横向扩展。

纵向扩展即是整机中加入例如新的CPU、内存、硬盘、网卡等组件以提高单机性能。

平台在进行横向扩展时,也可使用其他平台的资源。比如企业内现有国际品牌的虚拟化产品,如果国内厂商的虚拟化产品能够直接使用原平台的虚拟机、虚拟硬盘甚至是虚拟网络的话,那么对企业来说,这个过渡将会非常轻松。现在能够提供云平台API的厂商比较多,而能够作为参考标准的只有Amazon、OpenStack、VMWare等国际化平台。笔者成文时,中国信息技术标准化组织目前尚未制定出“及时”的标准,但已经成立了很多的工作组,比如服务器虚拟化、桌面虚拟化、云存储等,相信他们也很快推出统一标准。

冗余性

冗余性是稳定性和扩展性的补充。对于私有云而言,成本往往仅能保证稳定性,而在冗余性保障上有较少的支出。当成本不足以满足所有基础资源的冗余性的时候,就要根据具体环境来判断,尽量保持它们不同资源上冗余能力的平衡,最大程度地减少潜在风险。

1.1 合理的存储配置

私有云中存储配置是整个架构的重点,它承担着整个平台的数据,所以这里一般需要进行重点配置。除了传统存储架构外,也有厂商Nutanix为首提出的超融合架构,即存储与网络一样也可以进行软件定义。目前对多数国内私有云厂商来说,超融合的一般实现即是在虚拟化平台中添加分布式存储的后端与前端管理,可对计算节点资源进行复用,从而降低项目整体成本。

不管何种形式,它们对平台的提供的功能都是相同的,接下来笔者针对私有云平台的存储基础架构予以介绍,相关的存储知识读者可以阅读本书的第7章。

接入方式

私有云中的存储配置按照接入平台的方式可分为本地存储和共享存储,而它们本身的组合方式又是自由的,除传统的本地存储和网络存储外,也有NFS存储可以挂载后作为计算节点的本地存储,或者计算节点上的空闲空间组合为分布式存储等方法。图2-1和图2-2分别是本地存储与共享存储的接入方式示例,本地存储即直接使用本地磁盘或者iSCSI、SAS等设备作为镜像存储,虚拟机实例与镜像在同一主机中,而共享存储下虚拟机实例可在任意主机中打开镜像并运行,从而使得虚拟机热迁移成为可能。

一文解读私有云架构设计基础

图2-1本地存储接入示例

一文解读私有云架构设计基础

图2-2共享存储接入示例

图2-1中有本地硬盘、共享存储/FC/SCSI存储作为本地存储的两种用例;图2-2中节点1直接使用外部存储作为共享存储,节点2和3提供本地硬盘作为Ceph/Glusterfs的存储后端,再使用Ceph/Glusterfs作为共享存储。存储的接入方式对平台性能、稳定性甚至使用体验上都有直接或间接的影响。

当使用共享存储时:

  • 虚拟机可以进行在线迁移,合理利用服务器资源,增加业务连续性;

  • 计算节点宕机不会造成虚拟机单点故障,提高稳定性;

  • 可以更灵活地应用备份机制,并且扩容相对简单,提高可维护性;

  • 可与其它业务或者平台共享存储,提高扩展性;

  • 存储与计算节点逻辑、物理都分离时,架构清晰;

  • 对网络连接路径较为依赖,计算节点增加时可能需要增加线路隔离流量;

  • 可以利用网络缓存机制,减轻启动风暴影响,但对共享存储设备有一定要求;

当使用本地存储时:

  • 虚拟机更加独立,某个用户的过度使用不会造成其它虚拟机的读写性能影响,增强用户体验;

  • 可以利用更高效的本地缓存机制,减轻启动风暴的影响;

  • 存储成本投入较小;

  • 计算节点宕机时会造成其上所有机器不可访问,即单点故障损失较大,影响平台稳定性;

  • 虚拟机在线迁移有难度,难以平衡集群负载;

  • 我们选择接入方式时需要综合考虑业务类型、成本、用户体验、风险控制等等各方面因素,尽量避免对整个平台的稳定性和性能造成负面影响。

存储后端

存储后端即平台存储资源的核心,组成部件不止于机械硬盘、SSD,也包括其通信链路、固件等。存储后端性能与其上的虚拟机紧密相关,当选择不当的时候会降低平台整体性能,而导致用户体验不佳。

一文解读私有云架构设计基础

图2-3 存储节点物理示意图

多数项目方案中既有高速存储设备,又有相对低速的存储设备,我们要根据“业务”来规划存储使用。接下来我们做一次实验,用数据简单说明虚拟机硬盘格式与物理存储的相互影响,其中我们使用一块SSD代表性能较高的高速存储,一块SAS硬盘代表相对低速存储,这里的“业务”是启动链接克隆方式创建的虚拟机并进入桌面。

“完整克隆”与“链接克隆”

在KVM虚拟化平台中,有两种创建实例的常用方式:完整克隆与链接(增量)克隆,在以后章节中会有详细介绍。

完整克隆即完全复制模板配置信息与硬盘文件,硬盘的复制方式一般为cp或者qemu-img convert。如此创建的实例,其硬盘与模板硬盘相对独立,在服务器存储上拥有各自的扇区位置,所以在读写操作时受机械盘磁头引起的小区域并发问题影响 较小,缺点是创建时需要花费一定时间,不能满足秒级创建的需求。

链接克隆即新建虚拟机时只复制模板配置信息,硬盘文件则是以原硬盘为模板的增量硬盘。如此创建的硬盘对模板硬盘的依赖程度较高,对于硬盘内已有文件的读操作(比如启动系统时)绝大部分在模板硬盘上进行,所以在传统机械盘上多个实例的并发启动风暴更容易在此种格式的硬盘上发生。

本次实验环境中,笔者使用一台双路E5-2630v3、128G内存的服务器,两块企业级SSD(其中一块为服务器系统,另一块虚拟机存储)和一块企业级SAS硬盘(虚拟机存储),将1G内存、单核、全新安装的XP虚拟机作为模板。为了防止虚拟机进入系统后进行文件索引等占用空间的操作,模板虚拟机建立之前开机“静置”了一段时间直到其资源用度无明显变化。

  • 企业级1T SAS硬盘虚拟机批量启动实验
    此时新建的实例所和模板都位于SAS硬盘上。同时启动20台虚拟机后,全部虚拟机在第300秒左右进入桌面。启动20台虚拟机过程中的服务器CPU及I/O用度如图2-4所示。

一文解读私有云架构设计基础

图2-4 于SATA硬盘中启动20台虚拟机的CPU及I/O用度

  • 企业级480G SSD虚拟机批量启动实验
    此时新建的实例和模板都位于SSD上。同时启动20台虚拟机后,全部虚拟机在第35秒左右进入桌面。启动20台虚拟机过程中的服务器CPU及I/O用度如图2-5所示。

一文解读私有云架构设计基础

图2-5 于SSD中启动20台虚拟机的CPU及I/O用度

可以看出,高速设备比低速设备拥有更高的IOPS以及更高的读写速度。目前两者成本相差很多,所以全部使用高速存储会增加很多成本。在实际实施中,高速和低速设备搭配使用,比如将高速设备用于存储模板和某些高IOPS虚拟机,低速设备用于存储普通虚拟机,这样从成本和用户体验综合考量,方可获得比较合理的配置。

1.2 稳定的网络基础

一个优秀的IT架构一定有一个优秀的网络基础。网络在私有云尤其是桌面云中的影响有时比存储更加直接。在搭建私有云的过程中,更多的项目是在已有 IT架构的基础上进行延展,而不是厂商独立的架构,所以对整个用户端网络框架有个清晰认识就显得很重要。在我们接触的项目中,有比较多的问题是网络不稳定、框架不合理造成的。虽然我们在项目中极少拥有对用户网络改造的权力,但是也要在网络上下功夫认真规划,并在关键结点与客户及时沟通,尽量减少网络因素带来的诸多“麻烦事”。

图2-6是以业务为核心的通用私有云架构,图2-7则是从计算节点出发网络视图,它们的共同点都是对网络进行了较为严格的区分,但划分标准不同,读者在很多云平台中都会看到类似架构。

一文解读私有云架构设计基础

图2-6 业务为核心的通用架构

一文解读私有云架构设计基础

图2-7 计算节点为中心的网络架构

对于构建一个稳定的网络基础来说,传统OSI七层模型很有参考价值,而侧重协议实现的TCP/IP的四层模型也很实用,在此我们使用它们的混合模型来分层讨论。图2-8是OSI网络模型与TCP/IP模型简图。

一文解读私有云架构设计基础

图2-8 OSI模型与TCP/IP模型

传统OSI在服务、接口、协议有所侧重,但是它由于历史原因以及实现等问题,现在仅仅被人奉为“经典”,具有的参考价值大于实用价值。而 TCP/IP的实现由于其模型简单,很大程度上促进了互联网时代的来临,但是使用它来描述比如说蓝牙网络,基本上是不可能的了。而混合五层模型即吸收了它们的优点,又一定程度上回避了它们的缺点。下图即是混合网络模型简图。

一文解读私有云架构设计基础

图2-9 OSI与TCP/IP混合模型

同存储资源一样,我们在构建私有云网络基础的时候也要关注其稳定、扩展、冗余的能力,同时注意成本,以下笔者将从这5层分别进行介绍。

物理层

在物理层,我们需要做出的选择有传输介质和有线/无线传输方式。

一文解读私有云架构设计基础

表2-1 网络线材分类

在后端资源链路中,一般有计算节点、存储之间,计算节点、网络之间,存储、存储之间以及计算、网络、存储的内部通信链路。其数据量或高或低,对于私有云而言可以采取后端全万兆的链路以减少后端对整个平台产生的短板效应。因为对于私有云而言批量启动是会经常出现的,所以至少计算节点与存储的链路一定要有所保证,从而防止网络带宽成为存储能力的制约影响用户体验。

服务器与前端的链路数据根据私有云业务的而异,主要是控制台画面传输、交互(键鼠输入、外设重定向数据、语音等)、文件传输(云存储)等。一般到客户端汇聚层的链路使用千兆双绞线,到客户端使用千兆/百兆双绞线。

数据链路层与网络层

这两层中我们要关注的部分主要是不同层次的交换机/路由配置、IP、VLAN的划分,除非对于完全自主搭建网络的厂商,否则我们只要了解其基本拓扑和路由配置即可。

目前比较主流的网络规划为环网+星型拓扑,并且按照核心层、汇聚层和接入层区分职责,如下图所示。

一文解读私有云架构设计基础

图2-10 星型+环形网络拓扑

其中有几点需要注意:

  • 组网的有多种,不同规模可以使用不同的混合拓扑;

  • 在私有云的架构中,网络标签更偏向以功能逻辑而不是以地理位置区分。这点在开源云实现中体现的很明显,比如Mirantis OpenStack的
    网络规划以及oVirt的逻辑网络;

  • 由于后端资源链路较多,一般情况下会使用VLAN(tagged/untagged)来进行隔离;

  • 非核心资源尽量采用DNS+主机名的方式进行搭建,防止以后IP变化带来的维护困难;

  • Bonding(链路聚合)是比较常用的增加冗余和带宽的措施,但要注意交换机关于bonding负载均衡的策略,防止bonding无实际效果,比如IP、MAC、TCP Port的组合方式;

  • 交换机尽量采购同一品牌,以免增加运维人员负担;

  • 传输层与应用层

我们需要保持网络稳定高效主要是为了这两层,因为它们对用户接入、桌面协议、业务网络、资源网络、控制协议等有直接影响。
其中,从用户端到云平台需要保持良好通信的有http(s)、spice/vnc等,服务器之间则有ssh、sql、telnet、smtp、pop等之间影响业务等应用层协议。

而在传输层中,经常出现的问题有网络拥堵、过载、超时、延迟等问题。比如当一端等交换机或者设备达不到处理大量报文所需的计算能力时,就会导致丢包或者多次重发的现象;当有错误或者恶意报文进行广播时,局域网所有机器都会返回错误包而导致广播风暴;当有大量机器重启从DHCP服务器获取IP时,也会对服务器造成很大负载;报文的超时时间对应用的影响也很大,过低会导致在网络繁忙时大量应用超时,过高会引起传输效率变低从而影响视频等实时应用卡顿。

在设计时我们需要注意以下几点:

  • 终端/服务器的带宽要尽量保证不低于直接连接的网络带宽,否则当网络端(有意/无意/恶意)发送大量报文时,会造成服务器网卡处理能力的大幅下降,影响其上的应用性能;

  • 适量增加封包大小,减少数据发送次数,从而降低网卡负担;

  • 适量调整报文超时时间,减少网络繁忙时产生拥堵;

  • 在可以压缩协传输层议头甚至数据的条件下优先压缩协议头,从而减少报文传输次数降低流量;

总之,私有云网络设计与传统网络架构设计相比,需要考虑的变量更多。尤其近些年软件定义网络的发展,以及OpenStack、VMWare中网络虚拟化的推进,客户对私有云/公有云对厂商的综合素质要求更高了。

1.3 可靠的计算资源

提供考量计算资源的标准,不止于物理服务器的性能、安全、稳定等因素,还有计算节点组成的集群所具有的能力,比如负载均衡、高可用等。接下来,笔者将根据硬件、软件配置并结合私有云的特性进行计算资源服务器的选择,以其达到最优的计算资源配置。

服务器硬件

一文解读私有云架构设计基础

图2-11 PC服务器一般架构

通常情况下,CPU、内存是决定服务器能够承担多少负载的决定性因素,而存储、NUMA和扩展属性保证着服务器运行的功能性和稳定性。
多数厂商在部署私有云时,往往按照CPU逻辑核总数和虚拟机总核数按 1:X 来分配,当虚拟机有卡顿或者其它情况出现时,再调整比例。而这一点在笔者看来是很不好的习惯,因为它忽略了一些因素,比如CPU最大主频、非NUMA核间数据拷贝代价、虚拟机运行程序时的保证峰值负载等。我们在此使用一个经验公式来计算:

一文解读私有云架构设计基础

其中,sockets、cores、frequency分别代表服务器的物理CPU数量、单CPU线程数、最大主频,当超线程HT打开(为真)时获得20%的提升,否则不提升,cap代表服务器的能力。读者可以访问Intel ARK网站(或手机APP)查询具体的CPU参数。

假设一个Windows 7桌面普通办公流畅的最小负载为2.0Ghz,使用双路Intel E5-2630 v3,则cap为61.44GHz,即我们这台服务器可以保障30台单核Windows 7桌面流畅运行。由于桌面应用程序往往可以利用多核特性,所以我们会考虑分配其双核甚至四核,同时其单核负载下降,亦可以看做2 * 1 Ghz,加之峰值负载下的机器并发量少,我们可以再适当增加虚拟机数量。在选配CPU时,我们要根据实际负载、桌面应用、成本等因素综合考量,尽量减少 CPU性能的瓶颈或者过剩。

NUMA技术和主板CPU省电选项(C1E等)同样也会影响服务器CPU性能。NUMA技术会大幅提高CPU间通信,换句话说,当有较多进程存在时,利用 NUMA可以减少进程在CPU之间切换的时间,一般建议打开。对于高I/O、低CPU利用率的应用,主板使用C1E或者更深度的电源管理选项(C1/C3 /C6)时会较大程度地影响其性能。目前在KVM中,缺少C1E动态开关的选项,所以建议在BIOS设置中关闭此项。

内存技术也是影响虚拟机的重要因素,目前在KVM中可以使用内存气球、巨页、KSM等技术提高内存使用效率。虽然内存可以超分(overcommit),但我们仍然要保证物理内存不小于所有虚拟机分配内存,因为内存不足导致的问题一般比较严重,对于服务器来说甚然。另外,当内存充足时建议关闭swap分区,因为在数据拷贝期间发生交换将带来比较严重的性能损失。

计算节点的硬盘配置可分为系统盘和数据盘,系统盘即运行虚拟化节点所需操作系统的硬盘,数据盘即用于本地存储或者共享存储的硬盘。当采用共享存储时,可以省去服务器数据盘配置。

扩展插槽中可以添加RAID控制器、JBOD控制器、GPU卡、网卡等高速设备。而USB控制器则用于加密狗、U-Key透传等功能。这两项外设扩展在特定的服务器中可以进行额外扩展。

操作系统

计算资源的操作系统首先要做到效率高、稳定性好、兼容性好,其次是无状态、易维护等。

在效率上我们能进行很多比较系统的优化,比较通用的有进程调度、驱动程序优化、I/O优化等。通用的优化做好以后就可能需要对具体硬件进行针对性的驱动、调度优化。通用的优化是可移植的,而针对具体硬件的优化难以保证,所以我们在这两方面应有所取舍。

稳定性是考量系统的重要标准之一,影响它的因素或是系统本身,或是软件,或是硬件。一般私有云厂商在进行实施之前,如有可能会对服务器进行连续中低压测试,确保其稳定性后再进行软件的部署。而服务器硬件兼容性问题伴随着硬件厂商和操作系统厂商(尤其RedHat)的紧密合作,它的出现情况已经比较少了。但是一旦出现兼容性问题,一般都比较难以排查,往往需要硬件厂商提供协助。

所谓无状态操作系统,即我们需要这个计算节点异常断电重启后无需人工干预继续提供服务。它提供了一种类似还原模式的操作系统,降低了系统损坏后难以修复的几率同时减少了运维负担。其实现方式比较多,包括DOM盘、PXE、SQUASHFS等。

至于易维护性的对象,主要针对服务器的状态监视、系统软件修复/升级。

操作系统的选择

目前主流云平台多基于CentOS/RHEL或者Ubuntu系统。其主要原因就是其生命周期与知识库——CentOS每个大版本是10年左右,Ubuntu/Debian为5年,SUSE为10+3年(期限虽长但对应云平台知识库较少)。当然,影响我们对服务器选择的因素中,软件也占据大部分,比如下图就是虚拟化相关软件的通用架构,其中哪部分使用或高或低配置的服务器甚至虚拟机作服务器还是要调研一番更为妥当。

软件服务

在分布式架构中,不同的软件服务一般部署在不同的服务器上,这样就会使单独的软件服务模块更具可维护性和部分性能上的优势。以IaaS为例,常用的软件服务模块如图2-12所示。

一文解读私有云架构设计基础

图2-12 开源云平台虚拟化相关功能软件架构

首先,模拟器会对计算节点的CPU特征有一定要求。以虚拟机迁移为例,现在的虚拟化实现不能进行异构迁移,即虚拟机vCPU不能在迁移后改变其CPU特征,这就要求集群中的计算节点使用统一的CPU特征组启动模拟器,并且所有计算节点的的CPU至少属于同一架构。其次,模拟器会对计算节点的CPU性能有一定要求。私有云中常常会有重点业务虚拟机,它们对CPU性能、内存等计算资源有较高要求,此时我们就需要赋予较高资源优先级,保证它们在资源充裕且状态良好的计算节点上运行。然后,如果虚拟机需要使用常驻的外部设备,那么我们就需要进行设备透传或重定向。而现有的模拟器实现不能在设备已与虚拟机连接的情况下进行迁移,这就只能将此虚拟机在固定的计算节点上运行,从而要求此计算节点需要拥有数量合适的外部设备或接口。最后,某些模拟器的性能会受主板设置的影响,比如CPU电源管理,这就要求计算节点需要针对具体的模拟器类型作出相应设置,保证模拟器性能最优。

需要注意的是集群中的网络组件,以Neutron为例,其OVS节点在网络数据包较多的情况下,会对本地CPU造成不小的压力从而引起网络丢包、延迟现象,而针对这点常用的做法是使用单独的网络控制节点和SDN交换机以分离控制层与数据层,从而保障网络性能的稳定。

至于容器,它运行在Linux服务器中时一般不会对CPU有特殊要求,只要保证核数与主频合适即可。而集群组件,比如Nova、Glance、vdsm等,它们对计算资源要求也比较少。

2、架构安全

当人们讨论安全时,首先想到的可能就是一个复杂的密码,还有不同网站使用不同的密码。作为被各种网站注册页面包围的现代人来说,这是一个好习惯。其实,对一个面向终端用户的系统而言,密码只是它复杂又精密的安全机制体现之一。一个系统安全机制实现的复杂度直接关系到用户数据的安全保障程度,它始终以用户数据为核心,以保障系统自身安全的条件下保障用户数据的安全性,图2-13是私有云环境下的用户接入视图。

一文解读私有云架构设计基础

图2-13 私有云环境用户接入简图

2.1 认证与授权

认证(authentication)与授权(authorization)历来是安全系统重点关注的部分,即使在现实生活中也是这样。认证是发生在用户进入系统时,而授权是在对系统进行操作的过程中。

在传统认证授权系统中,普遍使用AD、LDAP等作为网络信息服务器(NIS),前者是类Kerberos的实现,后者可直接与Kerberos进行结合。私有云需要这种NIS访问方式,以便接入现有业务系统或者启用单点登录(Single Sign On)。Kerberos的认证流程如图2-14所示,其核心是ticket的获取与授权。

一文解读私有云架构设计基础

图2-14 Kerberos认证过程

可以看到用户与服务的认证授权过程很清晰,实现时注意需要用户/服务端/KDC(相当于AD域控)三者时钟同步。当用户进行登录以后,他使用任何应用都不再需要再次输入密码认证,应用程序通过用户第一次获取的key向服务请求对应的权限,并且所有权限都可以进行细分管理。
虽然Kerberos性能、安全性方面都很优秀,但与应用结合时仍需考虑它引入的运维复杂度问题,尤其是在扩展性方面。

2.2 服务安全

对于用户来说,将数据保存在一个放心的环境里能很大程度上减少他们的担心。对于管理员来说,一旦被入侵,那么损失的不止是用户数据了,更有可能丧失用户对整个平台的信任。接下来我们从三个方面来增加我们服务器安全性。

网络安全

网络安全是我们第一个要考虑的事情。从功能上我们将网络划分为用户接入端网络、传输网络、后端网络。我们很难保证用户接入端网络的安全性,所以普遍做法是在传输网络与后端网络上实施安全防护措施,包括加密传输、防DDoS/CC攻击、流量限制等。在私有云环境中,不仅要对外网入口进行防护,更要对局域网进行监控和防护,我们要采取一定措施进行区分。

加密传输

在私有云平台中,所有服务的TCP/IP连接都可以选择性地使用SSL/TSL进行加密。而在进行SSL/TSL加密传输时,有两点需要注意:确保至少有一个可信的根证书颁发机构颁发的根证书,对于小规模私有云来说,可以使用二级可信证书或者自建可信域;谨慎管理私钥及其备份,防止外泄。

防DDoS/CC/SQL注入

整个平台给用户提供的接入方式很可能是一个Web界面,或者REST API的接口,那么就会与传统Web服务器一样面临着被攻击的威胁。和传统服务一样,我们可以使用专门的硬件/软件防火墙以及负载均衡来处理对访问入口的大量并发请求。SQL注入是目前互联网企业最为关注的攻击手段,。技术细节可以市面参考相关书籍与文章,笔者在此不以赘述。

流量控制

私有云的流量限制条件比公有云宽松一些,但是仍要予以高度重视,否则同样会带来体验乃至安全上的严重后果或者事故。平台入口以外的流量我们可以通过外部防火墙进行处理,虚拟机内部的流量往往通过虚拟化平台的流量控制功能进行限制,有些时候也会引入内部防火墙。平台也要对架构中的异常流量有所感知,以通知相关人员进行维护或者防护。

网络安全方面有很多成熟的方案或者产品,我们应根据它们的效能、管理复杂度、平台兼容性等进行综合选择,尽量减少引入私有云时带来的复杂度和成本。

存储介质加密

在此以常见的智能手机为例,用户保存在手机里的数据包括联系人、音视频、照片等,给手机屏幕解锁后,用户可以访问它们。当手机损坏或丢失后,某些心怀不轨的人可能会利用设备复制出手机的闪存内容进行解读。为预防这种比较极端的情况发生,现在的智能手机操作系统中都会有“加密存储”、“远程抹除”等安全选项,当用户选择进行存储加密时,对存储介质的非法直接访问也将变得异常困难(现在的加密key一般存储在手机CPU中)。

上述的场景应用到私有云时,用户的数据即是虚拟机硬盘以及存储于“网盘”上的内容。

一文解读私有云架构设计基础

图2-15 用户数据加密主体

服务器操作系统中存储有虚拟硬盘,在这一层进行加密就意味着即使这台服务器硬盘被取出,也很难读取其中数据;KVM下的虚拟硬盘本身在创建时也支持 AES加密选项,但由于其稳定性欠佳已经被社区渐渐抛弃,截止成文时没有任何改进的措施出现;至于虚拟机OS内,它可以加密虚拟硬盘、数据、目录等等,但是需要用户自己进行选择加密的内容。

数据加密解密的同时一定会带来性能上的些许影响,全部使用服务器OS加密硬盘一定不会适用于所有场景,同样强制用户虚拟机OS加密也不会太妥。当面向安全等级特别高的场景时,使用服务器加密一定是有益的,一般场景下我们提供虚拟机OS加密的建议即可。

服务器设备

我们现在也有很多措施可以专门用来加强服务器本身的安全性,不妨尝试从以下两方面入手:

可信平台模块

可信平台模块(TPM,Trusted Platform Module)由计算机工业的可信计算组(TCG,Trusted Computing Group)制定,旨在提供计算机安全加密设备与技术,用来防止密码、敏感数据被窃取的标准设备。下图为某厂商的TPM模块,附加于专用的主板I/O接口。

一文解读私有云架构设计基础

图2-16 某厂家的TPM模块

它是一个硬件模块,本身提供了各种加解密算法的快速计算,同时可以进行远程认证、数据加密/解密认证,主要应用场景如下:

平台认证

它可以从硬件设备、设备固件、BIOS到操作系统、软件都进行哈希校验,保证系统中没有未经许可的硬件或软件接入。比如接入一个未曾记录过的USB键盘时,它就会记录并按照预配置操作进行处理。

硬盘加密

服务器操作系统可以在其内部使用TPM协助进行硬盘加密,一般需要特定软件实现,比如dm-crypt、BitLocker等。

密码保护

用户的密码、密钥、数据、操作系统等都可以使用它来进行保护。传统软件实现的认证机制往往不能经受字典攻击,而TPM内置了防字典攻击机制,使得所有绕过软件限制的大量尝试登录操作被TPM终结。

目前在私有云中,主流虚拟化平台都提供了对TPM的支持。QEMU中除了TPM透传外,也可以使用QEMU模拟出TPM设备进行加解密。

地理位置标签

使用地理位置标签(Geo-Tag)可以帮助管理人员了解服务器的具体位置,以方便管理维护。它可以配合RFID设备进行短距离细分标识,并且在统一管理平台的帮助下,实现所有设备状态、位置的实时监控。当然它也可以配合TPM组建基于地理位置的可信资源池。

3、“云”化架构

由第一章私有云的定义我们可知,虚拟化只是“云”的实现手段之一,而面对真正的云我们仍需要很多工作。我们接下来讨论的内容就是如何将基础架构“云”化。

3.1 池化资源

池化资源是向“云”迈进的重要一步,这一点我们可以通过社区动态以及商业云产品中窥探到。在前面的基础架构中,我们围绕着计算、存储、网络三个基本元素组建系统,而接下来就需要使用云平台将它们进行“池化”操作,从而提供更具有弹性、更加高效和稳定的的服务。

以服务器为基本载体的三种资源通过各种方式进行组合,提供IaaS、PaaS、SaaS模式的服务。这些服务模式展现给最终用户的有诸如虚拟机、云存储、负载均衡、内容加速、应用框架等具体服务,如图2-17所示。将资源进行池化的好处即是一方面用户不必知道所接受服务的具体来源,同时能够得到稳定、快速的服务响应,另一方面服务提供商对资源也能进行合理的管理与维护。

一文解读私有云架构设计基础

图2-17 典型“云”服务模型

3.2 SLA管理

SLA(Service Level Agreement)即服务等级协议,它通过对资源的限制、配置、调度而保证服务的高可用。

高可用

高可用可以按照其作用对象可分为服务器、虚拟机以及虚拟机内应用程序。

在服务器层面,我们通过评分、隔离、电源管理等机制保证虚拟机运行在一个稳定的环境中。评分即通过监视服务器的资源当前及历史状态,对其进行综合评价,分数越高具有运行虚拟机的权利。隔离操作一般发生在服务器与集群管理节点失去联系时,为保证服务质量而将其从服务集群中隔离不再运行虚拟机,一般配合电源管理进行操作。

虚拟机层面的高可用往往需要对其添加模拟看门狗。看门狗是一种辅助芯片,在嵌入式系统中常用来监控CPU状态,当CPU停止工作后看门狗就不会再收到CPU发来的心跳信号而将CPU强制重启。对于PC而言,看门狗将系统重启的条件多是蓝屏、死机等。

对于虚拟机内的应用程序的高可用,可以通过外部监控(比如端口状态监测)和内部监控(比如虚拟机代理程序)完成。这方面的监控产品比较多,主流的有 Nagios/Icinga和Zabbix等,它们都需要在虚拟机内按照代理程序,当某一应用被监测到停止响应时,就可以使用管理员提前设置的策略尝试重启此应用。

资源限制

资源限制即是对允许用户使用的最大资源进行限制,包括虚拟机数目、CPU、内存、硬盘、网络等。这里的限制按照对象可以划分为两个方面,一是用户允许使用的总资源配额,二是虚拟机在运行时所允许的资源最大利用率。

比如在一个用户可以自己创建虚拟机的环境中,管理员往往难以控制其创建删除行为,如果能对用户创建的所有虚拟机数目、vCPU数目、内存大小、硬盘大小、网络带宽进行配额限制的话,那就既能满足用户的自主性又可适当减少管理员负担了。这种限制有些类似操作系统中的配额限制,它主要体现在对“量”的限制上。

但是对“量”的限制还不能满足私有云的需求,那么就要从“质”上进行限制了。如果用户拥有足够的服务资源配额,那么当他的虚拟机长期满负荷运行时(比如网络发包、硬盘高IOPS直写、CPU利用率高居不下等),就会对与其处在同一台服务器上的虚拟机造成比较严重的影响。为了其他用户的体验考虑,我们引入了利用率的限制,包括CPU利用率(CPU数目与其利用率乘积)、硬盘利用率(IOPS、MBPS)、网络利用率(百分比)等。

当用户的资源将要超过配额或者较长时间内高利用率使用时,平台同样需要对其发出警告,防止其系统发生崩溃、恶意入侵等意外情况。
读者可能会在很多地方读到关于将PaaS平台搭建在IaaS平台上的资料,但是我们需要了解这样做的原因主要是考虑到了资源的隔离控制,而不是资源用度方面,所以其高可用性较之以物理机直接接驳容器工具方式有一定劣势。

资源配置

资源配置往往是一个动态的过程,它通过一系列策略对虚拟机的CPU、内存、网络、硬盘的使用进行控制,以期最有效地利用服务器资源。
当一个多核虚拟机运行时,它会有多个LWP(轻量级进程,可理解为线程)协同父进程运行。比如一个双路32核的服务器上运行一个单路32核的虚拟机,往往就会有多于33个LWP在运行(可用ps -eLf查看)。而这些LWP在未指定的情况下往往会在核之间漂移,然后由于进程同步和上下文切换对虚拟机性能造成比较大的损失,当使用率提高时也会对其他进程产生比较严重的影响。为了解决这一类性能损失,我们引入p-vCPU绑定与NUMA机制。

另外我们还可对每个虚拟机vCPU进行优先级安排,较高优先级的vCPU拥有更多的CPU时间。这一特性由于其收益较小,在私有云中适合于极端优化场景。

对于内存的配置,我们同样可以利用KSM(Kernel SamePage Merging)配合内存气球技术提高内存使用效率并达到内存“超分”(over committing)的效果。从KSM可以看出其字面意思,即合并虚拟机所占用虚拟机的相同内存页以节约服务器内存占用,如图2-18。内存气球即假设虚拟机的实际占用内存为气球体积,服务器总内存为装有许多气球的盒子,占用内存即为盒子中的空闲体积。当气球变小时,盒子空闲体积变大,就有更多的空间可以供给其他气球及服务器使用,反之亦然,如图2-19。

一文解读私有云架构设计基础

图2-18 KSM原理

一文解读私有云架构设计基础

图2-19 内存气球技术

资源调度

资源调度的过程按照虚拟机的生命周期可分为两部分进行,一是用户请求服务后服务资源后池中分配合适的资源提供服务,我们称之为启动策略;二是当提供的服务达到调度阈值后,为了服务的质量保证而进行的自动调度或者手工调度,我们称之为运行时策略。资源调度是考虑一个云平台质量的重要指标。为了实现私有云的资源调度策略,我们需要的操作通常有对虚拟机的迁移、开关机、挂起,以及对服务器的开关机、隔离,再结合定时、分级、排序、统计、反馈机制,套用到不同的场景中去。接下来我们从启动策略、运行时策略开始,讨论它们可能用到的机制和具体操作。

启动策略的实现或简单或复杂,目前在私有云中最基本的有两种:

快速启动

平台首先对服务器按照其所剩资源进行排序,比如第一个列表为所有服务器剩余内存从高到低的排序,第二个列表为所有服务器CPU剩余未分配核数从高到低的排序。当虚拟机请求资源准备启动时,它从第一个列表中发现服务器甲、乙、丙满足其CPU核数要求,从第二个列表中发现服务器甲、丁满足其 内存要求,那么虚拟机就会在服务器甲上启动,原理如图2-20。类似这种快速启动策略实现起来比较容易,效果也能满足大多数场景。

一文解读私有云架构设计基础

图2-20 快速启动示意图

最优启动

同样地,平台也会对服务器进行排序,但是这次排序除了考虑剩余资源,也会考虑已用资源。当虚拟机请求资源准备启动时,平台根据剩余资源 选择一组可用的服务器,然后再计算出这个虚拟机在这些服务器上运行的话单个服务器的资源百分比是否超过预设阈值,然后它会选择一个资源百分比变化最小的服务器上启动虚拟机,原理如图2-21。最优启动在实现时,往往会结合运行时策略进行调度,尽量减少虚拟机或者服务器的后期运行时调度。

一文解读私有云架构设计基础

图2-21 最优启动示意图

启动排队

在启动策略中为减少“启动风暴”的发生,我们往往会引入排队机制。每台服务器会根据其当时负载状况选择一定时间窗口内可 以允许多少台虚拟机启动,待这些虚拟机启动完成对硬盘和CPU的负载降低后后,再启动下一批虚拟机。在一个监控机制较完善的平台下,排队机制中的变量(队列长度、窗口时间等)可以根据服务器状态进行动态调整。

运行时策略可以从很多角度进行设计,比如服务器利用率、电源能耗、用户负载等,常用的有如下两种:

  • 平均分布:平均分布即要求所有服务器上的负载(虚拟机数目、资源用度)尽量相同,对于负载过高的服务器就会迁移其上的某些虚拟机至其他负载较低的服务器。这样做的目的是降低局部负载,保持虚拟机所处环境的平等。

  • 低能耗:这种策略有两种实现,第一种要求所有虚拟机运行所占用的服务器数目尽可能少。它先将虚拟机从多台服务器上集中迁移到某些台服务器,然后再 将其他服务器关机以达到省电的目的。第二种则不要求服务器关机,但是会让闲置的虚拟机释放CPU、内存资源,它通过定期检测桌面连接或应用连接,挂起较长时间无连接的虚拟机。在私有云桌面环境中,第二种实现应用比较广泛。

虚拟机亲和组

虚拟机亲和组即是按虚拟机应用或者关系将其分组,同一组的虚拟机尽量在同一台服务器中运行或者往同一台服务器迁移。应用 环境相似的虚拟机会有很多相同的内存页,那么将它们保持在同一台服务器上运行就会很大程度上地节约资源消耗。集群架构的业务虚拟机有时也需要在同一亲和组 中,比如负载均衡的Web服务器、分布式计算服务器等。

  • 弹性伸缩
    弹性伸缩是“云”化的重点之一,主要功能是在基础设施资源固定的情况下,平台可根据用户应用程序的需求对其在用资源进行自动扩充或回收,其实现包括Amazon简单/分步扩展策略、阿里云的弹性伸缩服务等,但这不代表它仅适用于公有云。一般来说,三大主要资源都可以进行弹性伸缩,但它们落实到具体对象上时则主要以虚拟机实例(或者vCPU)数量、容器实例数量、网络质量、存储读写质量等为单位(vCPU、内存热插拔方式的伸缩目前由于操作系统支持受限,所以应用极少),可应用的场景主要有Web服务、分布式计算、存储服务等依托LB(Load Balance,负载均衡)与HA的集群服务(关于LB/HA的技术选型可参考第10章相关内容)。

以应用较多的Web服务为例,它的典型实现示意图如图2-22所示。

一文解读私有云架构设计基础

图2-22 典型Web集群服务实现示意图

当Web服务网关收到请求以后,它会从LB集群中选择一个Web服务器响应服务,此Web服务器将与HA的数据库服务交互以后再返回信息给用户。如果用户请求过多,每个Web服务器的资源用度超过上限阈值一定时间时,平台就需要新建一台Web服务器并将其注册到LB集群中,如此以来新的请求便会被引导至新加入的Web服务器上,从而使得集群服务处理能力得以提高;反之,当多数服务器的资源用度低于下限阈值超过一定时间时,平台则会从LB集群中移除一台Web服务器以节省资源占用。

这个过程中的资源用度检测、阈值设定、Web服务器数量变化、LB服务器的注册与注销,即是由弹性伸缩服务所提供。

完善的弹性伸缩系统对于监测准确度、阈值选择与设定、阈强度(即高于或低于阈值的持续时间)、响应时间(即伸缩条件被触发后,Web服务器创建/移除、注册/注销过程消耗的总时间)、可伸缩集群类型(Web服务、数据库服务等)、防火墙(有效阻挡攻击流量)等方面都有一定要求。以阈值选择与设定为例,在实现是多以服务器即时并发量、资源消耗等综合考量,如果我们仅仅将指标设置为CPU用度,且阈值设置不合理的话,就可能发生如下现象:已知单位时间内用户请求数一定,那么当一个已经扩展的LB集群整体资源用度低于缩减阈值时,则其中一台Web服务器会被移除,用户请求被单台服务器全部接收导致其CPU利用率上升,如果此时扩展阈值过小系统则会再次向LB集群中添加一台服务器使得CPU利用率再次下降,最后重复前面的步骤导致震荡发生,如图2-23。

一文解读私有云架构设计基础居中

图2-23 典型Web集群服务实现示意图

如果读者对此部分设计有兴趣可适当阅读自动化相关书籍,比如《线性系统理论》、《现代控制系统》、《自动控制原理》等,虽然是面向电子电气专业人员,但对IT从业者也颇具参考价值。

4、OpenStack基础架构设计示例

基础架构模型是需要根据业务模型设计的,接下来笔者以OpenStack基础架构为例,首先介绍适用性较广的通用型设计,然后以其为基础拓展至计算或存储密集型的设计。

另外,在部署工具的选择上,笔者推荐初学者使用Mirantis Fuel或RedHat RDO部署OpenStack,它们都使用了自动化部署工具——Puppet,前者相对后者拥有友好的Web界面,所以用户相对较多,在国内也有分支合资公司。

通用型设计

通用型设计即是指用户需求不太明显的情况,我们提供给用户适用性较广的架构以满足其潜在需求。比如用户在内网运行Web服务器但不知何时会面向公网,或者用户是为了某个项目进行实验等等。这种设计所需要的OpenStack组件中,我们对用户的潜在需求进行分析,然后选择安装尽可能多的组件。

存储考虑

提供的存储服务主要包括块存储与对象存储两部分。

块存储服务是整个架构的基础,一般会直接部署Cinder管理块存储服务,其后端有很多商业存储可供选择,同时OpenStack也提供了针对商业存储的插件。如果没有单独的存储设备则考虑在各个服务器上部署多副本的CephFS集群,但服务器上除系统盘外也要有额外的硬盘组RAID 5或6。如果用户希望虚拟桌面的操作更流畅,或者他们需要频繁地创建、删除虚拟机,可考虑划分单独的SSD存储池用于虚拟机镜像存储(Nova、Glance)。如果服务器仅仅用作提供存储服务,从笔者经验来说采用高主频、少核的CPU时性价比较高。

而使用对象存储的目的有两个,一是存储部分虚拟机模板镜像,二是让用户将其作为网盘使用。存储模板镜像时,对象存储架构比较简单,Swift控制节点也可放入主控制器中;当作网盘使用时,那么Swift网关服务器就相当于一个Web服务器,且用户会话时间较长,此时如果并发有一定数量但未具备相当规模时,一般只需加强网关服务器硬件与优化系统配置即可,如果要针对较大规模并发,则需要更改其架构,比如添加单独的负载均衡设备或者组成高可用集群。

网络考虑

在设计基础网络时,一般会针对不同的网络功能区域进行单独设计。

OpenStack目前提供nova-network与neutron两种网络后端,但前者在最近的版本中已被标记为“deprecated(抛弃)”,所以笔者推荐使用neutron以提高系统向后兼容性与扩展性。

通用型设计中,网络一般划分为公共网络、用户网络、管理网络、存储网络等。公共网络即是用于对外服务的网络,这些服务主要用于用户访问(Web、REST API、Spice),连接到这些网络的节点只有Controller、Swift网关、桌面协议代理网关等,同时LB集群节点也会使用此网络。用户网络即是用户的虚拟机或容器实例使用的内部网络,其IP地址位于“虚拟网段”中,或者是与物理交换机相连的“物理网段”中,一些在公共网络中的服务也可在此网络中以提高内部实例访问服务的速度。管理网络即是管理硬件资源时使用的网络,管理员使用工具添加新节点时会赋予其管理网络所在网段的IP。存储网络即是存储节点所使用的网络,它对网络硬件的要求较高,包括带宽、延迟、冗余性等方面。

计算考虑

通常,计算节点所组成的集群按照其逻辑功能或位置划分为多个计算池,且每个池中的资源总量都由管理员定义,比如常驻桌面池、浮动桌面池、研发服务器池、办公服务器池等。考虑到虚拟机实例的可迁移性,同一池中的服务器CPU配置(主频适中、多核)都是相同的,同时服务器都与需接入对应功能区域的网络。

虚拟化的基本特性之一是资源超分,即分配给虚拟机的资源可以超过所在计算节点实际资源,CPU资源、内存资源在OpenStack中的比例默认为16:1、1.5:1。这些比例并不一定适用于实际环境,比如当CPU超分过多时,会导致部分虚拟机因QEMU进程上下文切换成本过高而变得卡顿,当内存超分过多时,如果虚拟机实例实际占用的内存超过hypervisor的物理内存,则有可能发生交换(swap out)动作同样导致部分虚拟机性能下降。

与计算节点紧密相关的控制节点硬件配置一般不需要很高,可参考存储网关节点配置。

架构示例

如图2-23是以提供Web服务虚拟机为主和对象存储为辅服务的OpenStack架构。存储服务由单独的存储服务器集群提供,包括用于计算节点的块存储服务Cinder以及用于云存储的对象存储服务Swift。

网络部分的划分笔者并没有在图中标注,但整体可进行如下划分:外部业务网络包括防火墙、控制器、Swift网关、负载均衡网关(虚拟机),服务器网络包括控制器、Nova计算集群,存储网络包括CephFS存储集群、Nova计算集群、Swift存储网关,虚拟机网络则专门用于虚拟机。

计算服务池分为研发和业务,前者用于研发人员开发、测试、代码/项目管理等,后者则用于运行已经上线的Web服务。由虚拟机组成的Web服务集群接收来自负载均衡设备分发的请求,再选择Web服务器予以响应。图中的负载均衡网关是在虚拟机内以软件形式提供的,它和Web服务器集群的架构与传统架构相同,因为管理员对后者更为熟悉。而高可用的控制器则保证了所有OpenStack组件控制组件的稳定性。由于用户需求中对象存储仅仅作为可选存在,所以此设计并没有添加单独的Swift存储网关负载均衡措施。

一文解读私有云架构设计基础

图2-23 提供Web服务虚拟机、对象存储服务为主的OpenStack架构示例

计算密集型设计

如果用户的应用是在高性能计算(HPC)、网格计算(GRID)、图文索引等非常依赖CPU性能的环境中时,我们可以对通用型稍作修改以完成应用计算密集型设计,而这其中又可以分别选择Nova或者Magnum提供虚拟机实例或容器实例,以隔离计算资源分别进行计算作业,从而构建出多租户环境的PaaS平台。

计算密集型的设计中,我们会尽量缩短I/O路径以减少数据搬迁带来的时间成本,且由于虚拟机实例或容器实例很少有高可用需求,所以采用本地存储将直接用于存放Nova虚拟机实例镜像与应用程序需要的文件系统,比如HDFS。此时,网络划分相对来说简单一些,但是计算节点则需要拥有独立的数据盘,采用OpenStack 基础设施的Hadoop集群架构如图2-24所示,其中控制节点可选装OpenStack大数据项目Sahara。

这种架构虽然牺牲了虚拟机的迁移特性,但同时正因为这点我们便可以在Nova节点添加物理显卡并透传至虚拟机中,从而提高特定行业领域的分布式计算性能。

一文解读私有云架构设计基础

图2-24 以OpenStack虚拟机作为基础设施的Hadoop集群

由于虚拟化的性能较之物理机有轻微损失,所以有人考虑使用性能几乎等同于物理机的容器运行分布式计算应用。笔者成文时原生Kubernetes、Docker Swarm、Mesos/Marathon组建的Docker集群并没有多租户功能,而出现稍晚的OpenStack容器服务Magnum则可将Swarm与Kubernetes作为容器集群后端,可同时利用Nova或者Heat提供容器模板,加之其原生的多租户支持而越来越受人关注。其架构可参考图2-25,其中使用Kubernetes作为容器集群服务,两个计算池分别用Nova和Heat提供的容器实例以适应不同的应用场景,其网络同样由Kubernetes提供,存储部分可参考上图。

一文解读私有云架构设计基础

图2-25 OpenStack Magnum参考架构

存储密集型设计

存储密集型的设计一般可将其理解为用于提供对外存储服务的基础架构,相当于一个独立的存储设备,其中的Nova上的虚拟机仅用作高可用存储管理服务与负载均衡的Swift存储网关,如图2-26所示。

一文解读私有云架构设计基础

图2-26 存储密集型OpenStack架构

这个架构主要参考了一些存储厂商的软件设计,所有对外暴露的存储服务都由管理入口进行控制,包括RBD、共享文件系统、对象存储以及基于它们二次构建的NFS、iSCSI、CIFS等。其中计算节点性能较弱,仅运行一些功能单一的虚拟机,厂商的实现中甚至将包括控制器、管理入口在内的服务直接部署至存储节点。

5、总结

私有云架构的基础与传统IT架构一样,都是根据需求一步一步扩展。为了保证物理上难以的虚拟机维护的虚拟机稳定运行,我们要求资源的基础架构具有稳定性、冗余性和扩展性。当资源延伸到虚拟机中使用以后,整个架构才开始变的灵活但又不易控制。此时需要我们采取安全防护和资源限制措施,以让它在一个可控的环境中发展。当它发展到一定程度后,我们赋予其“云”的属性,比如资源池化、SLA管理等。至此,我们的基础架构走向正轨,再经历更多意外、添加更多实用技术,然后才变得更加成熟、稳定。


摘要

帮你速读文章内容

企业评估私有云建设需求需考虑系统利用率、扩容成本、扩展能力、标准化程度、云化难度、成本、安全性、技术路线、业务连续性及高性能计算需求等,确保符合业务需求、技术能力和预算限制。

摘要由平台通过智能技术生成

有用

企业如何评估私有云建设需求

企业在评估私有云建设需求时,需要从多个方面进行综合考虑。以下是一些关键步骤和考虑因素:

评估私有云建设需求的步骤

  1. 需求和资源使用特点:

  • 系统利用率:评估现有IT系统的资源是否得到有效利用,是否存在资源闲置或负载不均衡的情况。

  • 建设扩容成本:分析现有IT系统的扩容成本,包括硬件、软件和网络设备的升级和维护成本。

  • 扩展能力:评估系统的scale-up和scale-out能力,是否能够满足未来业务增长的需求。

  • 信息系统的标准化程度:

  • 基础架构环境标准化:评估所需支撑的硬件是专用硬件还是通用硬件。

  • 平台环境标准化:评估开发环境、中间件环境以及数据库环境的通用需求和租户限制。

  • 应用系统的标准化:评估应用系统的运行环境、是否支持分布式等。

  • 云化建设/迁移的难度:

  • 硬件支撑环境改造:评估现有硬件环境是否需要改造以适应云计算环境。

  • 操作系统平台变更:评估操作系统是否需要变更或迁移。

  • API重构、模块化改造:评估应用系统的云化改造难度。

  • 成本的评估与考虑:

  • 初始成本:评估私有云建设的初始投资,包括硬件、软件、人力和培训成本。

  • 运营成本:评估私有云的运营成本,包括维护、管理和升级成本。

  • 安全性和合规性:

  • 数据安全:评估数据在私有云中的安全性和隐私保护措施。

  • 合规性:评估私有云是否符合相关的法规和合规性要求。

  • 技术路线选择:

  • 技术成熟度和稳定性:评估不同技术方案的成熟度和稳定性,选择最适合企业需求的方案。

  • 服务满意度:评估云服务提供商的服务质量和满意度。

  • 业务连续性和灾备需求:

  • 同城灾备:评估是否需要同城灾备中心提供灾备数据的存储资源。

  • 异地灾备:评估是否需要异地灾备中心提供应用级灾备资源。

  • 高性能计算需求:

  • I/O瓶颈:评估现有云计算解决方案在I/O方面的瓶颈。

  • 数据瓶颈:评估数据处理能力是否满足高性能计算需求。

  • 资源池跨数据中心调配需求:

  • 资源调配灵活性:评估是否需要跨数据中心的资源调配能力。

  • 数据与标准化需求:

  • 数据需求:评估业务信息系统生产数据和云技术平台运营管理数据的需求。

  • 标准化需求:评估云计算概念、定义及内容的标准化程度。

评估私有云建设需求的关键考虑因素

  • 业务需求:明确企业的业务需求,包括业务连续性、高性能计算、数据存储和访问需求等。

  • 技术能力:评估企业现有的技术能力和人才储备,确保有足够的技术支持私有云的建设和管理。

  • 预算限制:根据企业的预算限制,合理规划私有云的投资和成本控制。

通过以上步骤和考虑因素,企业可以全面评估私有云建设的需求,选择最适合自己的云计算解决方案。

数私有云平台建设与应用方案参考

免责声明:文字章节为公众号原创,文章中方案展示章节PDFPPT等来源于各文库类平台,源头无从查找,仅供读者

学习、参考,禁止用于商业用途。其版权归作者或项目实施方所有,本公众号不对所涉及的版权问题承担法律责任。若版权方认为本公众号侵权,请联系小编删除。本文章赞赏费,是小编收集整理该资料以及整理资料运营所必需的费用支付,资料索取者请尊重版权方的知识产权,支持版权方和出版社。文章中如有错误及事实错误等,请指出,便于读者获取更准确的信息。


核心观点

  • 目前主流私有云参考架构主要包含三个层次:IaaS 层、PaaS 层以及云管理平台,企业进行私有云改造应该根据自己的实际需求逐步落地;

  • IaaS 层是私有云最核心和最基础的部分,也是企业 IT 云化应该首先着手的部分。云化不仅要解决计算、存储等资源自助和自动交付,更要解决传统架构带来的资源池分离、维护复杂,无法弹性扩展等问题;

  • 超融合和私有云不是被替代的关系,恰恰相反,超融合产品让 IaaS 层真正具备了分布式架构和软件定义属性,从而带来存储和计算资源的整合、按需扩展和按需投资的“云”特性,而融合部署方式进一步简化了 IT 基础架构,并降低了系统的总拥有成本;

  • 基于商用超融合产品进行私有云 IaaS 层云化改造正在成为主流方案,该方案在可靠性、扩展性、开放性、易用性等方面具有独特的优势。

文章全文约 6000 字,阅读约需 8 分钟, 以下为正文:

背景

从 2008 年至今,云计算以其节约投资、需求部署快速、按需使用等特性已经得到了企业普遍认可,并实现了从概念到落地到遍地开花的快速发展。无论 AWS 还是腾讯、阿里巴巴等互联网公司都率先完成了自身的云计算数据中心和云管理平台的开发并对外提供便捷的公有云服务。但对于很多企业来说,由于数据安全,监管因素,成本等原因,没有办法将所有的业务都在公有云部署和运行,部分关键业务必须放置在企业内部运行,同时希望拥有公有云敏捷,弹性等特性,私有云应运而生不仅如此,而目前企业内公有云与私有云共存的混合云架构也已经成为业内公认的趋势。目前,市场上私有云方案的品牌种类繁多,令用户眼花缭乱,而近年来,在 IT 基础架构层面又出现了以超融合为代表的新型架构。用户对这些方案经常存在着诸多疑问和误解,例如:

  • 私有云应该包含哪些部分?私有云是不是功能越多越好?

  • 私有云有哪些可选的落地方案?

  • 超融合和私有云的关系是什么?

  • 通过超融合构建私有云,还需要什么模块?

本文将分别从私有云和超融合架构的核心本质,以及落地形态上给出介绍和分析。

企业用户对私有云的核心诉求

私有云涉及的技术比较多,本文不会展开介绍,更直接的方式是从业务需求出发去考察私有云的方案和技术,制定适合企业自身的私有云建设方案。下面将罗列一些企业对私有云项目的核心诉求。

业务更“敏捷”的需求

企业在传统的 IT 架构下,用户基于业务系统的资源需求,独立采购软件和硬件设备;一般需要经历:预算-测试-招标-采购-部署-应用上线等流程,整个过程复杂、耗时,很难做到业务快速上线的目标。企业用户对私有云的一个核心诉求是:资源可方便地进行交付,引入更多自动化功能帮助企业缩短业务系统的部署与发布流程,使企业在竞争中获得更大的优势。

业务更“稳定”的需求

企业中有越来越多的业务系统被要求提供 7*24 的不间断服务,事实上,数据中心一直面临着各种风险和挑战,包括停电、网络故障、硬件故障等问题都有可能影响业务的可用性。特别在传统架构下,随着 IT 规模增大,数据中心引入了更多不同的设备以及技术,增大了运维的复杂性,使得企业的 IT 管理员经常上演“消防员”角色,即便是这样也难以达到“不间断”运行的目标。因此企业构建私有云另外一个重要诉求是:私有云应该具备更简单的运维,更高的容错性,甚至是一定程度的故障自愈功能;支持远程站点的灾备方案,甚至是本地与“多云”之间的容灾。

资源交付更具“弹性”的需求

在传统架构中,基础架构资源往往是基于某个业务系统上线而建立,与业务系统有比较强的耦合关系,资源之间无法流动,容易造成资源孤岛以及资源利用率较低等问题。另外一个的问题来自于资源建设缺乏通盘的考虑,导致管理与扩展成本比较高。企业用户对私有云的另外一个期许是:改变原有将零散资源进行统一纳管的思路,建设统一资源池,实现更灵活的资源划分与交付;资源应具备“弹性伸缩”特性,可对资源进行生命周期管理,既可迅速扩展资源规模,也可以及时回收“闲置”资源进行重分配。

私有云的架构与方案构成

以上介绍到了企业对私有云的诉求,下面介绍私有云方案有哪些重要的组件,以及组件的关系。

私有云架构并没有完全统一的标准,但在大体上是有共识的,下面以 IBM 和 Intel 私有云的架构定义作为例子进行探讨私有云架构的层次结构。


IBM 私有云架构

IBM 私有云架构层次结构:

  • IaaS 层

  • PaaS/CaaS 层

  • 下一代管理平台

  • 工作负载层


英特尔私有云架构

Intel 私有云架构层次结构:

  • IaaS 层

  • Paas 层

  • 服务管理平台

  • 云用户界面层

从两个参考的架构中可以看到,虽然 IBM 和 Intel 两家对于私有云的理解有一些差别,但总体的层次结构是类似的,下面做几点简单的归纳。

1. 对于绝大部分企业私有云,无需 SaaS 层建设

在我们熟悉的云服务模型中,包含了三个层次(IaaS、PaaS、SaaS),其中 IaaS 层的服务对象是 IT 管理员,PaaS 层的服务对象是软件开发者,SaaS 层的服务对象是终端用户。但企业私有云的主要服务对象是 IT 管理员以及软件开发者,IT 管理员更关注如何简化资源交付,基础架构管理与监控以及自动化运维等;而软件开发者更关注开发效率,持续、快速应用交付等,因此在企业私有云 SaaS 建设并不是必须的,而取而代之的是综合自助门户、自动化运维、资源监控与管理功能的云管理平台。

2. PaaS 层建设可以是循序渐进的,不必被“全栈”绑定

PaaS 平台核心价值在于帮助软件开发者摆脱 OS(操作系统)、Middleware(数据库、中间件)、Runtime(运行环境) 的安装、配置、维护、升级等繁杂的工作,使得开发者和企业用户把目光放到开发出色的应用程序上,帮助企业用户缩短程序开发与发布流程。但 PaaS 平台何时引入,以及如何引入仍然是需要企业仔细评估,以下原则供企业进行方案评估时参考:

对于研发的投入以及应用发布周期要求决定 Paas 平台的价值

PaaS 平台帮助企业高效开发与发布应用程序,对于没有或仅少量研发投入的企业完全没有必要对 PaaS 平台投入。而对于投入大量研发的企业,也要评估是否确实有非常强的敏捷性的需求需要 PasS 层支撑。如果是面对一周一次,甚至是数周一次的发布要求,PaaS 平台带来的价值是非常有限的,反而 PaaS 平台本身的开销(流程、约束等)会带来负担。

专业 PaaS 平台兼容主流 IaaS 平台并松耦合,不必一次“全栈”投入

主流的 PaaS 平台都是同时兼容虚拟机和物理服务器环境的,而且对主流的 IaaS 平台都是有很好的支持,因此企业用户不用担心 PaaS 平台和 IaaS 分批引入引入会带来风险。

以两个知名的 PaaS 产品为例,针对 IaaS 支持如下:

  • Pivotal :AWS、Azure、Google、VMware vSphere 等

  • OpenShift : AWS、Azure、Google、VMware vSphere 等

所以,企业私有云的 PaaS 层建设可以是按需、并选择专业的产品逐步完成的,无需和 IaaS 层绑定。

3. IaaS 层是私有云建设的最基础和核心的部分,资源池的架构与资源使用模式的“云化”同等重要。

IaaS 平台有效地屏蔽了硬件的复杂性,无论是 Paas 层还是管理平台都是建立在 IaaS 层之上的,整个私有云的可靠性、性能以及弹性都首先来自于 IaaS 层这个“基石“,所以,在私有云建设中,IaaS 层建设与改造都是最核心、最关键的工作。

然而 IaaS 层的建设也是最为复杂的,需考虑软、硬件以及物理环境等众多复杂因素。将 IaaS 层进一步拆解,实际上 IaaS 由物理硬件层,虚拟化层以及 IaaS 应用层组成。原理上是将服务器、网络、存储等基础架构硬件设备进行虚拟化,形成基础架构资源池后,配合各种 IaaS 应用对上层交付基础架构服务。只有完成 IaaS 层的建设,才有 PaaS 和云管理平台的施展空间。


目前市场上存在一个常见的误解是,IaaS 层的云化改造主要是IT资源的自助申请、自动化审批等管理层面的功能,却忽略了基于传统阵列的三层架构中,存储资源的整合和按需使用、弹性扩展都无法满足的 IaaS 层的要求。所以,这个部分同样应该作为 IT 基础架构“云化”改造的一个重点。

超融合在私有云中的方案定位与价值分析

超融合架构概述

SmartX 超融合软件产品 SMTX OS 模块构成

首先,以 SmartX 超融合为例分析超融合的构成和特点:

  • 超融合是以基于商用服务器硬件,以软件定义的方式和分布式架构为用户提供集成虚拟计算、虚拟存储及虚拟网络等基础架构服务;

  • 超融合只是一种部署架构,分布式块存储对传统存储的替换是变革的核心,并可以支持第三方虚拟化平台或集成自有的虚拟化平台;

  • 超融合集成了软件定义、分布式和集成部署带来的优势,形成了强大敏捷但又简单的基础架构。

超融合在私有云方案中的定位

基于超融合的私有云架构

根据超融合的架构和特点可以看出该技术为私有云的 IaaS 层提供了一种更为高效和简单的基础架构资源池化方案,超融合帮助 IasS 层轻松地完成了基础架构的的“云化“改造,使其具备 Scale-out、软件定义等等特性,从而带来以下价值:

  • 为私有云提供稳定,高可用的基础架构

超融合集群一般由 3 个或以上节点组成,以分布式架构进行部署,可有效避免单点故障,并能提供故障自愈功能,具有良好的容错能力;

凭借超融合存储与计算融合的架构以及软件定义能力,可提供原生的异步灾备甚至双活基础架构。

  • 易于管理

超融合帮助私有云非常简单地完成基础架构的虚拟化,包括计算、存储、网络的虚拟化,无须为不同的设备考虑虚拟化的方案,降低方案的复杂性;

支持集成 VMware vSphere 和 KVM 等主流虚拟化软件,用户端几乎没有学习成本。

  • 弹性的分布式架构

超融合集群可以通过增加/删除节点,安全、轻松地完成资源的在线扩容/缩容,不影响正在运行的业务;

超融合拥有强大的 scale-out 能力,性能可随集群规模增大而获得线性增长。使得私有云可以有一个按需投入的基础架构。

  • 软件定义模式带来成本优势

超融合技术支持普通商用服务器硬件以及使用以太网进行传输,避免使用价格高昂的专用硬件,有效降低私有云中的硬件采购成本;

超融合技术的特性是在每个服务器节点都能同时提供计算与存储能力,架构精简,资源占用更低。

需要进一步说明的是,由于经典的超融合主要是定位在存储、计算资源池的升级,如果用户有类似自服务、资源自动审批等进一步的云化需求,可以选择 CMP (Cloud Management Platform)平台构建一个灵活开放的私有云平台。我们将在后期对该方案展开介绍。

超融合在私有云中的主流落地方案

在国内,企业主要通过 3 大途径落地私有云:

  • 将 AWS、Azure、阿里云等商业公有云方案全套落地到私有环境;

  • 使用类似 OpenStack、Ceph 等开源软件构建私有云;

  • 使用类似 VMware、SmartX、Nutanix 等虚拟化或超融合产品配合 CMP 组件等成熟的商业组件构建私有云。

一个有趣的现象是,由于 HCI 架构为私有云带来的诸多优势,方式 1、2 也都衍生了基于超融合架构的落地方案,以下逐一介绍。

公有云移植构建私有云

将公有云移植到企业数据中心,方案最大的优势是它来自于公有云成功经验,并经过长时间,大规模营运的考验,拥有比较全面的功能,以 AWS 为例展示其落地方案及架构。

AWS公有云移植构建私有云

AWS 以 EC2 (Elastic Compute)服务为核心提供虚拟计算能力,S3(对象存储)和 EBS(块存储)等服务提供虚拟存储能力,由 VPC 等网络服务提供虚拟网络能力,以及包括其他安全及管理工具共同构建 IaaS 层。在 PaaS 层也有非常丰富的解决方案,在这里不再一一赘述。AWS 的私有云方案基本上就是按照 AWS 标准, 包括硬件、软件,甚至运营整体交付到企业用户数据中心里面,这类方案比较明显的特征是非常依赖公有云供应商的自有生态。

近几年,AWS、Azure 等公有云供应商,在落地私有云的基础架构方案时也推出了类似如 AWS Outpost、Azure Stack HCI 等超融合架构进行交付。

Azure Stack HCI 等超融合架构进行交付

这些方案的优势是可以在一家厂商获得从私有到公有云的统一方案和服务,但也存在诸如以下弊端:

  • 产品封闭,例如 Azure Stack HCI 只能支持 Hyper-v 虚拟平台,并且无法形成多云方案;

  • 前期投入大且完全新建,对原有 VMware 等系统无法管理。

开源软件构建私有云

使用开源软件构建私有云,实际上利用多个开源软件分别完成 IaaS、PaaS 等各层的构建。这种方案的重点依然在 IaaS 层构建之上,其中 OpenStack 是无疑是最热门的开源 IaaS 平台之一,以下是以 OpenStack 为中心构建私有云的架构图。

以OpenStack 为中心构建私有云的架构图

由于 OpenStack 本质上是一个 IaaS 的框架,需要结合其他的软件才能完成 IaaS 层的构建 ,通过下图展示 OpenStack 方案的组成。

OpenStack 方案的组成

通过上图可以看到 :

  • OpenStack 本身不直接提供服务虚拟化、存储、网络等功能;

  • OpenStack Nova 计算组件负责对接Hypervisor 软件,如:KVM、VMware vSphere、XenServer 等,实际上由 Hypervisor 提供服务器虚拟化功能;

  • 存储方面可能选择的方案包括 SDS、传统集中式存储等。

目前,市场上同样出现了基于 Openstack、KVM、Ceph 等开源产品整合的超融合方案,基于开源的方案可以快速从社区获得最新的功能,但以超融合产品交付存在着诸多问题:

  • Openstack 架构复杂、大量模块在超融合中并不需要,商用程度差,且计算资源要求高;

  • 基于开源的 Ceph 同样模块和代码复杂,服务商对产品核心问题无法有效支持,且 Ceph 对计算资源消耗高较高,IO 密集型场景性能也表现欠佳;

  • 此类超融合方案一般对 VMWare 都无法有效支持。

因此,此类方案实际上无法真正达到超融合产品简单、稳定、高效、开放等特点。

使用成熟的商用生态打造私有云

使用商用生态组件打造私有云,其优点是方案经过来自不同行业的实践验证、并且能获得来自厂商的持续的服务与支持。另外,基于这种模式用户可以采取逐步扩展与完善组件的策略来完成私有云的构建,通过这种模式实现私有云切换的代价是最小的。

使用成熟的商用生态打造私有云

在资源池的构建上方式上,以往 VMware vSpere 、FC 网络、FC SAN 存储传统三层式架构占据统治地位,但超融合方案正在越来越多地替换原有的架构。VMware、SmartX 等主流超融合厂商配合成熟的商用 CMP 产品都提供了诸多基于超融合架构的私有云案例。相比于以上两种方案,该落地方案具有独特的特点:

  • 相比于公有云厂商以及全栈的私有云方案,该方案具备更好的开放性,更灵活轻量;

  • 相比于基于的开源产品,该方案稳定简单,具备真正“生产就绪“能力。

总结

综合以上内容,我们可以对私有云的组成以及超融合和私有云的关系有以下初步的结论:

  • 目前主流私有云参考架构主要包含三个层次:IaaS 层、PaaS 层以及云管理平台,企业进行私有云改造应该根据自己的实际需求逐步落地;

  • IaaS 层是私有云最核心和最基础的部分,也是企业 IT 云化应该首先着手的部分。云化不仅要解决计算、存储等资源自助和自动交付,更要解决传统架构带来的资源池分离、维护复杂,无法弹性扩展等问题;

  • 超融合和私有云不是被替代的关系,恰恰相反,超融合产品让 IaaS 层真正具备了分布式架构和软件定义属性,从而带来存储和计算资源的整合、按需扩展和按需投资的“云”特性,而融合部署方式进一步简化了 IT 基础架构,并降低了系统的总拥有成本;

  • 基于商用超融合产品进行私有云 IaaS 层云化改造正在成为主流方案,该方案在可靠性、扩展性、开放性、易用性等方面具有独特的优势。

后期,我们将针对基于超融合的私有云基础架构分布式改造方案和案例进行更详细的介绍,敬请期待。

相关内容推荐:

企业数据中心“云化”的 5 个要点与解决方案

如何构建私有云并打造混合云生态?

SmartX 私有云解决方案

资料推荐

SmartX 社区版软件,免费构建超融合云化数据中心,全功能免费,无需申请即可永久使用,并提供社区支持。了解详情,加入技术交流群请点击:

信创云转型合集:技术路线、厂商评估与用户实践

轻装上阵,社区支持。 开启免费的超融合之旅。

无需下载安装,在线可交互、分步骤的体验超融合各项功能特性。

超融合评估中常见的问题与SmartX技术博客精选文章合集


搭建私有云平台的方法可以因应您的需求和技术水平而有所不同。以下是一些常见的步骤:


确定云平台类型:您需要决定搭建何种类型的云平台,例如基础设施即服务(IaaS)、平台即服务(PaaS)或软件即服务(SaaS)。

选择云平台软件:根据您选择的云平台类型,选择适合的云平台软件,例如OpenStack、Cloud Foundry或Docker等。

设计架构:根据您的需求和预算,设计私有云平台的整体架构,包括网络、存储和计算等方面。

准备硬件设备:购买适合的服务器、存储和网络设备,以满足您的架构设计需求。

安装和配置软件:根据所选的云平台软件,安装和配置各个组件,包括控制器、计算节点、存储节点和网络节点等。

进行测试和部署:测试云平台的性能和可靠性,并对其进行必要的调整和优化。然后,将应用程序和服务部署到私有云平台上。

管理和维护:监控和管理私有云平台,定期进行备份和更新,确保其高可用性和安全性。

请注意,搭建私有云平台需要一定的技术和管理知识,因此建议寻求专业人士的帮助。