Задачи марафона, не мигрирующие с узла мезо, переходят в режим слива
Из документации видно, что когда узел переходит в мезо-узел, он переходит в режим обслуживания, он отправляет обратные предложения всем платформам. Моя интерпретация этого заключается в том, что фреймворки, такие как Marathon, должны получать эти обратные предложения и работать для переноса задач с узла, запланированного для обслуживания.
Я планирую обслуживание на 60 секунд, используя API:
curl -X POST leader.mesos:5050/maintenance/schedule \
--data '{"windows": [{"machine_ids":[{"hostname": "host43.local"}], "unavailability": {"start": {"nanoseconds": '$(($(date +%s) + 60))'000000000}, "duration": {"nanoseconds": 3600000000000}}}]}'
Затем я запрашиваю состояние обслуживания и могу подтвердить, что оно истощается:
$ curl leader.mesos:5050/maintenance/status | jq .
{
"draining_machines": [
{
"id": {
"hostname": "host43.local"
}
}
]
}
Наконец, когда окно приближается, я опускаю его:
curl -X POST leader.mesos:5050/machine/down --data '[{"hostname": "host43.local"}]'
Я подтверждаю, что это вступило в силу:
$ curl leader.mesos:5050/maintenance/status | jq .
{
"down_machines": [
{
"hostname": "hsot43.local"
}
]
}
Затем я проверяю марафон (через пользовательский интерфейс) и вижу, что все еще выполняются задачи host43.local
,
Я вижу это сообщение об ошибке в журналах марафона, и мне интересно, связано ли это:
May 12 11:46:02 host43.local start[126170]: [2016-05-12 11:46:02,581] ERROR not currently active (Actor[akka://marathon/user/taskTracker#-1732573467]) (akka.actor.OneForOneStrategy:marathon-akka.actor.default-dispatcher-17)
May 12 11:46:02 host43.local start[126170]: java.lang.IllegalStateException: not currently active (Actor[akka://marathon/user/taskTracker#-1732573467])
May 12 11:46:02 host43.local start[126170]: at mesosphere.marathon.core.leadership.impl.WhenLeaderActor$$anonfun$1.applyOrElse(WhenLeaderActor.scala:38) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at akka.actor.Actor$class.aroundReceive(Actor.scala:465) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at mesosphere.marathon.core.leadership.impl.WhenLeaderActor.aroundReceive(WhenLeaderActor.scala:20) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at akka.actor.ActorCell.invoke(ActorCell.scala:487) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:254) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at akka.dispatch.Mailbox.run(Mailbox.scala:221) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at akka.dispatch.Mailbox.exec(Mailbox.scala:231) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) ~[marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [marathon-assembly-1.1.1.jar:1.1.1]
May 12 11:46:02 host43.local start[126170]: [2016-05-12 11:46:02,581] INFO Killing 1 instances from 1 (mesosphere.marathon.upgrade.TaskKillActor:marathon-akka.actor.default-dispatcher-17)
Если я вручную убиваю задачи с помощью марафона, они, кажется, не распределяются на узле, проходящем техническое обслуживание. Похоже, что поведение должно состоять в том, что узлы автоматически переносятся, и я не знаю, что я делаю неправильно, или я столкнулся с ошибкой, или я неправильно интерпретировал документацию и ожидаемое поведение.
Бегущий Марафон 1.1.1 и Мезос 0.28
1 ответ
Получил ответ из чата DC/OS и разместил его здесь для блага других. Марафон еще не поддерживает примитивы обслуживания Mesos.
Следующий билет JIRA отслеживает эту функцию: