2017-04-03 1 views
1

내 클러스터의 공용 에이전트에서 만든 Mesos 역할에 marathon-lb를 배포하려고합니다. 내 사용자 지정 역할은 클러스터에서 볼 수 있지만 marathon-lb가 내 역할에 배포되면 영원히 기다리게됩니다.영원히 대기중인 사용자 지정 Mesos 역할에 배포 된 작업

배포가 무엇을 기다리는 지 알아내는 데는 Mesos와 같이 편리하지 않습니다. 마스터/에이전트 로그를 살펴 보았지만 관련성이있는 것으로 점프 아웃하지 않았습니다. 이 관점에서 어떤 포인터가 감사하겠습니다.

마스터는 특정 역할 (--roles 통해)을 허용 목록에 포함하도록 구성되지 않았으므로 클러스터에 임의의 역할을 도입 할 수 있어야합니다. 나는 에이전트가 처음 시작되기 전에 공공 에이전트에 /var/lib/dcos/mesos-slave-commonMESOS_DEFAULT_ROLE=slave_public_tools을 설정하여 "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 
    } 
    ] 
} 

경우 : 사실, 마스터는 "slave_public_tools" 역할을 볼 수 있습니다. 메소 에이전트는 기본 역할 설정을 인식하는 것, 그리고 역할은 자원이 : 난 그런데

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

: 마라톤 파운드를 배포 할 때 나는 다음과 같은 options.json을 사용

[[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" 
    } 
    ] 
} 

을 내 클러스터에 두 개의 marathon-lb 배포가 필요하기 때문에 이렇게합니다. 두 LB 모두 외부에서 액세스 할 수 있어야하지만 높은 처리량 응용 프로그램을 프록시 처리하고 이에 따라 확장해야하며 다른 하나는 다양한 저 대역폭 응용 프로그램에 사용됩니다.

이러한 목표를 달성하는 더 좋은 방법이 있을지 모르지만 특정 haproxy 그룹으로 구성된 마라톤 -lb에서 사용할 수있는 별도의 Mesos 역할을 만드는 것이 나에게 분명해 보였다.

+0

두 개의 다른 에이전트를 실행하는 경우 호스트 이름 제약 조건을 사용하여 Marathon-lb 인스턴스를 특정 에이전트에 고정시킬 수 있습니다. – Tobi

+1

로그 양식 스케줄러가 있습니까? 작업이 시작되지 않은 이유에 대한 정보가 있어야합니다. – janisz

답변

0

의견을 보내 주셔서 감사합니다. dc/os가 기본적으로 실행하는 마라톤 클러스터는 '*'및 'slave_public'역할의 제안 만 수락하기 때문에 내 마라톤 -lb가 배포되지 않았다는 것을 알게되었습니다.

이 작업을 수행하려면 mesos_role이 "slave_public_tools"로 설정된 다른 마라톤 인스턴스를 시작해야했습니다.