maven развернуть на кластере Tomcat (несколько) в одну строку

Мы пытаемся развернуть maven на нескольких серверах, которые образуют наш кластер в одну строку.

Это решение прекрасно работает, за исключением того, что нам нужно запускать его повторно (1 раз на установку сервера), и наша цель - сделать это после того, как наш сервер интеграции (jenkins) создаст успешный артефакт. И иметь матричную особенность в настоящее время не вариант. Зачем строить проект заново для каждого сервера, если нам просто нужно развернуть его? (плюс время, потраченное на это)

Мы экспериментировали с использованием профилей maven (по одному на сервер и пытались активировать их все сразу, или один большой профиль со всеми серверами на нем), но не повезло с этой опцией, tomcat-maven-plugin не работает таким образом.

Похоже, в Jenkins есть плагин развертывания, основанный на грузе, но обрабатывающий только один сервер за раз.

Есть ли способ сделать это? Или используя maven-tomcat-plugin? Или плагин Дженкинс / Хадсон?

Есть еще какие-то идеи от ваших экспертов о том, как развернуть войну в кластере после успешной сборки? (Я пытаюсь избежать сценария оболочки, просто из-за проблем переносимости)

1 ответ

Решение

Если вам нужно, чтобы это происходило только с одной строкой, я предлагаю выполнить сценарий CMD, Ant, bash и т. Д. Как "одну строку" и заставить этот сценарий выполнять более одной задачи.

Например, если вы использовали Ant... Ваша строка может выглядеть примерно так: ant DeployToCluster, И ваш файл build.xml может иметь цель DeployToCluster который может включать в себя много шагов. Думайте об этом как о рефакторинге метода кода, который делает много вещей. Код, который вызывает ваш метод, становится однострочным.

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

В любом случае, это хорошая идея, чтобы иметь возможность развертывать код на отдельных серверах одновременно. Это позволяет вам постоянно поддерживать ваше приложение / службу, потому что вы воздействуете только на один узел за раз, в то время как другие могут продолжать работать. Он также имеет преимущество в том, что если что-то идет не так, вы просто не можете повторно включить один узел в кластере и диагностировать проблему одного сервера, в отличие от неудачного развертывания всего вашего кластера. Шаги стратегии развертывания, которые выполняет наш скрипт:

  1. Отключить мониторинг одного узла
  2. Вытащите этот узел из кластера
  3. Разверните новый код к нему
  4. Убедитесь, что узел работает правильно с новым кодом
  5. Поместите узел обратно в кластер
  6. Повторно включите мониторинг для этого узла
  7. Повторите шаги для каждого другого узла

Если что-то идет не так на каком-либо этапе, у нас всегда есть рабочая среда для наших пользователей.

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