Mesos 1.5发布,在存储、性能资源管理以及容器化方面有重大改进


今天,我很高兴向大家宣布,Apache Mesos 1.5.0版本已经正式与您见面!

新的功能与改进

Mesos 1.5当中包含资源管理、存储与容器化方面的多项重大改进。容器存储接口(简称CSI)支持正是Mesos 1.5当中全瓣的实验性能力之一,此外亦有大量与之配合的新功能伴随1.5版本一道推出。对代理进行重新配置的新能力将使得操作人员拥有更出色的使用体验。性能提升使得主节点故障转移速度提升80%到85%,而v1 API性能也得到了显著改善。新版本中的资源管理机制更为灵活。此外,同样重要的是,镜像垃圾收集与更强大的Windows支持能力使得您能够更轻松地在不同基础设施类型之上运行Mesos,同时亦可在Mesos之上简单运行多种不同工作负载。

在接下来的文章中,我们将共同了解Mesos 1.5当中的各项卓越改进。

容器存储接口支持

Mesos 1.5以实验性方式增加了对容器存储接口(简称CSI)[1]的支持能力,这项新规范为存储供应商与容器编排平台之间的全部交互活动定义了一个通用型API。这项功能的出现无疑是Mesos、Kubernetes、Cloud Foundry以及Docker技术社区之间密切合作的结果。CSI的主要作用在于允许存储供应商编写出适用于全部容器编排平台的插件。
对CSI的支持将帮助Mesos始终与规模更大的存储生态系统保持步调一致,从而确保Mesos一直具备更强大的存储支持能力。用户将能够在包含Mesos的任何存储系统当中使用一致的API选项。CSI的out-of-tree插件模式将Mesos的发布周期与存储系统的发布周期区分开来,使得集成系统本身更具可持续性与可维护性。
01.png

上图所示为Mesos所支持的CSI高层架构。若需了解更多细节信息,请参阅说明文档

提升操作人员使用体验

代理重新配置策略

在Mesos 1.5之前,用户无法对代理的配置作出任何变更——惟一的方法就是关闭该代理上运行的所有任务,并使用新的代理ID重新启动。任何变化,例如添加额外属性或者新接入磁盘驱动器,都将导致代理启动中止并引发令人头痛的错误:

{{{EXIT with status 1: Failed to perform recovery: Incompatible agent info detected.

[...]

To remedy this do as follows:
Step 1: rm -f /path/to/work_dir/meta/slaves/latest
This ensures agent doesn't recover old live executors.
Step 2: Restart the agent.}}}
从1.5版本开始,操作人员能够使用新的代理命令行标记--reconfiguration_policy 对代理上应当允许的操作类型进行配置。在将该标记的值设置为additive时,代理将能够接受一切对代理资源量的变更以及对其它属性或故障域的调整。

未来,我们还希望能够进一步添加--reconfiguration_policy=any 设置选项以允许对代理配置作出任意变更。

性能改进

此版本还包括对主节点故障转移与v1操作状态查询API性能的改进。主节点故障转移完成时间的缩短,源自数据吞吐量高达450%到600%的显著提升,这意味着整体完成时间将缩短80%到85%。
02.png

除此之外,v1操作状态查询API的性能也得到了极大改进,这要归功于我们消除了过程中不必要的复制操作。具体来讲,目前v1 protobuf GetState调用速度较v0提高了36%。此外,v1 JSON Get Sstate性能亦提升了四倍以上。
03.png

更多详尽基准测试结果,请参阅此电子表格

资源管理

配额保障改进

此次发布的新版本当中引入了多项与配额机制相关的改进。如今,Mesos将能够更好地保证角色获取配额以及角色不致超额等等,例如:
  • 此前,一个角色可收集未使用的预留配额以“愚弄”配额系统,但如今新版本会在分配资源时对预留配额进行核算,从而防止这种情况的发生。
  • 资源如今会以细粒度方式进行分配,以防止角色出现超额状况。
  • 无配额角色可能收到保留资源的bug已经得到修复。
  • 角色的保留资源高于配额资源时,可能出现配额空间缺失的问题已经得到修复。
  • 当把资源分配给某个具有资源配额的角色时,此前的版本亦会将部分超出该角色配额之外的资源移交给它。这意味着不同角色的资源配额可能无法得到正确执行。目前这个问题已经通过在分配资源时计算余量的方式得到解决。


资源提供方抽象

为了将资源与代理生命周期加以拆毁,我们引入了资源提供方这一抽象机制。其作用在于支持代理资源的动态变化、外部资源供应方整合乃至集群范围内资源管理。作为资源责任分离思路的组成部分,我们引入了一项新的资源分配协议,旨在更明确地就成功或失败结果进行通信,同时实现各集群组件间的协调。我们使用新的资源供应方抽象将代理本地存储资源同CSI通过接口加以整合。

容器化与多平台支持

Windows 支持能力得到改善

