[PaaS平台]

  PaaS作为云计算中非常重要的一类服务,可为用户提供应用生命周期管理和相关的资源服务户可以通过PaaS平台完成应用的构建、部署、运维管理,而不需要自己搭建计算执行环境,如安装服务器、操作系统、中间件和数据库等。laS系统提供给用户的是虚拟机资源,而PaS负责应用的部署和运维,实现应用的弹性伸缩和高可用等功能,用户只需专注于应用的开发。而kubernetes是云计算PaaS领域的集大成者,一经推出便受到广泛关注和认可。

  传统PaaS系统

传统的PaS系统主要由管理平台、计算资源池和服务资源池三个部分组成。PaS管理平台主要负责认证授权、应用自动化部署、运维监控等工作。应用运行在计算节点上,计 算资源池提供应用所需要的完整运行环境,包含语言环境和应用框架等,一般基于 Linux的 CGroup和 namespace为应用提供资源隔离和限制。服务节点通过代理或接口为应用提供数据库、缓存和存储服务。传统的PaaS架构如图所示,具有如下功能:

image

    1)认证授权:为保证系统的安全可靠性,系统中所有的访问都会通过AAA模块进行 认证授权验证。
     2)服务管理:通常情况下,用户的数据和状态信息都不保存在计算节点上,而是存放在服务节点上的数据库和缓存集群中,用户可以设置所需资源的额度和配置信息,PaaS在 后台进行资源配置实现。应用可通过接口或者代理来访问这些资源。
     3)应用部署:PaaS平台提供代码仓库(SVN/Git)或者应用仓库,用来保存用户上传 的代码或者编译后的应用。根据应用的开发语言,PaS将其依赖的中间件、框架与应用 起打包、编译,按照用户指定的资源需求(CPU、内存和磁盘等资源),并依据PaS平台调
  度算法来选出合适的计算节点,该节点上的管理程序将应用下载到本地后启动。
     4)负载均衡:它是所有PaaS应用的访问入口。负载均衡模块按照用户设置的分发策 略,将应用请求分发给PaS系统后端的各个应用实例。
     5)运维监控:用来监控PaaS系统中各模块的状态和信息;PaS平台实时监控系统中 所有应用的所有信息,如CPU、内存信息、应用运行状态等。如发现应用意外停止,PaaS 会将其再次拉起。用户也可以手动启动、停止和升级应用。
     6)应用日志:用于采集、存储并可视化展示各用户的应用日志信息,以便测试和调试 ( Debug)。
     7)应用伸缩:用户可根据应用负载的大小来手动调整应用实例数量。一些PaaS系统 可以根据用户所设置的阈值(如CPU/内存的负载或者应用访问量)自动地增减应用实例数 量。而要实现应用的自由弹性伸缩,就需要应用做到无状态化,所有有状态的信息(如数据库、 Session信息等)都要放在服务节点上的资源池中。

  传统PaaS平台有很多局限性:1)只能提供有限的开发语言、框架和中间件支持,如只支持Java、PHP和Ruby等,用户开发应用时所能选择的技术比较受限;2)一般只支持 简单的Web类单体应用,无法支持复杂的分布式应用,对其他非Web类应用的支持也有
