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

Кто-нибудь знает хороший способ перезапустить кластер дворняжек через капистрано в «скользящем» стиле, например, один монгрел за раз. Было бы здорово, чтобы у каждого было немного времени ожидания, чтобы шавка также загрузила приложение рельсов.

Я провел некоторые поиски и не нашел слишком много, поэтому ищу помощь, прежде чем сам погрузиться в драгоценный камень mongrel_cluster.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 24 сентября 2008

Я согласен с подходом качелей больше, чем подходом качения, который вы ищете. Проблема в том, что вы попадаете в ситуации, когда балансировка нагрузки может перебрасывать пользователей назад и вперед между различными версиями приложения во время перехода.

Решения, которые мы придумали (до того, как нашли SeeSaw, которым мы не пользуемся), заключались в том, чтобы отсоединить половину шавок от линии балансировки нагрузки. Закройте их. Обнови их. Запустите их. Поместите этих шавок обратно в балансировщик нагрузки и снимите вторую половину. Закрой вторую половину вниз. Обновите второй тайм. Запустите их. Это значительно минимизирует время, когда у вас одновременно работают две разные версии приложения. Я написал файл Windows Bat, чтобы сделать это. (Кстати, развертывание в Windows не рекомендуется)

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

1 голос
/ 24 сентября 2008
#!/bin/bash
for PIDFILE in /tmp/mongrel.*; do
  PID=$(cat ${PIDFILE})
  kill ${PID}
  ${RUN_MONGREL_CMD} ${PID}
  sleep 2
done
1 голос
/ 24 сентября 2008

Seesaw - это драгоценный камень, найденный в Rails Oceania Rubyforge Project , который предоставляет такую ​​функциональность кластерам беспородных. Тем не менее, проект, возможно, страдает от некоторой гнили, которую не выпускали с 2007 года. Тем не менее, стоит взглянуть хотя бы на мысль:)

...