Интервалы Capistrano между перезапусками серверов для обеспечения непрерывности обслуживания

Я знаю, что наилучшей практикой для отправки изменений в рабочую среду является наличие наборов серверов A и B, чтобы A обслуживал веб-сайт для клиента, чтобы отправить обновление на B, а затем переключить A‹-> B, чтобы обеспечить непрерывность услуг. . Но это сложно реализовать с помощью Capistrano (?)

В настоящее время у меня есть пул автоматически масштабируемых серверов в облаке Amazon. Используя capistrano, моя команда deploy развернет обновление на всех серверах и перезапустит их все одновременно. В период, когда пассажир перезагружается, на моем рабочем сервере происходит простой (и перезапуск может занять до 10 секунд, так что это проблема).

Чтобы избежать этого, я хотел бы перезапускать свои серверы по одному и ждать x секунд перед перезапуском следующего сервера (я не возражаю, если у меня есть 2 разные версии кода онлайн, целевой сценарий я Имейте в виду, развертывает небольшое исправление)

Есть ли способ переопределить задачу перезапуска Capistrano, чтобы подождать некоторое время перед запуском команды на следующем сервере?


person Cyril Duchon-Doris    schedule 26.09.2016    source источник
comment
Я думаю, вы можете в значительной степени повторно использовать это: а>   -  person Ivan    schedule 26.09.2016


Ответы (2)


Это встроено в:

on :all, in: :sequence, wait: 15 do
  # Your restart task
end
person will_in_wi    schedule 26.09.2016

На самом деле я использую Capistrano-Passenger для перезапуска своего сервера, и я только что заметил, что есть команда set :passenger_restart_wait, 5, которая, кажется, уже делает это!

Из ознакомительного файла gem

person Cyril Duchon-Doris    schedule 29.09.2016