2017-04-03 60 views
1

我正在尝试将marathon-lb部署到我在集群中的公共代理上创建的Mesos角色。我的自定义角色在群集中可见,但是当马拉松-lb部署到我的角色时,它最终会永远等待。部署到自定义Mesos角色的任务永久等待

我不方便与Mesos找出部署等待什么。我查看了主/代理日志,但没有任何内容跳出相关。任何指针在这方面的赞赏。

主设备未配置为将任何特定角色列入白名单(通过--roles),所以我应该能够为集群引入任意角色。事实上,主人可以看到"slave_public_tools"作用:

[[email protected] ~]$ curl -s master.mesos:5050/roles | jq 
{ 
    "roles": [ 
    { 
     "frameworks": [ 
     "2a2b67f7-1440-4594-9cb9-bb86d3cbc110-0002", 
     "2a2b67f7-1440-4594-9cb9-bb86d3cbc110-0001" 
     ], 
     "name": "*", 
     "resources": { 
     "cpus": 0, 
     "disk": 0, 
     "gpus": 0, 
     "mem": 0 
     }, 
     "weight": 1 
    }, 
    { 
     "frameworks": [ 
     "2a2b67f7-1440-4594-9cb9-bb86d3cbc110-0000" 
     ], 
     "name": "slave_public", 
     "resources": { 
     "cpus": 0, 
     "disk": 0, 
     "gpus": 0, 
     "mem": 0 
     }, 
     "weight": 1 
    }, 
    { 
     "frameworks": [ 
     "2a2b67f7-1440-4594-9cb9-bb86d3cbc110-0004", 
     "2a2b67f7-1440-4594-9cb9-bb86d3cbc110-0003" 
     ], 
     "name": "slave_public_tools", 
     "resources": { 
     "cpus": 0, 
     "disk": 0, 
     "gpus": 0, 
     "mem": 0 
     }, 
     "weight": 1 
    } 
    ] 
} 

如果它的事项,我通过在代理首次启动时间前的公共代理/var/lib/dcos/mesos-slave-common设置MESOS_DEFAULT_ROLE=slave_public_tools创建"slave_public_tools"作用。该mesos剂似乎认识到默认角色设置和作用具有资源:

[[email protected] ~]$ url -s 10.0.1.14:5051/state | jq '{ default_role : .flags.default_role }, .reserved_resources_full' 
{ 
    "default_role": "slave_public_tools" 
} 
{ 
    "slave_public_tools": [ 
    { 
     "name": "ports", 
     "type": "RANGES", 
     "ranges": { 
     "range": [ 
      { 
      "begin": 1, 
      "end": 21 
      }, 
      { 
      "begin": 23, 
      "end": 5050 
      }, 
      { 
      "begin": 5052, 
      "end": 32000 
      } 
     ] 
     }, 
     "role": "slave_public_tools" 
    }, 
    { 
     "name": "disk", 
     "type": "SCALAR", 
     "scalar": { 
     "value": 51042 
     }, 
     "role": "slave_public_tools", 
     "disk": { 
     "source": { 
      "type": "MOUNT", 
      "mount": { 
      "root": "/dcos/volume0" 
      } 
     } 
     } 
    }, 
    { 
     "name": "disk", 
     "type": "SCALAR", 
     "scalar": { 
     "value": 51042 
     }, 
     "role": "slave_public_tools" 
    }, 
    { 
     "name": "cpus", 
     "type": "SCALAR", 
     "scalar": { 
     "value": 2 
     }, 
     "role": "slave_public_tools" 
    }, 
    { 
     "name": "mem", 
     "type": "SCALAR", 
     "scalar": { 
     "value": 6037 
     }, 
     "role": "slave_public_tools" 
    } 
    ] 
} 

部署马拉松磅时,我用下面的options.json:

{ 
    "marathon-lb":{ 
    "name":"marathon-lb-tools", 
    "haproxy-group":"public-tools", 
    "bind-http-https":true, 
    "role":"slave_public_tools" 
    } 
} 

通过我的方式这样做是因为我想在集群中进行两次马拉松式lb部署。两个LB都需要从外部访问,但其中一个将代理高吞吐量应用程序,并需要相应扩展,另一个将用于各种低带宽应用程序。

也许有更好的方法来实现这些目标,但创建一个单独的Mesos角色,可用于配置了特定haproxy组的marathon-lb,对我来说似乎很明显。

+0

如果您运行此两个不同的代理程序,您可以使用主机名约束将Marathon-lb实例固定到特定代理程序 – Tobi

+1

您是否有日志表单计划程序?应该有信息为什么没有开始任务。 – janisz

回答

0

谢谢大家的建议。我了解到我的marathon-lb没有部署,因为dc/os默认运行的马拉松集群只接受'*'和'slave_public'角色的报价。

我需要启动另一个马拉松实例mesos_role设置为“slave_public_tools”来完成这项工作。