2016-03-27 4 views
4

Ich versuche, die beständige Volumenunterstützung für Mesos zu verwenden, und habe eine enorm schwierige Zeit, es zur Arbeit zu bringen.Mesos-Slaves lehnen alle Marathon-Jobs mit persistenten Volumes ab; Ansprüche kein Platz verfügbar

Ich habe jedes meiner Sklaven konfiguriert, wie folgt, und haben bestätigt, dass sie erfolgreich diese neue config neu gestartet haben:

/etc/Mesos-Slave/Ressourcen

[ ​ 
    { 
    "name" : "disk", 
    "type" : "SCALAR", 
    "scalar" : { "value" : 4194304 }, 
    "disk" : { 
     "source" : { 
     "type" : "PATH", 
     "path" : { "root" : "/mnt/disk1" } 
     } 
    } 
    }, 
    { 
    "name" : "disk", 
    "type" : "SCALAR", 
    "scalar" : { "value" : 4194304 }, 
    "disk" : { 
     "source" : { 
     "type" : "PATH", 
     "path" : { "root" : "/mnt/disk2" } 
     } 
    } 
    }, 
    { 
    "name" : "disk", 
    "type" : "SCALAR", 
    "scalar" : { "value" : 4194304 }, 
    "disk" : { 
     "source" : { 
     "type" : "PATH", 
     "path" : { "root" : "/mnt/disk3" } 
     } 
    } 
    }, 
    { 
    "name" : "disk", 
    "type" : "SCALAR", 
    "scalar" : { "value" : 4194304 }, 
    "disk" : { 
     "source" : { 
     "type" : "PATH", 
     "path" : { "root" : "/mnt/disk4" } 
     } 
    } 
    }, 
    { 
    "name" : "disk", 
    "type" : "SCALAR", 
    "scalar" : { "value" : 4194304 }, 
    "disk" : { 
     "source" : { 
     "type" : "PATH", 
     "path" : { "root" : "/mnt/disk5" } 
     } 
    } 
    }, 
    { 
    "name" : "disk", 
    "type" : "SCALAR", 
    "scalar" : { "value" : 4194304 }, 
    "disk" : { 
     "source" : { 
     "type" : "MOUNT", 
     "mount" : { "root" : "/mnt/disk6" } 
     } 
    } 
    }, 
    { 
    "name" : "disk", 
    "type" : "SCALAR", 
    "scalar" : { "value" : 4194304 }, 
    "disk" : { 
     "source" : { 
     "type" : "MOUNT", 
     "mount" : { "root" : "/mnt/disk7" } 
     } 
    } 
    } 
] 

Es zeigt insbesondere, dass ich uneingeschränkte Ressourcen habe. Insbesondere (vollständige Antwort here):

