您绝对可以在同一个节点上运行master,slave和zk进程。您甚至可以在同一个节点上运行多个主进程和从进程,前提是您为每个端口提供了唯一的端口,但这只对测试群集有用。
通常我们建议在与主站相同的节点上运行ZK,但是如果您有额外的ZK,那么您肯定可以在从站上运行它们,或者按照您认为合适的方式进行混合匹配,只要所有主/从/框架节点可以到达ZK节点,并且所有从节点都可以到达主节点。
对于较小的群集(< 10个节点),在每个主节点上运行一个从属进程是有意义的,尤其是因为备用主节点不会做太多工作。即使是小群集的主动主节点也只使用少量的cpu,内存和网络资源。只要确保您调整了该从站上的资源以考虑到主站的资源使用情况。
一旦你的集群变大了(特别是> 100个节点),主/从主机的网络流量以及它的CPU /内存利用率就变得足够重要,以至于你不想在同一节点上运行一个mesos slave大师。即使在大规模的情况下将ZK与您的主人共同定位也不失为一件好事。
你没有特别问,但我也会讨论在哪里运行你的框架调度器(例如Spark,Marathon或Chronos)。这些可以与任何其他组件共处一处,但它们只需要能够到达主节点和zk节点,因为所有与奴隶的通信都通过主节点。有些客户在主节点上运行调度程序,有些在边缘节点上运行它们(因此用户无法访问从站),还有一些客户使用Marathon等元框架将其他调度程序作为Mesos任务运行在从站上。