【问题标题】:Mesophere cluster with nodes of different operating systems具有不同操作系统节点的中间层集群
【发布时间】:2018-02-22 06:19:21
【问题描述】:

我想设置一个 Mesophere 集群(mesos、dc/os、marathon)来运行不同的作业。这些作业运行的节点取决于作业的性质。例如,使用 C# 代码的作业将在 Windows 节点上运行。纯 C++ 的作业将在 Ubuntu 或 freebsd 等上运行。这些中的每一个都可以再次成为一个集群。即我想要,比如说,2个windows节点和4个ubuntu节点。所以我想知道:

  1. 这可以在单个部署中实现吗?或者我是否需要为我想要的到达环境设置不同的集群,一个用于 Windows,一个用于 Ubuntu 等。

  2. Mesos 是否提供了节点发回​​内容的粒度,无论是单个混合环境还是多个环境。即我不想看到诸如作业失败或正在运行等高级状态。我的作业将统计信息写入系统上的文件,我想将其转发回“主 UI”或管理所有这些的层

【问题讨论】:

  • Afaik DC/OS 既不支持 Ubuntu 也不支持 Windows。

标签: mesos marathon mesosphere


【解决方案1】:
  1. 这可以在一次部署中实现吗?

如果你想使用DCOS,目前官方只支持centos/redhat,对于ubuntu,你至少需要使用1604,它使用systemd而不是ubuntu的老新贵。但是 afaik,DCOS 不支持 windows。

所以对于你的场景,你必须直接使用mesos而不是使用dcos,然后使用一个集群,你可以在ubuntu或windows上设置不同的mesos代理。并且你可以在agent注册到mesos master的时候添加角色或者属性,这样框架可以在将job分派给合适的agent时进行区分。

顺便说一句,对于windows,你必须至少使用支持windows的1.3.0 mesos,并且你必须自己使用microsoft visual studio在windows上构建它。

  1. mesos 是否提供节点发回内容的粒度?

可以,但是不能使用默认的命令执行器,需要自己编写执行器。

在你的执行器中,你可以设置你想要发回的值:

update = mesos_pb2.TaskStatus()
update.task_id.value = task.task_id.value
update.state = mesos_pb2.TASK_RUNNING
update.data = 'data with a \0 byte'
driver.sendStatusUpdate(update)

在您的框架中,您可以按如下方式接收它:

def statusUpdate(self, driver, update):
    slave_id, executor_id = self.taskData[update.task_id.value]

Here 是我从 github 找到的一个示例,它可以帮助您了解如何将自己的数据发回。

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 2019-03-22
    • 1970-01-01
    • 2021-02-14
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2023-03-18
    相关资源
    最近更新 更多