надежный способ развертывания нового кода в производственном кластере сельдерея без остановки службы - PullRequest
7 голосов
/ 14 октября 2011

У меня работает несколько узлов сельдерея с rabbitmq, и я выполняю развертывания с прерыванием обслуживания. Я должен снять весь сайт, чтобы развернуть новый код в сельдерее. Максимальное количество задач для каждого ребенка установлено на 1, поэтому в теории, если я внесу изменения в существующую задачу, они должны вступить в силу при следующем запуске, но как насчет регистрации новых задач? Я знаю, что перезапуск демона не убьет работающих работников, но вместо этого позволит им умереть самостоятельно, но это все еще кажется опасным. Есть ли элегантное решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 01 ноября 2012

Сложная часть здесь, кажется, идентифицирует, какие задачи сельдерея являются новыми по сравнению со старыми. Я бы предложил создать еще один vhost в rabbitmq и выполнить следующие шаги:

  1. Обновите веб-серверы django новым кодом и перенастройте его так, чтобы он указывал на новый vhost.
  2. Пока задачи в новом виртуальном хосте находятся в очереди, подождите, пока работа сельдерея завершится с задачами старого виртуального хоста.
  3. Когда рабочие закончат, обновите код и конфигурацию до нового vhost

На самом деле я этого не пробовал, но не понимаю, почему это не сработает. Один раздражающий аспект заключается в необходимости чередовать vhosts с каждым развертыванием.

0 голосов
/ 15 октября 2011

Обойти вас можно, установив переменную конфигурации MAX_TASK_PER_CHILD.Эта переменная указывает номер задачи, которую работник пула выполняет перед тем, как покончить с собой.Конечно, при запуске нового работника пула загружается новый код.В моей системе обычно я использую для перезапуска сельдерея, оставляя другую задачу в фоновом режиме, обычно все идет хорошо, иногда случается, что одна из этих задач никогда не убивается, и вы все равно можете убить ее с помощью скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...