专栏首页亨利笔记VMware开源云控制平面:光子控制器

VMware开源云控制平面:光子控制器

题图摄于景山公园:雪打银杏

在部署微服务化容器应用时,由于容器数目较多,往往需要自动化集群调度工具,譬如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的云原生应用战略》。

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

调度器 (Scheduler)

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

光子控制器的调度使用常见的主-从模式:包括若干个主调度器(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这些集群。这样,租户之间、租户的项目之间就可共享资源。

光子控制器的用法

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

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

❷然后部署Swarm集群:

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

export DOCKER_HOST=”tcp://<Master IP>:8333

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

小结

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

欢迎通过评论交流。

本文分享自微信公众号 - 亨利笔记(henglibiji),作者:Henry

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-11-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Fabric基础架构原理(3):通道 | 赠书活动

    通道是Fabric中非常重要的概念,它实质是由排序节点划分和管理的私有原子广播通道,目的是对通道的信息进行隔离,使得通道外的实体无法访问通道内的信息,从而实现交...

    用户5128711
  • 明星游戏 FOMO3D 代码剖析 | 直播预告

    前段时间令人瞩目的明星游戏 FOMO3D,大家可能都有了解,也许一部分朋友也参与进去了,题图的游戏界面,大家感受下。

    用户5128711
  • Harbor: 跨数据中心复制Docker镜像的开源实现

    VMware公司3月份开源了企业级Registry项目Harbor,由VMware中国研发的团队负责开发。Harbor可帮助用户迅速搭建企业级的registry...

    用户5128711
  • [x86][kvm]avx512指令相关

    前文《[x86][linux]AVX512指令引起的进程crash》中,介绍了一次因为avx512指令导致的进程crash。

    皮振伟
  • 市北创新城市治理模式17000个古力盖全部连上大数据

    某条路上的古力盖缺失,各个部门不必再跑去现场查看权属和型号,只要在城市治理网格化系统平台上查看,就能确定该古力盖的产权单位 、型号等信息 ,直接由该部门前往现场...

    企鹅号小编
  • SQL Server数据库row_number() over() 来自动产生行号

    本文我们主要介绍了SQL Server数据库用row_number() over() 来自动产生行号的一系列的操作,希望本次的介绍能够对您有所帮助。

    跟着阿笨一起玩NET
  • SharePoint 2013怎样创建Wiki库

    我们使用Wiki页面来分享知识,增进团队合作。下面我将向大家展示SharePoint 2013 Wiki的使用方法。教程我都将以这张Wiki页面(即当前页)为示...

    用户1161731
  • python import 机制

    Python 环境初始化过程中就会将sys module加载到内存中,但是为了local空间更干净,需要用户亲自导入,通知python.module对象实际...

    用户2398817
  • python 代码统计文件的行数

    用户2398817
  • 290家公司都在用的任务调度系统,还在Github上开源了

    今天,和大家介绍一个轻量级分布式任务调度平台,开发迅速、学习简单、轻量级、易扩展,290家公司都在用,它就是XXL-JOB,包括比较知名的大众点评,京东,优信二...

    用户6543014

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动