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 这项功能的出现无疑是 MesosKubernetesCloud Foundry 以及 Docker 技术社区之间密切合作的结果 CSI 的主要作用在于允许存储供应商编写出适用于全部容器编排平台的插件
对 CSI 的支持将帮助 Mesos 始终与规模更大的存储生态系统保持步调一致, 从而确保 Mesos 一直具备更强大的存储支持能力用户将能够在包含 Mesos 的任何存储系统当中使用一致的 API 选项 CSI 的 out-of-tree 插件模式将 Mesos 的发布周期与存储系统的发布周期区分开来, 使得集成系统本身更具可持续性与可维护性
上图所示为 Mesos 所支持的 CSI 高层架构若需了解更多细节信息, 请参阅 说明文档[2]
提升操作人员使用体验
代理重新配置策略
在 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%
除此之外, v1 操作状态查询 API 的性能也得到了极大改进, 这要归功于我们消除了过程中不必要的复制操作具体来讲, 目前 v1 protobuf GetState 调用速度较 v0 提高了 36% 此外, v1 JSON Get Sstate 性能亦提升了四倍以上
更多详尽基准测试结果, 请参阅此电子表格[3]
资源管理
配额保障改进
此次发布的新版本当中引入了多项与配额机制相关的改进如今, Mesos 将能够更好地保证角色获取配额以及角色不致超额等等, 例如:
此前, 一个角色可收集未使用的预留配额以愚弄配额系统, 但如今新版本会在分配资源时对预留配额进行核算, 从而防止这种情况的发生
资源如今会以细粒度方式进行分配, 以防止角色出现超额状况
无配额角色可能收到保留资源的 bug 已经得到修复
角色的保留资源高于配额资源时, 可能出现配额空间缺失的问题已经得到修复
当把资源分配给某个具有资源配额的角色时, 此前的版本亦会将部分超出该角色配额之外的资源移交给它这意味着不同角色的资源配额可能无法得到正确执行目前这个问题已经通过在分配资源时计算余量的方式 [4] 得到解决
资源提供方抽象
为了将资源与代理生命周期加以拆毁, 我们引入了资源提供方这一抽象机制其作用在于支持代理资源的动态变化外部资源供应方整合乃至集群范围内资源管理作为资源责任分离思路的组成部分, 我们引入了一项新的资源分配协议, 旨在更明确地就成功或失败结果进行通信, 同时实现各集群组件间的协调我们使用新的资源供应方抽象将代理本地存储资源同 CSI 通过接口加以整合
容器化与多平台支持
Windows 支持能力得到改善
随着 Mesos 1.5 版本的发布, Windows 支持能力得到了极大改善现在, 您在利用 Mesos 容器运行任务时, 可以通过作业对象 (MEOS-6690[5]) 立足操作系统层级实现资源限制在使用 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 镜像大量占用的难题具体请参阅容器镜像垃圾收集说明文档 [6] 以了解更多细节信息
独立容器
本次新版本包含一组新的操作程序 API, 用于启动并管理所谓独立容器这一新型原语独立容器类似于由 Mesos 代理之上的框架所启动的容器, 只是独立容器由操作程序在 Mesos 代理上直接启动如此一来, 这些容器将无需使用 Mesos 执行器, 且具有其它一些限制特性 (例如无法使用预留资源等) 与此同时, 独立容器几乎与其它容器完全隔离, 并与容器镜像类似能够使用同样的容器化功能集
此项功能的发布旨在支持 CSI 工作流, 但各 API 并不限于此用例未来, 此项功能可能将被用于为各代理节点实现守护进程具体请参阅 MESOS-7302 以了解更多细节信息
Mesos 内部
支持 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 非常简单请参阅升级指南 [7] 以了解更多与升级至 Mesos 1.5.0 相关的细节信息
希望 Apache Mesos 1.5 能够让您满意!
相关链接:
- https://github.com/container-storage-interface/spec
- http://mesos.apache.org/documentation/latest/csi/
- http://mesos.apache.org/blog/performance-working-group-progress-report/
- https://issues.apache.org/jira/browse/MESOS-8352
- https://issues-test.apache.org/jira/browse/MESOS-6690
- http://mesos.apache.org/documentation/latest/container-image/#garbage-collect-unused-container-images
- http://mesos.apache.org/documentation/latest/upgrades/
来源: https://juejin.im/entry/5a7d158a6fb9a0635a655704