部署到自定义Mesos角色的任务永远等待

时间:2017-04-03 15:55:22

标签: mesos mesosphere

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

我对Mesos不太方便,无法弄清楚部署在等待什么。我查看了主/代理日志,但没有任何相关内容跳出来。对此方面的任何指示都表示赞赏。

主服务器未配置为将任何特定角色列入白名单(通过--roles),因此我应该能够向群集中引入任意角色。实际上,大师可以看到"slave_public_tools"角色:

[centos@ip-10-0-1-25 ~]$ 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
    }
  ]
}

如果重要,我在代理首次启动之前,通过在公共代理上的"slave_public_tools"中设置MESOS_DEFAULT_ROLE=slave_public_tools来创建/var/lib/dcos/mesos-slave-common角色。 mesos代理似乎识别默认角色设置,角色具有资源:

[centos@ip-10-0-1-25 ~]$ 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"
    }
  ]
}

在部署marathon-lb时使用以下options.json:

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

顺便说一句,我这样做是因为我想在我的集群中进行两次marathon-lb部署。两个LB都需要外部访问,但是一个代理高吞吐量应用程序,需要相应扩展,另一个将用于各种低带宽应用程序。

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

1 个答案:

答案 0 :(得分:1)

感谢大家的建议。我了解到我的marathon-lb没有部署,因为默认情况下dc / os运行的马拉松集群只接受来自' *'和' slave_public'作用。

我需要启动另一个马拉松实例,mesos_role设置为" slave_public_tools"使这项工作。