随着Mesos 1.5版本的发布,Windows支持能力得到了极大改善。现在,您在利用Mesos容器运行任务时,可以通过作业对象(MEOS-6690)立足操作系统层级实现资源限制。在使用windows/cpu与windows/mem隔离器时,您可以对CPU周期与虚拟内存强制加以限制。此外,新版本现在也能够正确支持CPU与内存统计信息收集。Mesos fetcher已经被移植到Windows平台,支持通过TLS自动下载文件并释放ZIP压缩文件。在进行配置时,libprocess现在可配合Windows上的OpenSSL支持能力进行构建,这意味着TLS连接将可立足集群之内实现(请注意,由于Windows本身不提供OpenSSL,因此您需要在外部构建或安装OpenSSL)。第一种验证方法CRAM-MD5此次也正式登陆Windows,因此代理将可借此与主节点进行验证。HTTP与TCP状态检查机制也已经能够作用于Windows代理(可用于shell任务; Docker容器运行状态检查也即将推出)。Meos代理不再需要以管理员身份运行,因为其现在能够像普通用户一样创建符号链接,且此项功能已经被集成于代理当中。最后,虽然在上一版本中已经实现,但这里不妨再提一句——Windows本地长路径支持已经实现,意味着您将能够更轻松地立足Windows运行代理(无需进行注册表配置)。

容器镜像垃圾收集

Mesos 1.5版本支持容器镜像垃圾收集。目前您可以通过两种方式对未使用的镜像层进行垃圾收集:自动与手动。这项功能允许用户轻松解决磁盘空间被docker镜像大量占用的难题。具体请参阅容器镜像垃圾收集说明文档以了解更多细节信息。

独立容器

本次新版本包含一组新的操作程序API,用于启动并管理所谓“独立容器”这一新型原语。独立容器类似于由Mesos代理之上的框架所启动的容器,只是独立容器由操作程序在Mesos代理上直接启动。如此一来,这些容器将无需使用Mesos执行器,且具有其它一些限制特性(例如无法使用预留资源等)。与此同时,独立容器几乎与其它容器完全隔离,并与容器镜像类似——能够使用同样的容器化功能集。

此项功能的发布旨在支持CSI工作流,但各API并不限于此用例。未来,此项功能可能将被用于为各代理节点实现守护进程。具体请参阅MESOS-7302以了解更多细节信息。

Mesos内部

支持gRPC客户端

此次新版本包含一套gRPC客户端打包器。gRPC是一种PC机制,并作为RESST API的替代性方案在云原生领域愈发受到欢迎。作为将gRPC整合至Mesos的第一步,我们在libprocess当中添加了此客户端打包器以支持CSI。该功能在默认情况下处于禁用状态,您可以在安装有OpenSSL库的集群当中使用--enable-grpc (autotools)加以启用。该包装类负责在内部维护gRPC运行时数据结构,同时提供一个简单接口,以便实现与libprocess的基于actor模式相兼容的异步gRPC调用。我们还利用这项新功能连接CSI插件。除此之外,大家也可以使用这项新功能创建Mesos模块,用以同其基于gRPC的服务进行通信。

复制日志改进

Mesos复制日志可帮助各类框架(例如Apache Aurora)将自身状态保存为多套副本,从而在故障转移及重新启动时实现状态保留。从1.5版本开始,大家将能够读取来自一套非主导VOTING复制日志副本处以最终一致化方式进行读取。如此一来,您将能够在非主导框架副本之上进行其它处理工作,例如将部分读取任务移交至待命副本,或者将高频复制日志副本 保留在内存内以缩短故障转移时间。

升级

从Mesos 1.4.0升级至Mesos 1.5.0非常简单。请参阅升级指南以了解更多与升级至Mesos 1.5.0相关的细节信息。

社区

您是否在本次发布的新版本中受到了启发?您是否希望参与其中?您对此有何见解?我们期待着听到您的声音!请立即加入工作组或在社区中开启对话!

鸣谢!

感谢Mesos 1.5.0版本项目组的59位贡献者:

Aaron Wood, Adam B, Adam Dangoor, Akash Gupta, Alastair Montgomery, Alexander Rojas, Alexander Rukletsov, Anand Mazumdar, Andrei Budnik, Andrew Schwartzmeyer, Andrey Dudin, Andy Pang, Anindya Sinha, Armand Grillet, Avinash sridharan, Benjamin Bannier, Benjamin Hindman, Benjamin Mahler, Benno Evers, Bob Eckert, Chun-Hung Hsiao, Cynthia Thomas, Deepak Goel, Dmitry Zhuk, Gaston Kleiman, Gastón Kleiman, Gilbert Song, Greg Mann, Ilya Pronin, Jack Yang, James DeFelice, James Peach, Jan Schlicht, Jason Lai, Jeff Coffler, Jiang Yan Xu, Jie Yu, Joerg Schad, John Kordich, Joseph Wu, Julien Pepy, Kapil Arya, Kevin Klues, Megha Sharma, Meng Zhu, Michael Park, Nathan Jackson, Neil Conway, Packt, Pranay Kanwar, Qian Zhang, Quinn Leng, Richard Shaw, ThodorisZois, Till Toenshoff, Tomas Barton, Tomasz Janiszewski, Vinod Kone, Zhitao Li

希望Apache Mesos 1.5能够让您满意!

原文链接:Mesos 1.5: Storage, Performance, Resource Management, and Containerization improvements

0 个评论

要回复文章请先登录注册