{ 
    ... 
    "slaves": [{ 
    "id": "c5e59876-5157-463f-b31e-16b34d6ffc72-S8", 
    "pid": "slave(1)@172.30.31.55:5051", 
    "hostname": "redacted47.redacted.com", 
    "registered_time": 1458810586.61153, 
    "resources": { 
     "cpus": 32, 
     "disk": 29360128, 
     "mem": 256651, 
     "ports": "[31000-32000]" 
    }, 
    "used_resources": { 
     "cpus": 1, 
     "disk": 0, 
     "mem": 128, 
     "ports": "[31282-31282]" 
    }, 
    "offered_resources": { 
     "cpus": 0, 
     "disk": 0, 
     "mem": 0 
    }, 
    "reserved_resources": {}, 
    "unreserved_resources": { 
     "cpus": 32, 
     "disk": 29360128, 
     "mem": 256651, 
     "ports": "[31000-32000]" 
    }, 

Jedes Mal, wenn ich versuche, einen Job zu unterbreiten, die ein persistentes Volumen anfordert, alle Slaves ablehnen und behauptet, dass es keine Datenträger-Ressource zur Verfügung:

Mar 26 17:59:43 redacted47.redacted.com start[30457]: [2016-03-26 17:59:43,606] INFO Offer [2220b6bf-aac2-402b-82e6-8d625284d1a4-O9375]. Considering unreserved resources with roles {*}. Not all basic resources satisfied: cpus SATISFIED (1.0 <= 1.0), mem SATISFIED (128.0 <= 128.0), disk including volumes NOT SATISFIED (1024.0 > 0.0) (mesosphere.mesos.ResourceMatcher$:marathon-akka.actor.default-dispatcher-38) 
Mar 26 17:59:43 redacted47.redacted.com start[30457]: [2016-03-26 17:59:43,606] INFO Offer [2220b6bf-aac2-402b-82e6-8d625284d1a4-O9376]. Considering unreserved resources with roles {*}. Not all basic resources satisfied: cpus SATISFIED (1.0 <= 1.0), mem SATISFIED (128.0 <= 128.0), disk including volumes NOT SATISFIED (1024.0 > 0.0) (mesosphere.mesos.ResourceMatcher$:marathon-akka.actor.default-dispatcher-38) 
Mar 26 17:59:43 redacted47.redacted.com start[30457]: [2016-03-26 17:59:43,606] INFO Finished processing 2220b6bf-aac2-402b-82e6-8d625284d1a4-O9375. Matched 0 ops after 1 passes. disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; disk(*) 4194304.0; cpus(*) 28.0; mem(*) 226955.0; ports(*) 31000->31085,31087->31364,31366->31940,31942->32000 left. (mesosphere.marathon.core.matcher.manager.impl.OfferMatcherManagerActor:marathon-akka.actor.default-dispatcher-11) 
Mar 26 17:59:43 redacted47.redacted.com start[30457]: [2016-03-26 17:59:43,606] INFO Offer [2220b6bf-aac2-402b-82e6-8d625284d1a4-O9379]. Considering unreserved resources with roles {*}. Not all basic resources satisfied: cpus SATISFIED (1.0 <= 1.0), mem SATISFIED (128.0 <= 128.0), disk including volumes NOT SATISFIED (1024.0 > 0.0) (mesosphere.mesos.ResourceMatcher$:marathon-akka.actor.default-dispatcher-38) 

Wenn ich versuche, einen Antrag zu stellen ein Volumen direkt gegen den Mesos Master zu erstellen, dann lehnt er die Anforderung, „nicht genügend Festplattenressourcen“ zu sagen, wie folgt:

# curl -v -i \ 
    -u "marathon:$(cat /etc/marathon/.secret)" \ 
    -d slaveId=c5e59876-5157-463f-b31e-16b34d6ffc72-S8 \ 
    -d volumes='[ 
     { 
     "name": "disk", 
     "type": "SCALAR", 
     "scalar": { "value": 512 }, 
     "role": "foo", 
     "reservation": { 
      "principal": "marathon" 
     }, 
     "disk": { 
      "persistence": { 
      "id" : "very-persist" 
      }, 
      "volume": { 
      "mode": "RW", 
      "container_path": "such-path" 
      } 
     } 
     } 
    ]' \ 
    -X POST http://localhost:5050/master/create-volumes; echo 
* About to connect() to localhost port 5050 (#0) 
* Trying ::1... 
* Connection refused 
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 5050 (#0) 
* Server auth using Basic with user 'marathon' 
> POST /master/create-volumes HTTP/1.1 
> Authorization: Basic redacted 
> User-Agent: curl/7.29.0 
> Host: localhost:5050 
> Accept: */* 
> Content-Length: 481 
> Content-Type: application/x-www-form-urlencoded 
> 
* upload completely sent off: 481 out of 481 bytes 
< HTTP/1.1 409 Conflict 
HTTP/1.1 409 Conflict 
< Date: Thu, 24 Mar 2016 09:50:36 GMT 
Date: Thu, 24 Mar 2016 09:50:36 GMT 
< Content-Length: 53 
Content-Length: 53 
​ 
< 
* Connection #0 to host localhost left intact 
Invalid CREATE Operation: Insufficient disk resources 

Ich bin am Ende. Ich weiß nicht, was ich mache, und ich versuche mein Bestes, um der Dokumentation zu folgen. Jeder Hinweis darauf, was ich falsch machen könnte, wäre sehr, sehr geschätzt.

Ich bin mit:

  • Mesos 0.28.0
  • Marathon 1.0.0RC1

Ich folge den Anweisungen in den folgenden Quellen, so gut wie ich kann:

Vielen Dank für das Lesen!

Antwort

2

Zuerst vielen Dank für die Bereitstellung einer so gut dokumentiert Problem!

Ihr Problem hier scheint der folgende zu sein:

a) Es gibt keine root disk Ressource zur Verfügung. Sobald Sie eine Festplattenressource manuell wie Sie angegeben haben, wird Mesos die Root-Festplatte automatisch erkennen. Sie könnten einfach eine Root-Disk-Ressource wie beschrieben here hinzufügen, die Ihr Problem lösen sollte.

b) Ihre http-Anfrage "Create Volume" berücksichtigt nur Root-Festplattenressourcen (die Sie aus den oben genannten Gründen nicht haben). Wenn Sie die Nicht-Root-Festplatte verwenden möchten, sollten Sie das Quellfeld als sehr kurz erwähnt here betrachten.

BTW jedes Feedback, wie die Dokumentation verbessert werden kann, ist willkommen (ich werde eine kurze Notiz zu diesem Problem hinzufügen, aber jede Rückmeldung von Benutzern ist sehr hilfreich)! Fühlen Sie sich frei, hier etwas beizutragen!

Ich hoffe, das war hilfreich!

+0

Wunderbar! Vielen Dank! Ich habe den Anruf erhalten, um erfolgreich zu sein. Und jetzt verstehe ich besser, was es bedeutet, dass persistente Volumes mit reservierten Ressourcen erzeugt werden, entweder dynamisch zugewiesen oder über/etc/mesos-slave/resources vorreserviert. Es scheint, dass Marathon keine Unterstützung für Nicht-Root-Volumes bietet; die persistenten Volumes. In der Datenstruktur, die ein persistentes Volume beschreibt, ist einfach kein Platz für die Angabe des Datenträgertyps. https://github.com/mesasphere/marathon/blob/v1.0.0-RC1/src/main/scala/mosphere/marathon/state/Volume.scala#L107 Es scheint, es wäre trivial hinzuzufügen? –

0

Entschuldigung, ich kann keinen Kommentar hinzufügen.

Ich fand die Dokumentation ein wenig entmutigend. Es ist detailliert und viel davon, aber ich versuche, Mesos, Marathon usw. in meiner eigenen Zeit zu lernen und keine Beispiele zu haben ist wirklich schwierig für mich. Was ich bevorzugen würde, ist eine Seite, auf der ein kleiner Cluster angezeigt wird, mit IP-Adressen, Festplatten, CPUs und den Konfigurationsdateien, die benötigt werden, um die Master, Agenten und ein Tierpfleger-Ensemble einzurichten. Einige Beispiel-JSON-Dateien zeigen, wie man Marathon für bestimmte Anwendungsfälle verwendet.

Ich ziele so einige Notizen für mich selbst in meinem öffentlichen GitHub-Account zeigt meine Test-Cluster und erklären, wie alles konfiguriert ist, wenn ich persistente Volumes arbeiten, jenkins und eine private docker Registrierung alle in mesos, aber ich bin weit weg davon.

+0

Ich habe meine ansible Installationsskripts zu https://github.com/ajazam/ansible-mesos hinzugefügt. Ich gehe davon aus, dass alles dafür da ist, einen funktionierenden Cluster von ubuntu-Bare-Metal-Hosts zu schaffen, auf denen mesos, zoekeeper, marathon und docker laufen –

Verwandte Themen