Назад | Перейти на главную страницу

Развертывание веб-приложений 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

Обычно я развертываю на server1, тестирую, а затем развертываю на server2 и server3. Мне нравится ждать, пока сервер 2 будет готов, прежде чем я начну развертывание на сервере 3 - может ли Puppet это сделать (проверьте статус HTTP /)?

Итак, могу ли я развернуть Puppet server1, а затем выполнить развертывание и подождать до server2, server3 и скоро будет server4?

Поэтапное развертывание и, возможно, легкий откат - вот функции, которые я ищу.

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

Оба предназначены для процессов развертывания и действительно полезны, они оба должны быть довольно самодокументированными :)

Я написал сценарий развертывания, который делает то, что вы в основном хотите, используя грабли. Это было очень просто писать и кроссплатформенность. Ant - еще один вариант для этих типов простых сценариев развертывания. Однако, если у меня есть выбор, я использую рейк.

HTH!

Том Перл