转载

Supergiant.io —— 服务于有状态应用的容器平台

Supergiant 是一个使用Kubernetes打造的容器托管平台,适用于分布式的有状态应用。Supergiant是由 Qbox.io 团队所开发的,该团队同时还提供了托管版本的Elasticsearch。

Supergiant是一种能够运行Docker容器、以托管有状态、集群化应用的框架。它的内部实现利用了Kubernetes的功能,但也开发了自有的结构与代码,以避免出现Kubernetes无法满足需求的场景,例如持久化保存以及外部的负载均衡。InfoQ与Qbox的CEO和联合创始人,同时也是Supergiant的创建者Mark Brandon进行了一次访谈,以深入了解Supergiant的技术细节。

QBox.io团队早期的业务是提供托管版本的Elasticsearch,当时他们经历过各种问题,其中包括由于因“ 吵闹的邻居 ”效应(本意是指某个VM由于存储而产生的大量I/O操作对同一环境中其他VM的影响)而难以实现扩展的情况。 根据团队的博客文章所说 ,对于管理互联的容器与卷的管理,Docker与Kubernetes看起来是一种正确的选择。

部署在Supergiant平台上的应用中所涉及的存储功能都被分配在高可用的阵列中,但它并没有使用Kubernetes中的 持久化数据卷 。AWS目前已经提供了对Supergiant的支持,Supergiant使用了AWS中的Elastic Block Store(EBS),因此数据卷可随意在集群中移动。EBS中的数据卷的行为类似于硬盘,可接入虚拟机中或者撤消(也可进行挂载与卸载)。由于EBS数据卷的持久化可支持节点服务器的重启,因此即便某个节点变得不可用,数据也不会丢失。

Kubernetes内置了负载均衡与高可用性方面的特性。按照Brandon的说法,Supergiant特意为外部的负载均衡功能编写了代码,因为“虽然Kubernetes的内部负载均衡功能十分出色,但它的外部负载均衡策略对于Elasticsearch这样的分布式应用来说并非最佳。”

为了使你的软件作为一个Supergiant应用运行,它必须被打包为一个“组件”。这种组件既可以是一个NoSQL数据库,也可以是一个web服务器或node.js应用。根据Brandon所说:“任何一种可被Docker化的应用都可以成为一个组件”。Supergiant还提供了一套基于HTTP的API,用于组件的定义。

运行在AWS环境中的应用都需要满足一个要求,即可以忍受可用性地域(AZ)的故障,而对跨区域可用性的支持则是更高级别的能力。根据Brandon的说法,Supergiant可管理跨多个AWS地域的集群。

查看英文原文: Supergiant.io - Container Platform for Stateful Applications

原文  http://www.infoq.com/cn/news/2016/05/supergiant-container-platform
正文到此结束
Loading...