Опытные комрады, поделитесь опытом, что вы используете для апдейта кода на веб серверах, с учетом того, что код храниться на локальных дисках.
История такова:
1. Использовали NFS. Минус — все завязывается на один сервер.
2. Перешли на NAS по CIFS. Минус — возникли проблемы с передачей больших файлов по сети, NAS иногда был недоступен.
3. Пробовали использовать SAN через RedHat GFS. Минус — сложность настройки и необходимость следить за состоянием нод.
В итоге решили хранить код на локальных дисках веб серверов. Плюсы — отказоустойчивость, нет узких мест.
Варианты решения:
1. код на SVN/git -> скрипт, который по SSH запускает апдейт на каждом сервере.
2. puppet/chef
Раньше делал так: hook на коммит в определенную ветку репозитория, который развертывает код из этой ветки на продакшене, вызывает миграцию схемы БД и говорит Apache-у перечитать конфиги.
В какой-то момент написал Makefile, который копирует файлы rsync-ом из текущего локального состояния репозитория, и там по мелочи всякие вещи (например, доставляет зависимости в virtualenv, если нужны). Удобнее, поскольку иногда хочется на staging сервер бросить код прямо из редактора, не коммитя.
У нас mercurial, раз в минуту на серверах делается hg pull && hg update.
Очень удобная это схема тем, что если что-то правится прям в продуктиве (всякое бывает), то можно с него же и закомитить в общий репозиторий.
Скорее всего, в вашем случае вместо меркуриал подойдёт и свн.