博客

容器扩展的艺术: 发现

Lori MacVittie 缩略图
洛里·麦克维蒂
2017 年 12 月 28 日发布

扩展容器不仅仅是在服务前面放置一个代理然后走开。 扩展不仅仅是分布,在快节奏的容器世界中,需要五种不同的功能来确保扩展:重试、断路器、发现、分发和监控。

在这篇有关容器扩展艺术的文章中,我们将深入探索。

发现

传统的秤模型在结构上相对固定。 负载平衡代理使用算法从相当静态的资源池中选择资源。 虽然资源的选择(分配)是一个实时事件,并且可能包括考虑诸如负载和响应时间等即时变量,但整体环境却并非如此。 操作员根据企业定义的控制容量增加或减少的流程来添加和删除资源。

现代规模模型本质上是易变且动态的。 现代系统中规模的前提是基于一切的“自动化”。 自动扩展是云计算具体化的一个概念,它强制根据需求扩大和收缩资源池的概念。但这只是传统模型的半步。 仍然存在“核心”资源池的概念,负载均衡算法从中进行选择。 该池可以动态扩展或收缩,但仍然受到其运行的相当传统的模型的限制。

容器——特别是容器编排环境——完全突破了这种模式。 端点(入口)的概念是基于容器的规模中少数“固定”元素之一,从路由规则到构成其支持池的资源等所有其他元素都被认为是高度可变的。 从理论上来说,容器可能只能存活几秒钟。 但在实际应用中,它们一般可以存活数天。 与资源生存期为数月(有时是数年)的传统模型相比,这种寿命给操作员带来了压力,如果没有自动化就无法承受。

因此,发现是扩展容器的关键组件。 负载平衡代理必须能够从资源池中选择一个资源,该资源池可能与一分钟前相同,也可能不同。 因此,大多数容器编排环境都包含资源“注册表”,可帮助代理实时发现资源以确保规模。

此过程不仅要求代理集成到容器编排生态系统中,而且还要求使用这些环境的通用语言:在容器编排环境中使用声明性配置文件(资源文件)和元数据,以允许代理识别附加到它们正在扩展的服务的资源。 这使得代理可以实时自动调整其资源“池”,避免选择已被关闭的资源的尴尬。

如果没有发现,负载均衡代理就无法有效地扩展容器环境中的应用和服务。 没有操作员能够通过手动配置方法跟上这种环境中的变化。 仅仅跟踪哪些资源是活跃的(以及附加到任何给定服务的资源)就会消耗他们大部分的时间,而几乎没有时间真正做出所需的改变。

发现提供了容器编排环境中的组件实时运行的方法,并通过确保负载均衡代理拥有按需选择资源所需的信息,使它们能够扩展应用程序和服务。