我有3个Mesos从属集群,我有两个应用程序:“redis”和“memcached”。其中redis依赖于memcached,并且要求是两个应用程序/服务都应该在相同的节点而不是不同的从节点上启动。
所以我创建了应用程序组并在JSON文件中正确添加了依赖项。通过“v2 / groups”REST API启动JSON文件后,我发现有时两个应用程序组都将在同一节点上启动,但有时会在不同的从属服务器上启动,这会破坏我们的要求。
所以意图/要求是;如果任何应用程序无法在从属设备上启动,则应用程序应该故障转移到其他从属节点。我也可以配置JSON文件,告诉Marathon在slave-1(特定slave)上启动应用程序组(如果可用),或者在集群中的其他slave上启动它。由于某种原因,如果此应用程序组将从其他从属服务器启动,可以将Marathon重新启动应用程序组到slave-1(如果可用于服务请求)。
提前感谢您的帮助。
答案 0 :(得分:1)
编辑/更新(2): 现在可以使用Mesos,Marathon和DC / OS对POD的支持: DC / OS:https://dcos.io/docs/1.9/usage/pods/using-pods/ Mesos:https://github.com/apache/mesos/blob/master/docs/nested-container-and-task-group.md 马拉松:https://github.com/mesosphere/marathon/blob/master/docs/docs/pods.md
我认为你在谈论马拉松应用程序。
Marathon application groups没有关于同一节点上的共址的任何语义,并且依赖性也是如此。
你似乎在寻找马拉松中的Kubernetes like Pod abstraction ,这是在路线图上但尚未提供(参见上面的更新: - ))。
希望这有帮助!
答案 1 :(得分:0)
如果您在群组的JSON中指定了正确的应用程序约束,我认为这应该是可行的(作为解决方法)。
查看
上的示例请求和
中的约束语法e.g。
"constraints": [["hostname", "CLUSTER", "slave-1"]]
应该这样做。缺点是没有自动故障转移到另一个奴隶那样。不过,我很好奇为什么两个应用程序都需要专门在同一个从节点上运行......