UDN-企业互联网技术人气社区

板块导航

浏览  : 1972
回复  : 0

[云计算] VMware开源云控制平面:光子控制器

[复制链接]
独领风骚的头像 楼主
发表于 2016-6-29 14:56:03 | 显示全部楼层 |阅读模式
本帖最后由 独领风骚 于 2016-6-29 15:04 编辑

2.png

  在部署微服务化容器应用时,由于容器数目较多,往往需要自动化集群调度工具,譬如Mesos,Kubernetes(K8s)以及Docker Swarm等,使用这些工具可方便地支持容器应用的部署和扩展。实际中还有另一个问题:Mesos和K8s等平台本身不涉及OS以下的资源管理,当平台本身需要部署和扩展时,常常需要借助其他手段,在集群规模增大时,将成为突出的运维难题。

  为此,VMware在夏季的VMworld上发布了新一代云原生平台Photon Platform (光子平台),帮助用户在ESX集群上快速、规模化地部署多种云原生应用集群:包括Docker Swarm,Mesos,K8s,以及Pivotal Cloud Foundry,成为容器化应用集群管理和调度的一大利器。该平台包含两部分: Photon Controller (光子控制器)和Photon Machine (光子机器)。其中光子控制器是分布式控制平面(Control Plane),光子机器则是精简过的ESX Hypervisor。相关介绍请参考文章《VMware的云原生应用战略》。
2.png

  在最近的DockerCon EU中,VMware开源了光子平台中控制平面部分:Photon Controller,其调度原理不仅适用于ESX Cluster,还能推广到其他平台。Photon Controller 结构如下图浅蓝部分所示,我们一起来看看光子控制器的原理吧。
2.png

  调度器 (Scheduler)

  光子控制器包含了核心调度器(Scheduler)以及与之配合的一系列组件。与大多数分布式系统相似,组件之间多是松耦合和无状态的。看到这里,大家可能已经猜出光子控制器的实现技术了。没错,光子控制器采用的就是微服务架构,每个组件由Docker Container来封装,按需要可随时水平扩展成多实例。由于图中组件较多,为便于说明,下图是简化过的控制流。
2.png

  光子控制器的调度使用常见的主-从模式:包括若干个主调度器(Root scheduler),以及每个资源结点上的子调度器(Leaf Scheduler)。子调度器把结点的负载和资源利用率等信息发往主调度器,主调度器按照一定的规则把任务请求通过树型结构下发到子调度器,子调度器再加载结点上的负载,从而实现分布式的调度。因为避免了象vCenter那样集中式的管理,可以多路任务并发执行,扩展性好,非常适合大规模集群的部署。举个例子,部署Mesos、Swarm等集群时,需要有虚机的基础镜像(base image)。光子控制器可在结点之间复制基础镜像,大大提高了创建虚拟机的效率。从设计上说,子调度器可以对接各种虚拟化和云平台的资源结点,目前只实现了vSphere API的接口,以VIB(vSphere Installation Bundle)的形式部署在ESX Server里。

  光子控制器除了可运用CLI操作外,还提供了一套REST API,便于与其他自动化工具集成。这组件称为API Front End,由负载均衡器和水平扩展的API Server组成,用Dropwizard和Swagger两个REST API框架实现。

  其他组件

  除了主要的调度组件,光子控制器还有其他一些辅助运行的组件。Zookeeper是协调各个服务的注册和发现,以及定义服务间的工作模式,如主-主,主-从等。Lightwave则是VMware早些时候开源的安全认证和鉴权项目,从ESX Server久经考验的源码中抽取出来的。Health Manager监控系统的健康情况,并对错误采取相应的措施。Housekeeper负责系统的自愈能力,当某些组件处于非常规的状态时,Housekeeper可自动排除故障。

  要特别提一下的是VMware另一个项目:Xenon(中文:氙,xiān,一种能发出全光谱的气体元素),它和Photon Controller同时开源。Xenon给微服务应用带来了元数据(meta data)存储能力,基于Lucene实现了分布式文档框架,通过多副本复制提供可靠的数据持久化。光子控制器的组件CloudStore负责管理元数据,如各种容器、虚机、网络等对象的信息,底层就是通过Xenon实现的。

  多租户特性

  光子控制器另一优点是:支持多租户共享同一集群的资源,无论在公有或是私有的云环境里,这都是必备的能力。每个租户(tenant)会分配一个资源池,包括网络、存储、CPU等。租户可把名下的资源划分给若干个项目(Project),使用每个项目的资源可安装Swarm,K8s, Mesos这些集群。这样,租户之间、租户的项目之间就可共享资源。
2.png

  光子控制器的用法

  Photon Controller的源代码在GitHub已可下载(vmware.github.io/photon-controller/),核心代码用Java编写。项目中有个《快速启用指南》提供了Photon Controller安装部署的详细说明,可以参考使用。Photon Contoller安装好后,以下2个步骤可以迅速创建Docker Swarm的集群(Mesos和K8s的步骤与此类似):

  ❶上传一个Swarm基础虚机镜像到Photon Controller(该基础镜像可自制或下载),命令如下:
2.png

  ❷然后部署Swarm集群:
2.png

  接着在Docker CLI客户机用环境变量指向Swarm的控制结点,就大功告成了,可直接用Docker命令访问Swarm集群:

  export Docker_HOST=”tcp://:8333

  一般来说,租户先用Photon Controller来创建容器平台集群,然后在运用容器平台的API来调度容器应用:
2.png

  小结

  由于Photon Machine还未发布,目前光子控制器只能部署在ESX Server上。明年Photon Machine发布后,将会支持云原生专属的Microvisor(简化版ESX),并且支持Pivotal Cloud Foundry集群的部署。VMware通过开源Photon Controller 和Xenon,实现了在VMworld大会上对用户的承诺,加上年初发布的Lightwave,Photon OS等开源项目,对业界容器应用的发展起到良好地推动作用。也希望广大用户和开发者积极使用并加入该项目的开发,共同完善云原生应用的生态系统。

原文作者: Henry 来源:亨利笔记

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部