2008-09-23 1 views
7

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

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

Спасибо!

ответ

1

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

1
#!/bin/bash 
for PIDFILE in /tmp/mongrel.*; do 
    PID=$(cat ${PIDFILE}) 
    kill ${PID} 
    ${RUN_MONGREL_CMD} ${PID} 
    sleep 2 
done 
3

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

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

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

+0

Спасибо, матовый, да, я не думал упоминать об этом, но я бы наверняка ошибался на безопасной стороне, и почти для любой миграции просто выполните более полное завершение работы-migrate-startup – 2008-09-25 05:07:14

Смежные вопросы