在2015年 DockerCon EU 中,VMware通过企业的 Github账号 开源了他们的 Photon Controller 产品。Photon Controller是 VMware中Photon platform 的一个组件。它为了优化“容器与云”工作负载,作为一个基础结构堆栈被设计出来。这个虚拟化平台通过许多框架,例如 Kubernetes 、 Docker Swarm 或 Mesos ,提供了API优先的用户体验、可扩展的控制平面和原生容器支持。
VMware blog 声明,Photon platform是一个新型基础结构堆栈,为了优化“原生云应用”,它基于VMware ESXi 管理程序,但是“它更倾向于在规模和速度上超过 vSphere 提供的丰富的管理功能”。此平台由Photon Machine,一个轻量级的、基于 ESX 的、有内置 Photon OS 的“microvisor”,和Photon Controller,一个分布式的、API驱动的、多租户的、包括 Project Lightwave 容器安全性项目的控制平面组成,并且为“极高的规模与改动”而设计。
Photon platform在八月份的VMworld中被发布,并承诺了“将Photon Controller开源,让开发者、客户和伙伴直接参与进来”。Photon Controller网站声明这个项目交付了:
Photon Controller架构由若干低耦合的部件或是由“分布式协作”管理的服务组成。端点在 Apache Zookeeper 注册,服务可能作为“横向扩展”(主动/主动)操作,使用备用服务器(主动/被动),或有明显分区的工作(例如计划程序)。Photon Controller的技术架构如下图:
图1. Photon Controller的技术架构
Photon Controller的外部API以 REST (基于HTTP的JSON)接口提供,用基于Java的 Dropwizard 框架实现。这些外部REST API是为了被水平扩展的、共享一个持久数据库(“CloudStore”)的API服务器显示而设计的。其中的持久数据库充当了一个容器状态、簇、VM、磁盘、网络和物理宿主的单一事实来源。面对API服务器,负载平衡器(例如 haproxy )将典型地被取代。
Photon Controller的大多数管理平面是用java实现的,其中有一些服务是在VMware的 Xenon框架 上实现的。这个框架是一个“分散的系统开发框架”,现在只能作为技术预览得到。ESX代理用Python实现,Photon Controller CLI,作为完备产品的集成测试,用Ruby实现。
每个由Photon Controller控制的物理宿主都有一个代理在其之上运行,提供用 Apache Thrift 实现的RPC接口,被其他所有部件用于与宿主交流。有很多特殊的部件用于监督其他部件的运行状况和开支管理。例如,“Chairman”负责计划程序的运行状况和树状拓扑结构。
VMware网站声明Photon Controller还实现了一种新奇的分布式计划程序:
它是计划程序服务节点的层次结构,其中树中的每个节点只能访问它的直接子节点。其中由父节点决定的负载/使用上的重要统计(stats)在计划程序中不断涌现,父节点沿计划程序树向下发送请求来解决配置需求。这样的话计划程序就避免了单一权值/配置数据库上的重负载。
有关Photon Platform和 Photon Controller 的更多信息可以在项目网站上找到,开源的代码可以在 VMware的Github库 中查看。开发者们可以使用项目的“ Devbox ”下载并运行一个小型的、单机的、测试用Photon Controller部署。有关项目的问题可以在 Photon Controller Google Group 中提问,也可以通过在 Stack Overflow 使用“photon-controller”标签提问。
查看英文原文: VMware Open Source 'Photon Controller' Infrastructure Control Plane at DockerCon EU
感谢张龙对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 (已满),InfoQ读者交流群(#2) )。