Развертывание веб-приложений Java на распределенных серверах
Мне нужно развернуть свое приложение на трех серверах, а скоро и на четырех. Это становится болью, и я хочу автоматизировать это. Я собирался написать сценарий этого, но это такая распространенная проблема, и там так много инструментов (Puppet, Chef, Pallet, MCollective), что я думал, что у кого-то может быть существующая стратегия, которой они готовы поделиться.
У нас есть 3 веб-сервера (и скоро будет 4). Вот шаги, которые я сейчас использую для развертывания:
войти на производственный веб-сервер 1
> service httpd stop
> service tomcat5 stop
войти на сервер QA
> scp ROOT.war user@server1.example.com:/usr/share/tomcat5/webapps/
Однако иногда это более сложно, и мне может потребоваться скопировать любое из следующего: /etc/httpd/conf.d/mod_jk.conf /etc/tomcat5/context.xml
Но я не могу просто скопировать context.xml из QA, так как строки подключения отличаются в QA и производстве.
перезапустить все (после передачи ROOT.war)
> service tomcat5 start
> service httpd start
Обычно я развертываю на server 1, тестирую, а затем развертываю на server2 и server3. Мне нравится ждать, пока сервер 2 не будет готов, прежде чем я начну развертывание на сервере 3 - может ли Puppet сделать это (проверить состояние HTTP для /)?
Итак, могу ли я использовать Puppet для развертывания server 1, а затем заставить его выполнить развертывание и ждать до server2, server3 и скоро стать server4?
Поэтапное развертывание и, возможно, простой откат - это те функции, которые я ищу.
2 ответа
Я работал с Хадсоном и Капистрано и раньше - они оба действительно полезные инструменты, которые стоит изучить. Capistrano можно настроить на использование сценария rake для обновления любых строк / путей подключения перед развертыванием, что действительно хорошо, и я считаю, что Hudson позволит вам сделать то же самое на основе регулярных выражений.
Оба предназначены для процессов развертывания и действительно полезны, они должны быть довольно самодокументируемыми:)
Я написал скрипт развертывания, который делает то, что вы в основном хотите, используя rake. Это было очень просто написать и кросс-платформенный. Ant - еще один вариант для этих типов простых сценариев развертывания. Однако, если у меня есть выбор, я использую грабли.
НТН!
Том Пурл