Почему планировщик Marathon перезапускает развертывания после перезапуска службы марафона? - PullRequest
0 голосов
/ 26 сентября 2018

Я тестировал свою работу в планировщике марафона и заметил, что планировщик марафона перезапускает мою завершенную работу после перезапуска службы марафона (systemctl restart marathon.service).Не уверен, что мне не хватает какой-либо конфигурации, которая могла бы предотвратить такое поведениеЯ ожидаю, что задание будет выполнено один раз и завершится.

Настройка теста - я использую марафон в качестве планировщика для запуска заданий на кластере мезос.Конфигурация задания публикуется в марафоне с использованием его api rest с флагом force = true.

Ожидается, что задание будет выполнено один раз и завершено.

Задание json -

{
  "id": "/test-job",
  "cmd": "/bin/ls",
  "cpus": 0.25,
  "mem": 100,
  "disk": 100,
  "instances": 1,
  "acceptedResourceRoles": [
    "mesos-workers"
  ],
  "labels": {
    "MARATHON_SINGLE_INSTANCE_APP": "true",
  },
  "portDefinitions": [],
  "user": "nobody",
  "backoffSeconds": 2147483647,
  "maxLaunchDelaySeconds": 2147483647,
}

Также проверен перезапуск марафона путем добавления дополнительных параметров в определение задания для стратегии обновления -

  "upgradeStrategy": {
    "maximumOverCapacity": 0,
    "minimumHealthCapacity": 0
  }

Буду очень признателен за любую помощь, чтобы определить, что может быть не так.

Спасибо!


Журналы марафона после перезапуска службы марафона-

Sep 25 20:45:04 10.162.217.171 marathon[2801]: [2018-09-25 20:45:04,878] INFO  removing matcher ActorOfferMatcher(Actor[akka://marathon/user/launchQueue/1/0-test-job#203351593]) (mesosphere.marathon.core
Sep 25 20:45:04 10.162.217.171 marathon[2801]: [2018-09-25 20:45:04,891] INFO  Processing LaunchEphemeral(Instance(instance [test-job.marathon-e18878ba-c103-11e8-a594-12d685c81d52],AgentInfo(10.162.147.2
Sep 25 20:45:04 10.162.217.171 marathon[2801]: [2018-09-25 20:45:04,905] INFO  Finished processing 1bf99832-7f87-4609-b591-8261ed4739eb-O630667 from 10.162.147.203. Matched 1 ops after 2 passes. First 10: cpus(
Sep 25 20:45:04 10.162.217.171 marathon[2801]: [2018-09-25 20:45:04,948] WARN  The version of ZooKeeper being used doesn't support Container nodes. CreateMode.PERSISTENT will be used instead. (org.apache.curato
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,113] INFO  Received status update for task test-job.e18878ba-c103-11e8-a594-12d685c81d52: TASK_STARTING () (mesosphere.marathon.Maratho
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,145] INFO  Acknowledge status update for task test-job.e18878ba-c103-11e8-a594-12d685c81d52: TASK_STARTING () (mesosphere.marathon.core
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,149] INFO  Received status update for task test-job.e18878ba-c103-11e8-a594-12d685c81d52: TASK_RUNNING () (mesosphere.marathon.Marathon
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,163] INFO  Acknowledge status update for task test-job.e18878ba-c103-11e8-a594-12d685c81d52: TASK_RUNNING () (mesosphere.marathon.core.
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,405] INFO  Received status update for task test-job.e18878ba-c103-11e8-a594-12d685c81d52: TASK_FINISHED (Command exited with status 0)
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,409] INFO  all tasks of instance [test-job.marathon-e18878ba-c103-11e8-a594-12d685c81d52] are terminal, requesting to expunge (mesosphe
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,426] INFO  Removed app [/test-job] from tracker (mesosphere.marathon.core.task.tracker.InstanceTracker$InstancesBySpec:marathon-akka.ac
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,430] INFO  receiveInstanceUpdate: instance [test-job.marathon-e18878ba-c103-11e8-a594-12d685c81d52] was deleted (Finished) (mesosphere.
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,432] INFO  initiating a scale check for runSpec [/test-job] due to [instance [test-job.marathon-e18878ba-c103-11e8-a594-12d685c8
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,433] INFO  Acknowledge status update for task test-job.e18878ba-c103-11e8-a594-12d685c81d52: TASK_FINISHED (Command exited with status
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,436] INFO  Increasing delay. Task launch delay for [/test-job - 2018-09-24T21:51:25.894Z] is set to 24855 days 3 hours 14 minutes 7 sec
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,437] INFO  Need to scale /test-job from 0 up to 1 instances (mesosphere.marathon.SchedulerActions:scheduler-actions-thread-0)
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,446] INFO  Stopped InstanceLauncherActor for /test-job version 2018-09-24T21:51:25.894Z (mesosphere.marathon.core.launchqueue.impl.Task
Sep 25 20:45:05 10.162.217.171 marathon[2801]: [2018-09-25 20:45:05,450] WARN  Got unexpected terminated for runSpec /test-job: Actor[akka://marathon/user/launchQueue/1/0-test-job#203351593] (meso

1 Ответ

0 голосов
/ 26 сентября 2018

Marathon должен быть фреймворком для долго работающих приложений / процессов (отсюда и название Marathon).Другими словами, он не идеален для запланированных или одноразовых работ / процессов.Чтобы упростить, в основном то, что Марафон делает следующее в бесконечном цикле для каждого приложения

IF    number of instances running != number of instance desired
THEN  launch/kill instances to make sure number of instances running == number of instance desired
ELSE  do nothing

Так что независимо от того, перезапускаете ли вы Марафон или нет, он начнет новую задачу, если предыдущая закончилась

Я бы предложил вам вместо этого использовать одну из платформ, предназначенных для запуска заданий:

Хронос: https://mesos.github.io/chronos/

Повар: https://github.com/twosigma/Cook

Метроном: https://github.com/dcos/metronome

...