Ich versuche, ein Test-Java-Programm auf Mesos-Cluster mit Marathon zu implementieren. Ich habe einen Tar Ball mit allen benötigten Jars und Konfigurationsdateien erstellt. Der tar hat auch eine cmd.sh, die die App startet. Cmd.sh-AusschnittMarathon Start Java-Programm
chmod a+rx *.jar
java -ea -Dlog4j.configuration="file:./log4j.prod.properties" -cp my-app-0.1-SNAPSHOT.jar:lib/* package.name.main.class.name
Dieser tar wird als URI bereitgestellt. Ich kann in der Protokolldatei sehen, dass tar heruntergeladen und korrekt entpackt wurde. Aber Ausführung schlägt mit Fehler fehl
I0331 23:00:35.135365 30558 exec.cpp:134] Version: 0.27.1
I0331 23:00:35.137852 30588 exec.cpp:208] Executor registered on slave 11aaafce-f12f-4aa8-9e5c-200b2a657225-S1
./cmd.sh: line 5: java: command not found
Irgendeine Idee, warum es java nicht findet? Ich verwende keinen benutzerdefinierten Container. Nur die Parameter, die ich gesetzt habe, sind id, CPU, Speicher, Instanz, uri und cmd = cmd.sh
Ist das die empfohlene Weise, Java apps zu laufen? Mein Java-Programm ist statuslos (verwendet Zoowärter für den Staat) und ich beabsichtige, mehrere Instanzen dieser App auszuführen. Bitte zögern Sie nicht, alternative Möglichkeiten zum Starten oder Bereitstellen einer solchen App vorzuschlagen.
Warum geben Sie nicht den vollständigen Pfad zu Java ein? – user2260040
Ich könnte, aber ich würde gerne verstehen, was passiert und Feedback über die allgemeine Vorgehensweise erhalten. BTW, auf dem gleichen Slave-Knoten kann ich den Tarball scp scannen und meine App mit sh -c cmd.sh laufen lassen. – Cheeko
Überprüfen Sie den Pfad, wenn Sie sh -c vs den von tar ausführen. – user2260040