美好的一周又开始了,今天小数带来的文章里将讨论 Mesos的不同存储选项以及如何利用Flocker简化自动持久任务流程——精彩多多,不容错过:)
小数预告:从明天开始,数人云微信群将进行Dockercon西雅图盛会的精彩直播,敬请期待~
目录
• Apache Mesos是什么?
• 使用永久存储
• 本地文件系统
• 永久分卷
• 动态预留
• Docker容器化工具与Docker分卷插件
• 框架、模块与隔离器
• 数据存储框架
• 总结
Apache Mesos是什么?
“Apache Mesos能够将CPU、内存、存储以及其它计算资源由设备(物理或虚拟)中抽象出来,从而实现高容错与弹性分布式系统的轻松构建与高效运行。”
Apache Mesos的任务运行方式在于,其允许框架在Mesos基础之上接收CPU、内存、网络与存储资源,并对资源加以调度从而执行任务。值得注意的是,各任务可通过调度在容器内运行,而部分任务可能需要永久存储作为配合。需要配合永久存储机制的任务包括MySQL、MongoDB等数据库,以及Nginx缓存、日志记录目录和博客软件用于存储数据的数据目录等Web缓存机制。框架始终需要依靠Mesos为其提供执行任务所必需的物理或虚拟资源。
使用永久存储
Apache Mesos的主要工作就是为任务提供并管理资源。一般来讲,这些任务会从节点中解耦出来以实现故障转移、灵活性与可扩展性。然而,在运行需要永久存储的服务时,我们可以在任务中引入依赖性以指定服务运行时是否使用该节点的本地存储。需要访问容器外存储的应用一般包括数据库(NoSQL/SQL)、Web缓存、应用日志以及秘密存储等。我们将在以下示意图中列举一项任务与数据示例:
大家可以使用多种不同方案与架构以实现数据可用性、安全性与任务一致性。在接下来的内容中,我们将探讨Apache Mesos中的现有存储处理方式,并了解如何解决其中存在的技术陷阱。
本地文件系统
普通本地文件系统
这类方案最易于实现,但却拥有多种缺陷。首先,任务会引用主机节点上的本地文件系统,而数据则存储在任务运行所在的节点磁盘当中。因此,该任务不具备灵活性,即无法实现故障转移或者在集群中往来迁移。有鉴于此,Mesos将对该节点进行重新调度,并将任务“pin”至此节点内的已知数据存储位置。我们可以使用指向其它存储位置的定期备份来实现故障转移,但配置过程非常复杂,且无法发挥Mesos自身的诸多优势。
使用复制或分布式文件系统
解决上述缺陷的一种可行途径就是采用NFS及GLusterFS等共享或分布式文件系统。这两种选项都会为节点提供基于PSIX的存储访问合规性,且可以集中方式或者立足单一节点进行管理。以下示意图说明了这两种选项的基本原理。
这类实现方案中存在着一些陷阱,可能会带来极为沉重的管理强度,由于网络依赖性而导致崩溃或者当机,或者导致任务更适合运行在本地、iSCSI或者光纤通道系统上而非基于外部网络的POSIX文件存储之上。
其优势在于,我们可以将各任务重新调度至其它Mesos节点上,而且NFS实际上较其它分布式文件系统更易于安装及配置。
永久分卷
Mesos中的永久分卷(即Persistent Volumes)负责在任务创建时指定其所使用的磁盘(存储)资源。
从Mesos的角度来看,这些磁盘利用Mesos从节点中的存储资源创建而成,并将在任务结束后继续存在。在任务存在时,这些存储资源可被分配至系统其余位置,保证其它任务也能够使用其中的永久数据。这意味着数据不会根据具体任务进行垃圾回收。Mesos确保用户可在任务调度之前预留磁盘资源。
Mesos中的这种永久分卷使用方式与本地文件系统类似,二者的区别在于Mesos会指定视角来规划如何为任务生成此类存储资源。但有一点需要注意,如果运维人员利用本地SSD创建Path或者Mount磁盘,则与之相关的附加存储或者分布式存储也会受到影响。除了无法实现系统管理自动化且磁盘必须进行附加之外,我们需要首先在其上创建并启用文件系统,而后才能将其分配给Mesos。另外,Path磁盘必须保证各磁盘由单一后端磁盘root路径创建得来,而Mount磁盘则需要全盘专用于某一任务。
动态预留
动态预留(即Dynamic Reservations)相较于静态预留更进一步,使得各框架能够在Mesos从进程已经启动之后预留存储资源。
如此一来,Mesos就能够为某一框架预留特定数量的资源并在随后进行交付。举例来说,一套专门针对MySQL部署设计的框架可以确保其使用动态预留存储资源,同时保证这些存储资源只供MySQL永久服务使用。
这套方案对于原始存储资源的灵活性影响不大,而且成为Mesos中的一大特殊功能。不过其仍然存在着优势与缺点,我们已经在之前的本地文件系统与永久分卷章节中进行了讨论。
Docker容器化工具与Docker分卷插件
确保永久服务实现灵活性的方法之一在于使用Docker分卷插件,其不仅能够实现与本地文件系统类似的用例,同时也能够实现共享式存储集成体系——其中附加有块存储设备,且会在任务启动前被安装于Mesos从节点当中。
利用这种方法,大家可以通过Docker获得对驱动程序的原生支持能力,同时得以发挥SAN或软件定义存储(简称SDS)平台等现有系统的既有优势。
部分SDS系统可被部署为超融合形式,其中存储资源以池化方式存在,且可跨越不同SDS解决方案进行复制以实现冗余。如此一来,存储体系所占用的网络传输能力将远低于传统集中化SAN。目前每种方法可谓各有优劣,具体选择要根据实际用例而定。
以下示图为多节点场景下的SDS层,其中各分卷表现为“本地”形式,且可利用网络在不同Mesos从节点间往来复制。另外,这也是一套基于SAN的方案,各分卷由外部SAN设备通过网络接入Mesos从节点。
其积极因素包括出色的灵活性——这主要贡献于各分卷能够在任务动态启动时同时创建、安装并可用于文件系统——故障转移以及高可用性。而负面因素则包括负载较重且配置较为复杂。
Docker插件包括:
• Flocker
• Convoy
• Blockbridge
• REX-Ray
• OpenStorage
• GlusterFS
以及更多。
框架、模块与隔离器
与之前提到的SAN与SDS用例一样,Mesos也提供模块、框架与隔离器以帮助用户在无需使用Docker容器化工具的前提下运用分卷插件。这意味着任务能够享受到之前提到的各种助益,包括无需Docker实现联网块存储与本地Mesos的配合。
另有多种模块及隔离器面向共享式存储。
Flocker框架
Mesos Flocker项目旨在为Mesos添加云存储机制。在它的帮助下,我们可以利用冗余数据存储支持有状态应用。
该框架以透明化方式处理与采用Flocker的云服务供应商间的通信。Mesos-Flocker能够确保我们的数据在面向容器时始终具备可用性——即使是在故障转移期间。
Mesos模块DVDI
DVDI Mesos模块是一款用于为Mesos容纳Docker分卷驱动隔离器模块(即Docker Volume Driver Isolator Module)的工具。它的作用是创建一个驻留在Mesos从节点中的模块,并为每个被分配至从节点的任务创建/安装/反安装外部存储资源。
其独特之处在于,我们可以利用它适应Docker分卷驱动所提供的多种不同存储平台,同时允许用户利用任务中的分卷选项进行配置。
数据存储框架
我们可以利用多种数据存储框架对服务或者平台进行管理,从而为Mesos中的应用提供数据存储。数据存储框架与前面提到的、能够给应用实际提供原始存储资源的示例不同,但这里仍然有必要对其进行说明。
面向特定数据服务的主要数据存储框架包括:
-
Cassandra(https://github.com/mesosphere/cassandra-mesos)
-
ElasticSearch(http://mesos-elasticsearch.readthedocs.io/en/latest/)
-
HyperTable(https://code.google.com/archive/p/hypertable/wikis/Mesos.wiki)
-
A lluxio (原名Tachyon,http://www.alluxio.org/)
这份清单没有列入Apache Cotton,其此前曾名为Mysos且负责将MySQL实例作为框架运行在Mesos当中。不过根据孵化器项目网站上的说明,Apache Cotton似乎已经被放弃。
总结
总体来讲,Mesos拥有丰富的可选方案供用户使用。预计未来还将有更多新型框架及架构与大家见面,因此在从中选取正确方案时,大家请注意结合应用与用例的实际情况。
(本文源自:ClusterHQ,作者Ryan Wallner)
相关推荐
Mesos的核心理念是资源抽象和共享,它能够有效地在集群中分配计算和存储资源,为上层框架如Hadoop、Spark、Kubernetes等提供统一的资源管理层。通过Mesos,开发者可以轻松地构建容错、弹性的应用,同时减少运维的...
### Mesos运行测试结果分析 #### 一、测试概述与目的 本次测试旨在评估Mesos在不同...对于未来的研究方向,建议进一步探索如何优化Mesos与现有技术栈的集成,以及如何提高其在大规模分布式系统中的适用性和性能表现。
1. **Mesos简介**:Mesos是基于模块化的架构设计,能够高效地管理和调度集群中的计算和存储资源。它将数据中心视为一个统一的资源池,允许不同的应用和服务共享这些资源,减少了资源浪费和提升了整体效率。 2. **...
这样的设计让Mesos能够更加灵活地支持各种不同的任务运行环境。 在安全性和授权方面,Mesos支持Framework Authorization和Framework Rate Limiting来确保集群资源的安全和公平使用。日志与调试功能也非常关键,它...
Mesos 的核心特性在于其细粒度的资源共享方式,它允许框架通过轮流访问每台机器上的数据来实现数据局部性,从而优化计算性能。 Mesos 采用了分布式两级调度机制,称为 resource offers,来支持精确的框架调度。在这...
这些组件之间的交互方式以及数据流的处理逻辑也被详细介绍。通过这一章节的学习,读者可以深入了解Mesos的内部运作机制。 **第5章:日志记录与调试** 本章专门讲述了Mesos的日志记录和调试技巧。详细介绍了如何...
vagrant-mesos 是一款运维工具,可以使 Mesos 集群的安装和运行更加容易。vagrant-mesos 支持 Mesos 0.21.0 集群,同时包括 Marathon (0.8.0) 和 Chronos (2.1.0)正在运行的框架服务器节点。这意味着,你可以使用 ...
Mesos CLI由vektorlab开发,旨在提供更加丰富和便捷的交互方式,使用户可以更轻松地操作和管理Mesos集群。 首先,我们要理解Apache Mesos的基本概念。Mesos分为三个主要组件:Master、Agent和框架。Master节点负责...
Mesos能够支持运行在节点上的各种容器框架,这为开发者和运维人员提供了极大的便利,因为他们可以用一个统一的平台来管理各种分布式应用和微服务。 4. Mesos的最佳实践。肖德时还分享了在使用Apache Mesos过程中的...
【标题】:“mesos系列文章”指的是一组与Mesos相关的技术文章,Mesos是Apache软件基金会的一个开源项目,它提供了一个分布式系统的资源抽象层,使得在大规模集群上运行各种分布式应用和服务变得简单。这一系列文章...
此外,对于Mesos的工作原理和资源分配策略的掌握也是必要的,以便于在使用过程中能够有效地排查和解决可能出现的问题。 在国内,随着企业对数据中心管理和PaaS需求的增长,Mesos的应用前景被看好。传统运维向云时代...
藏经阁-基于Mesos_Docker构建数据处理平台....由此可见,本资源提供了一个基于Mesos和Docker的数据处理平台解决方案,涵盖了分布式计算、流式数据处理、数据存储、安全、监控和日志记录、资源分配等多个方面的知识点。
从Mesos到Kubernetes
ceph-mesos, 用于扩展Ceph集群的Mesos框架 在 Apache Mesos上的使用 Docker 来扩展Ceph集群的Mesos框架。 它旨在成为一个快速而可靠的解决方案。目前,它只能:启动 1,3 osd,1 radosgw 。 基于的接受 RESTful ...
Set up Mesos on different operating systems Use the Marathon and Chronos frameworks to manage multiple applications Work with Mesos and Docker Integrate Mesos with Spark and other big data frameworks ...