《数字化转型之路》 —2.1.3 主流技术平台
2.1.3 主流技术平台
云计算技术的发展离不开虚拟化的成功,因为虚拟化是硬件资源池化的基础。以VMware、XEN和Hyper-V为代表的虚拟化软件可以在一台物理服务器上通过运行多个虚拟机实例来提升硬件资源利用率,而且也通过虚拟机配置的动态调整实现了资源的灵活应用。
在虚拟化的基础之上,通过增加三个重要的典型功能,凸显了云计算的不同之处:
自服务门户。所有对虚拟机的操作都不再需要通过系统管理员才能完成,使用者在自服务门户上基于菜单操作就能完成资源的申请及交付,这背后是一套自动化引擎在支撑。
计费/账户。通过统计资源使用情况,云平台可以为每一个账户实现计费功能。该功能使得资源的使用和成本的支出有据可查。虽然是看似简单的功能,但在企业现实环境中却可以反向影响需求端的行为模式。在没有计费功能前,IT部门面临的挑战是业务部门不断涌现的需求,这些需求中的大部分其实都要考虑到IT的成本和投入。计费功能可以让业务部门尽快决定哪些入不敷出的系统应该淘汰,哪些投资回报率不合理的需求不应提出。
多租户。多租户技术是指以单一系统架构与服务为多个客户提供相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离的软件架构技术。一个支持多租户技术的系统需要在设计上对它的数据和配置进行虚拟分区,从而使系统的每个租户或组织都能够使用一个单独的系统实例,并且每个租户都可以根据自己的需求对租用的系统实例进行个性化配置。
业界最著名的开源IaaS平台是OpenStack,它一经推出便受到业界的极大关注。它由若干组件通过网络服务连接在一起,因此能够灵活配置从而实现丰富的功能,在图2-1中显示了其主要组件。
Nova:计算资源的组织者和控制者,处理虚拟机从创建到销毁的所有过程,是管理任务的核心。
Neutron:在IaaS层为OpenStack组件提供网络连接服务,通过SDN等技术的应用实现灵活、安全、可靠的网络环境。
Glance:为OpenStack其他服务和用户提供对镜像(image)的发现、注册、检索服务,实现虚拟机操作系统及软件的快速启用。
Cinder:为OpenStack组件提供块存储服务,形式上块存储可以理解为虚拟化的磁盘。
Swift:对象存储服务,允许其他组件和用户通过网络访问以对象方式进行管理的文件和目录。
Ceilometer:实现负载、利用率、性能相关数据指标的采集并为每个账户提供计费服务。
Keystone:身份及服务管理,负责用户的认证与授权,同时也构建服务目录并提供服务访问的授权。
图2-1 OpenStack体系架构
OpenStack的组件众多而且所构成的体系也很复杂,但其每个组件的独立性较强,因此可以结合企业的业务需求而灵活配置。在行业不断进步的同时,OpenStack也在积极拥抱容器、NFV等新兴技术,为企业提供更加全面的私有云解决方案。
2013年Docker问世,直接引爆了业界对虚拟化技术的热情。在短短两年里,围绕容器技术的各种解决方案便不断涌现。Docker作为一个轻量级的容器引擎,图2-2展示了它的三个核心概念。
图2-2 Docker核心组件
容器:容器借助命名空间(name space)、Cgroup等技术为进程的执行提供专用的进程空间,既保证了CPU、内存等资源的供应,同时也隔离了不同的进程,每一个容器缺省都有严格的安全限制。相比于VMware等虚拟化平台为了运行一个业务应用程序就要启动一个运行完整操作系统的虚拟机,容器技术实现了极高的资源利用率,因为直接在容器中执行进程就可以了。
镜像:Docker把应用程序的执行文件和依赖的库文件等打包成一个镜像文件用于容器的执行,由于引入了堆叠文件系统,因此Docker的镜像文件与虚拟化平台的镜像文件相比要小很多。例如,一个CentOS的虚拟机镜像文件大小为若干个GB,而如果在Ubuntu系统里启动一个CentOS容器,那么仅仅需要下载不足100MB的容器镜像文件。文件大小的巨大差异,也使得应用程序的分发更为便利。
仓库:仓库用于集中存放并管理镜像,分为公共仓库和私有仓库。它涉及注册服务器和客户端工具,为应用程序的分发和运行创造了无缝的环境。
图2-3左侧的虚拟化平台中,为了执行三个App就需要启动三个操作系统,对内存等资源的消耗非常高。而右侧的Docker平台里只需要直接运行三个App就可以了,不仅资源的消耗极少,而且由于是进程级的调用,因此可以在毫秒级实现应用的启动运行。
图2-3 虚拟机与容器的对比
由于Docker所具有的独特优势,业界众多著名企业对容器技术的关注迅速升级,这期间Google于2014年推出了一个重量级的工具Kubernetes。作为Google内部集群管理系统Borg的开源版本,Kubernetes的目标是使容器化的应用部署简单并且高效,因此它提供了一整套应用部署、规划、更新和维护的机制。
Kubernetes提供了一个以容器为中心的管理环境。它根据用户负载完成计算、网络及存储基础架构的编排,使得基础架构能够基于极具灵活性的IaaS提供轻量化的PaaS服务,并提供跨基础架构提供商的业务迁移能力。
Docker成功地实现了容器引擎,但现实环境中的业务往往并不是单独一个或者几个容器就可以承载的,它需要大量的容器分别运行不同的微服务模块,而且还要有能力进行扩展并应对各种可能的故障。容器的编排技术就是针对这些挑战而生的,由于Kubernetes是Google在运行百万台服务器集群的丰富经验基础上构建的,因此业界对其认可度要高于Docker所提供的Swarm。图2-4显示了Kubernetes的体系架构,其中涉及Kubernetes的几个关键概念。
图2-4 Kubernetes体系架构
Pod:集群中所有业务类型的基础,它可以支持一个或者多个容器的运行,也是部署应用或者服务的最小单元。Pod的设计理念是支持多个容器在一个Pod***享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
Replication Controller(复制控制器):集群中保证Pod高可用的API对象,它负责监控集群中运行的Pod并且保证其运行着规定的副本数量。因此,它是Kubernetes中容错的保证,当它发现某个Pod副本“死掉”了,就会自行启动运行新的Pod
副本。
Service(服务):解决了如何访问运行在Pod中的应用程序或者服务的问题,它为每一个服务提供IP地址及访问端口,且这些访问也具备负载均衡的能力。它还负责注册新启动的服务,以便其他服务能够发现新服务并建立联系。
Deployment(部署):表示用户对Kubernetes集群的一次更新操作。部署是一个比RS应用模式更广的API对象,可以是创建一个新服务,更新一个新服务,也可以是滚动升级一个服务。
- 点赞
- 收藏
- 关注作者
评论(0)