Apache Mesos 的“主”节点可以与 Mesos 的“从”节点位于同一台机器上吗?同样(对于高可用性(HA)部署),用于 Mesos 'master' 选举的 Apache Zookeeper 节点是否可以与 Mesos 'slave' 节点部署在同一台机器上?
Mesos 建议使用 3 个“masters”进行 HA 部署,Zookeeper 建议使用 5 个节点用于其仲裁选举系统。最好让这些服务与 Mesos 的“从属”进程一起运行,而不是将 8 台机器用于有效的“非生产性”任务。
如果这样的设置是可行的,那么这种设置的利弊是什么?
谢谢!
请您参考如下方法:
您绝对可以在同一个节点上运行主、从和 zk 进程。您甚至可以在同一个节点上运行多个主进程和从进程,前提是您为它们提供了每个唯一的端口,但这仅对测试集群有用。
通常,我们建议在与主节点相同的节点上运行 ZK,但如果您有额外的 ZK,您当然可以在从节点上运行它们,或者您认为合适的混合搭配,只要所有主/从/框架节点都可以到达 ZK 节点,所有从站都可以到达主站。
对于较小的集群(<10 个节点),在每个主节点上运行一个从进程是有意义的,特别是因为备用主节点不会做太多事情。即使是小型集群的事件 master 也只使用少量的 cpu、内存和网络资源。只需确保调整该从站上的 --resources 以考虑主站的资源使用情况。
一旦您的集群变大(尤其是 >100 个节点),进/出主节点的网络流量以及它的 cpu/内存利用率变得足够重要,以至于您不想在与主节点相同的节点上运行 mesos 从节点。即使在大规模的情况下,将 ZK 与您的 master 放在一起应该没问题。
您没有具体询问,但我还将讨论在何处运行您的框架调度程序(例如 Spark、Marathon 或 Chronos)。这些可以与任何其他组件位于同一位置,但它们只需要真正能够到达主节点和 zk 节点,因为与从节点的所有通信都通过主节点。一些客户在主节点上运行调度程序,一些在边缘节点上运行它们(因此用户无法访问从节点),而其他客户使用像 Marathon 这样的元框架在从节点上运行其他调度程序作为 Mesos 任务。


