如何为mesos上运行的马拉松应用程序选择cpu参数?

gkn4icbw  于 2021-06-21  发布在  Mesos
关注(0)|答案(2)|浏览(224)

我已经使用mesos集群一段时间了,并且考虑在我们的生产环境中使用mesos集群。有一个问题我似乎找不到答案:如何正确地安排长时间运行的应用程序,将有不同的负载?
marathon具有“cpu”属性,您可以在其中为特定应用程序的cpu分配设置权重(我计划运行docker容器),但据我所知,这只是一个重量,而不是预订,分配,或限制,我设置的应用程序。它仍然可以使用服务器上100%的cpu,如果它是唯一运行的东西的话。问题是,对于长时间运行的应用程序,资源需求会随着时间的推移而变化。例如,web服务器与流量成正比。再加上mesos将此设置视为“保留”,我在两个缺点中进行选择:设置太低,可能会在同一主机上启动太多进程,所有进程都将受到影响,主机cpu将超过100%。如果设置得太高,cpu就会闲置,因为已经进行了保留(或者mesos认为是这样),但是没有任何东西在使用这些资源。
你如何处理这个问题?我是否遗漏了mesos和marathon处理资源的方式?
我在想一个理想的方法:
为不同的应用程序指定cpu的权重(例如,从0.1到1的顺序),以便在遇到困难时,更高的优先级得到更多(就像现在一样)
让mesos从机报告“可用la”及其状态(例如,如果10分钟la为2,8个CPU可用,则报告6“可用la”)
将marathon配置为需要从机上的“可用la”资源来安排任务(例如,如果可用la<2,则不要在特定主机上启动)
当可用la变为0时(由于流量涌入的同时,某些作业在涌入之前已在同一服务器上启动)-让marathon将作业移动到另一个从属服务器,即具有更多“可用la”的从属服务器
有没有办法做到这一点?
到目前为止,我收集到我可以写一个定制的隔离器模块,它将在从属设备上运行,并将这个定制的度量报告给主设备。然后我可以在资源协商中使用它。这是真的吗?
我找不到任何关于马拉松重新安排不同节点上的任务,如果一个变得超负荷。有什么建议吗?

oxiaedzo

oxiaedzo1#

为了动态地进行分配,您可以使用mesos slave度量和marathonhttpapi来扩展,例如,正如我在这里所做的,在不同的上下文中。我的同事niklas和nibbler做了相关的工作,这可能也会有所帮助。

xdnvmnnf

xdnvmnnf2#

从mesos 0.23.0开始,支持超额认购。不幸的是,它还没有在马拉松比赛中实施:https://github.com/mesosphere/marathon/issues/2424

相关问题