Развертывание веб-приложений 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 - еще один вариант для этих типов простых сценариев развертывания. Однако, если у меня есть выбор, я использую грабли.

НТН!

Том Пурл

Другие вопросы по тегам