2008-09-23 4 views
7

누구나 capistrano를 통해 "롤링"스타일 (예 : 한 번에 한 잡종)으로 잡종 클러스터를 다시 시작하는 좋은 방법을 알고 있습니다. mongrel이 레일 앱을 올려 놓을 수있게하기 위해 각각 잠깐 기다려야 할 때도 좋을 것입니다.잡종 클러스터의 롤링 다시 시작하는 방법

mongrel_cluster gem에 직접 들어가기 전에 일부 검색을 수행했지만 도움이되지 않았습니다.

감사합니다.

답변

1

시소는 잡종 클러스터에 이런 종류의 기능을 제공하는 Rails Oceania Rubyforge Project에있는 보석입니다. 그러나이 프로젝트는 2007 년 여전히 가치를 살펴 이후 릴리스도 그냥 더 롤링 방식보다 시소 접근 방식에 동의 아이디어 :

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

끼지 havain하지 일부 비트 부패에서 ​​한 고생 할 수있다 너는 찾고있다. 문제는 사용자가 전환하는 동안로드 균형 조정으로 여러 버전의 응용 프로그램간에 사용자를주고받을 수있는 상황에 처하게된다는 것입니다.

(우리가 사용하지 않는 SeeSaw를 찾기 전에) 우리가 생각해 낸 해결책은 잡종 중 절반을 부하 분산 장치에서 꺼내는 것이 었습니다. 내려 놔. 그들을 업데이트하십시오. 그들을 시작하십시오. 그 잡종을로드 밸런서에 다시 온라인 상태로두고 다른 반쪽을 꺼내십시오. 하반기를 끝내세요. 후반을 업데이트하십시오. 그들을 시작하십시오. 이렇게하면 동시에 실행되는 두 가지 버전의 응용 프로그램이있는 시간이 크게 줄어 듭니다. 이 작업을 수행하기 위해 windows bat 파일을 작성했습니다. (Windows에서의 배포는 권장되지 않습니다.) btw

데이터베이스 마이그레이션을 수행하면 전체 접근 방식이 약간 위험 할 수 있다는 점에 유의해야합니다. 추가 마이그레이션 만있는 경우 배포 전에 언제든지 마이그레이션을 실행할 수 있습니다. 열을 제거하는 경우 배포 후에 열을 제거해야합니다. 열의 이름을 변경하는 경우 새 열 만들기로 분할하고 배포 전에 데이터를 마이그레이션하고 배포 후 이전 열을 제거하는 별도의 스크립트를 복사하는 것이 좋습니다. 일반적으로 일반적인 마이그레이션을 일반적으로 프로덕션 데이터베이스에서 사용하는 것이 위험 할 수 있습니다. 이 모든 것은보다 빈번한 전달을 의미하므로 각 업데이트가 위험도가 낮고 복잡하지는 않지만 다른 응답의 대상이됩니다.

+0

매트 덕분에 언급 할 생각은 없었지만 안전 측면에서 오류가 발생했는지 거의 모든 마이그레이션에 대해 더 완벽한 종료 마이그레이션 시작 –