限;3)应用与PaaS平台锁定。为了管理/安全的考虑,应用必须调用PaS平台所提供的专用SDK,使用PaaS平台定制的框架和中间件来重新开发自己的应用,这也导致现有IT 系统很难迁移到PaaS平台。
   综上所述,因为传统PaaS平台存在诸多缺陷,导致用户在部署PaS平台时非常谨慎发展也很缓慢。随着 Docker容器技术的迅速兴起,PaS系统迎来了新的挑战和发展。

  基于Docker和Kubernetes的新型PaaS平台

  Docker技术有一个最大的好处:将应用和依赖的框架中间件等运行环境都打包到了Docker镜像,用户应用部署并运行在隔离的 Docker容器中,不再依赖宿主机来提供运行环境支持,从而实现了应用和PaS平台解耦。这为应用开发带来了巨大便利,用户向PaaS平台提交的不再是代码,而是 Docker镜像,PaaS平台也无须再为应用准备各种运行时环境。
   近年来微服务框架、 DevOps越来越受到关注,而传统的单体架构以及软件开发、测试交付模式使得持续交付变得充满挑战,因为哪怕是应用程序的最小改变都需要整个应用软件重新编译和测试。而微服务架构模式是将应用分解成小的自治服务的软件架构,毎个服务可以被独立地开发、测试和部署,并使用约定的API进行服务间通信,通过API网关向外提供服务。微服务架构提高了应用的灵活性、扩展性和高可用性。因此为了在PaaS平台上支持微服务框架,需要PaS提供完整的服务治理功能,如服务注册、发现、管理、认证授权、分布式事务、熔断、服务链调用分析等功能。
   随着企业数字化革命、互联网经济的不断深入发展,企业不仅需要PaS平台提供关系型数据库、缓存和存储的服务,还需要大数据、 NOSQL、搜索和机器学习等服务。当前,云计算技术已经被广泛接受,应用可以部署在企业私有云上,也可以部署在公
有云上,因此PaS系统应具备跨云部署的能力,可以将应用调度到不同的云计算环境中, 给用户提供无缝连接的计算环境,并以应用的 Docker镜像为软件的交付标准,集成开发测试流水线,实现应用的快速迭代。如图所示:

image


   新PaaS平台以 Docker容器为基础,面向云化、微服务、 DevOps等多 种应用场景,支持分布式计算、大数据、深度学习等多种计算服务,集成开发、测试、部 署流水线,成为一站式应用开发运行平台。 与传统PaaS相比,新PaaS平台在架构上变化很大。通常在每个计算节点上部署负载 均衡模块,为多实例应用或者微服务提供接入访问服务,实现服务治理中的负载均衡功能。 在PaaS平台管理节点上会安装etcd/ ZooKeeper/consul等模块,用于服务注册和服务发现,以及整个系统的应用配置。同时,在PaaS管理节点还会部署DNS模块(如 Skydns),为部署在PaaS系统中的应用提供域名解析服务。

   在PaaS平台的计算资源节点上,一般采用 Bridge模式来部署容器网络,采用 Flannel、 Weave或 Calico等网络解决方案来实现跨节点的容器间互联互通。 采用 Advisor实现容器监控。 Advisor部署在计算节点上,用于采集计算节点及节点之
上的所有容器的运行信息,如CPU、内存、磁盘、IO等。 Advisor所采集的信息可以保存到 InfluxDB中,并由 Grafana进行图形化展示,也可以通过 Heapsterl收集汇总后由 Kafka转发至其他系统
。 这种新型PaaS平台可提供如下新的关键功能:
     1)自动化部署与智能运维。众所周知,分布式应用的部署、弹性伸缩、升级等运维过程非常复杂,而且几乎每种分布式应用的上述运维过程都千差万别。而新型PaaS平台为众多应用定义了一整套标准、统一的运维手段,且提供了以往无法做到的新运维体验,如应用编排、自动化部署、蓝绿部署、滚动升级、灰度发布、灰度上线等,方便对分布式应用进行高效、智能的运维。
     2)持续集成和持续交付。由于容器具备轻量级、一次构建到处运行、快速交付和部署等特性,使得新型PaS平台更容易与各种持续集成和持续交付工具进行集成,形成从应用开发到应用交付的完整流程。
     3)支持微服务。为了满足企业数字化转型的需求(移动化、互联网化、云化、智能化、服务化),大量企业应用正从单体架构向微服务架构迁移,新型PaaS平台为这类应用提供了很好的运维支撑平台(服务治理等)。
     4)支持复杂应用的应用编排服务,可以帮助用户构建和管理分布式应用

猜你喜欢

转载自www.cnblogs.com/kongdeyuan/p/10907516.html