#high-availability #nomad
#высокая доступность #nomad
Вопрос:
Я пытаюсь понять, как Nomad spread
работает с ошибками клиента.
В заданиях Nomad вы можете определить spread
раздел таким образом, чтобы экземпляры задания распространялись на всех клиентах.
Вот документы: https://www.nomadproject.io/docs/job-specification/spread
Поскольку spread
это мягкое предпочтение, если один из клиентов выйдет из строя по какой-либо причине, Nomad перенесет все задания, выполняемые на потерянном клиенте, на другие доступные клиенты. (Это вступает в силу даже при упаковке в корзину).
В случае сетки из 2 клиентов и задания с двумя распределениями, если один клиент выходит из строя, оба распределения будут выполняться на одном клиенте.
Что происходит, когда сетка восстанавливается и открывает нового клиента? Будут ли задания повторно распространяться, следуя spread
строфе, на оба узла, или два распределения будут продолжать выполняться на одном клиенте до повторного запуска задания?
Ответ №1:
Трудно найти ответ на этот вопрос. У меня сложилось впечатление, что, если нет ограничений на ресурсы, Nomad не будет переносить выделение. Итак, в вашем примере задания не будут повторно распространяться.
Несколько мест для поиска для большей уверенности:
- Есть привязка к узлу: https://learn.hashicorp.com/tutorials/nomad/affinity ,
binpack
,job-anti-affinity
, иnode-reschedule-penalty
может повлиять на перемещение вашего распределения (но опять же, я думаю, что это просто из-за конкуренции за ресурсы). - Вытеснение теперь имеет место, но опять же, похоже, больше связано с ограничениями ресурсов: https://www.nomadproject.io/docs/internals/scheduling/preemption
- Здесь есть тест распространения, который, я думаю, можно изменить для проверки вашего варианта использования: https://github.com/hashicorp/nomad/blob/235f938e87afbdc73037c1868a17668c06a8cf94/scheduler/generic_sched_test.go#L616 , Я пытался сделать это сам, но немного увяз в сложности.
Как ни странно, я никогда не видел, чтобы распределение добровольно мигрировало на узле со свободными ресурсами, и я не видел, чтобы распределения свободно перемещались на новые пустые узлы.