具有不同操作系统节点的Mesophere集群

时间:2018-02-22 06:19:21

标签: mesos marathon mesosphere

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

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

  2. 不依赖于单个混合或多个环境,mesos是否提供节点发回的粒度。即我不希望看到工作失败或运行等高级状态。我的工作将统计信息写入系统上的文件,我想将其转发回“主UI”或管理所有这些的层

1 个答案:

答案 0 :(得分:0)

  
      
  1. 这可以在一次部署中实现吗?
  2.   

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

因此,对于您的场景,您必须直接使用mesos而不是使用dcos,然后使用一个群集,您可以在ubuntu或windows上设置不同的mesos代理。当代理注册到mesos master时,您可以添加角色或属性,因此框架可以区分派遣作业到适当的代理。

对于Windows,你必须使用至少1.3.0支持windows的mesos,你必须自己使用microsoft visual studio在windows上构建它。

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

是的,但您不能使用默认命令执行程序,您需要编写自己的执行程序。

在执行程序中,您可以设置要发回的值:

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找到的一个例子,它可以帮助你发送回自己的数据。