具有不同操作系统节点的中间层集群

n7taea2i  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(259)

我想建立一个中间层集群(mesos,dc/os,marathon)来运行不同的作业。运行这些作业的节点取决于作业的性质。例如,带有c代码的作业将在windows节点上运行。纯c++的作业将在ubuntu或freebsd上运行,以此类推。每一个都可以是一个集群。比如说,我想要2个windows节点和4个ubuntu节点。所以我想知道:
这能在一次部署中实现吗?或者我需要为我想要的reach环境设置不同的集群,一个用于windows,一个用于ubuntu等等。
无论是单个混合环境还是多个环境,mesos都提供了节点发回的信息的粒度。i、 我不想看到高层次的状态,如作业失败或运行等,我的作业写统计到系统上的一个文件,我想中继回“主用户界面”或层管理这一切

cnh2zyt3

cnh2zyt31#

这能在一次部署中实现吗?
如果你想使用dcos,目前官方只支持centos/redhat,对于ubuntu,你至少需要使用1604,它使用的是systemd而不是ubuntu的老新贵。但另外,dcos不支持windows。
所以对于您的场景,您必须直接使用mesos而不是使用dcos,然后使用一个集群,您可以在ubuntu或windows上设置不同的mesos代理。并且可以在代理注册到mesos master时添加角色或属性,这样框架就可以区分何时将作业分派给合适的代理。
顺便说一句,对于windows,您必须使用至少1.3.0支持windows的mesos,并且您必须自己使用microsoftvisualstudio在windows上构建它。
meso是否提供了节点发回的内容的粒度?
是的,但是您不能使用默认的命令执行器,您需要编写自己的执行器。
在executor中,可以设置要发回的值:

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]

下面是我从github找到的一个示例,它可以帮助您发送自己的数据。

相关问题