Непрерывное развертывание для веб-приложения Java / JVM - PullRequest
4 голосов
/ 21 февраля 2011

Моя команда и я хотели бы внедрить " Непрерывное развертывание " для нашего веб-сайта.Непрерывное развертывание в основном означает очень частое развертывание (несколько раз в день).Предположительно, Etsy делает это постоянно.

Наша среда - Tomcat + Nginx.Мы уже выполняем непрерывное развертывание любых изменений кода на нашем сервере моментальных снимков (то есть традиционной непрерывной интеграции) с использованием Hudson и плагина Hudson + Cargo, который развертывается в горячем режиме.

Удивительно, но это работает хорошо (хотя со временем мы должны перезапустить Tomcatиногда).

Для производства это не сработает, потому что мы не можем отключить сайт.У меня есть некоторые идеи, такие как создание двух веб-приложений и перенаправление, когда одно не работает.

У кого-нибудь есть идеи или они уже делали это раньше в реальной производственной среде?

Ответы [ 3 ]

2 голосов
/ 21 февраля 2011

С http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html:

Предупреждение в режиме реального времени.Независимо от того, насколько хорош ваш процесс развертывания, ошибки все же могут пройти.Наиболее раздражающим вариантом являются ошибки, которые проявляются только через несколько часов или дней после развертывания кода, который их вызвал.Чтобы поймать эти неприятные ошибки, вам нужна платформа мониторинга, которая может сообщать вам, когда что-то пошло не так, и вовлекать человека в их устранение.

Для эффективного внедрения непрерывного развертывания в производство вам необходим хороший мониторинг, иначе вы не поймете, что происходит с вашим приложением.

0 голосов
/ 16 сентября 2011

Для этого мы используем apache httpd 2.2 и mod_proxy

Затем у нас работают 2 кота, один на порту 8080 и один на порту 88. Брандмауэр предотвращает внешний доступ к этим портам, поэтому открыт только порт 80

Apache HTTPd настроен на прослушивание через порт 80

Это очень просто настроить. Это базовая конфигурация (httpd.conf), которая будет работать «из коробки»:

 LoadModule proxy_module modules/mod_proxy.so
 LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
 LoadModule proxy_http_module modules/mod_proxy_http.so
 <Proxy balancer://mycluster>
    BalancerMember http://localhost:8080
    BalancerMember http://localhost:88 status=+H
 </Proxy>
 ProxyPass / balancer://mycluster/
 ProxyPassReverse / balancer://mycluster/

«+ H» означает, что он используется только в качестве резервного сервера, поэтому, когда 8080 недоступен, он будет работать на 88, пока 8080 не вернется в рабочее состояние

0 голосов
/ 21 февраля 2011

Я не знаю, ПОЧЕМУ вы думаете, что это хорошая идея, но это зависит от вас.

Я бы использовал приложение балансировки с двумя горячими системами, которые можно найти в самом tomcat, а затем просто остановил сервер перед развертыванием, развернул и перезапустил сервер. Оставьте двухминутное окно для каждого горячего сервера, и все будет хорошо.

РЕДАКТИРОВАТЬ: я бы не развернул все время. Мы также являемся небольшой компанией с незначительным QA (tm), но все еще один щелчок в системе сборки, чтобы начать работу.

...