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

Как я могу установить несколько приложений Atlassian на одном сервере?

Хорошо, это вопрос из двух частей.

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

Пока что я установил Confluence (работает на порту 8090), JIRA (работает на 8080) и Crowd (какой-то другой порт, который я не могу вспомнить), но я могу запускать только по одному. Я попытался настроить обратный прокси, но это не сработало.

При проведении некоторых исследований я обнаружил, что, по-видимому, это невозможно: https://confluence.atlassian.com/display/JIRA/Deploying+Multiple+Atlassian+Applications+in+a+Single+Tomcat+Container https://confluence.atlassian.com/display/DOC/Installing+Confluence+and+JIRA+Together

Я нахожу это странным, поскольку я думал, что каждое приложение Atlassian поставляется со своим собственным Tomcat ... поэтому мне интересно, нужно ли мне просто найти способ «использовать разные контейнеры Tomcat», но я глуп и даже не знаю, что это значит (да, я пользовался гуглами, а они ничего не делают).

Итак, часть №1: я что-то упускаю? Или просто нет способа сделать это общепринятым способом

Я думаю, что нашел решение, контейнеры linux:

http://blogs.atlassian.com/2013/06/deploy-java-apps-with-docker-awesome/ http://blogs.atlassian.com/2015/01/stash-docker/ http://blogs.atlassian.com/2013/11/docker-all-the-things-at-atlassian-automation-and-wiring/

Поскольку они, кажется, изолируют работающую среду и даже позволяют вам настроить сетевую маршрутизацию между контейнером и вашей ОС.

Итак, часть 2: контейнеры / докеры linux - приемлемое решение моих проблем?

Честно говоря, мне не хочется арендовать несколько серверов ...

На данный момент я использую apache как обратный прокси и 5 экземпляров jira.

<VirtualHost *:80>
    ServerName jira1.example.net

    ProxyTimeout 300
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    <Location />
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerName jira2.example.net

    ProxyTimeout 300
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://127.0.0.1:8181/
    ProxyPassReverse / http://127.0.0.1:8181/

    <Location />
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

Все, что вам нужно, это привязать каждый экземпляр jira / confl / толпы к уникальному порту. Для каждого экземпляра jira нужно отредактировать atlassian / jira / conf / server.xml

<Service name="Catalina">
   <Connector port="8080"
      maxThreads="150"
      minSpareThreads="25"
      connectionTimeout="20000"

      address="127.0.0.1"
      proxyName="jira1.example.net"
      proxyPort="80"
      scheme="http"

      enableLookups="false"
      maxHttpHeaderSize="8192"
      protocol="HTTP/1.1"
      useBodyEncodingForURI="true"
      redirectPort="8443"
      acceptCount="100"
      disableUploadTimeout="true"/>


<Service name="Catalina">
   <Connector port="8181"
      maxThreads="150"
      minSpareThreads="25"
      connectionTimeout="20000"

      address="127.0.0.1"
      proxyName="jira2.example.net"
      proxyPort="80"
      scheme="http"

      enableLookups="false"
      maxHttpHeaderSize="8192"
      protocol="HTTP/1.1"
      useBodyEncodingForURI="true"
      redirectPort="8443"
      acceptCount="100"
      disableUploadTimeout="true"/>

Это, конечно, возможно, но вы будете использовать три разных контейнера Tomcat.

Каждый продукт может работать автономно. IIRC, что-то вроде этого

/.../crowd/bin/start_crowd.sh
/.../jira/bin/start-jira.sh
/.../confluence/bin/start-confluence.sh

И вам понадобится, скажем, Apache httpd, работающий как обратный прокси. Итак, / толпа указывает на ваш порт толпы, / jira указывает на ваш порт jira, а / confluence указывает на ваш порт слияния.

Эти пути будут неправильными, но, надеюсь, вы уловили идею (с /.../ где бы вы ни распаковали продукт).

Вы также можете попросить их использовать одинаковые или разные JAVA_HOME, что может быть полезно, если человек / группа, отвечающая за запуск приложения, отличается от человека / команды, управляющих ОС.

У меня есть подходящий сценарий запуска для запуска всего стека (Crowd, Jira, а затем Confluence в указанном порядке и проверка того, что один готов перед запуском следующего). Он написан для RHEL 5. Позвоните, если вам это нужно; это экономит время при установке исправлений.

Столкнулся с проблемой, что при запуске второго приложения первое начинает вылетать.

Вы не упомянули какие-либо системные характеристики вашего VPS. Для меня это звучит так, будто у вас заканчивается память. Вы имеете в виду, что при сбое приложения JVM больше не отображается в списке процессов? Вы должны проверить вывод dmesg чтобы узнать, была ли JVM убита убийцей OOM.

Мне это кажется странным, так как я думал, что каждое приложение Atlassian поставляется со своим собственным Tomcat ... так что мне интересно, нужно ли мне просто найти способ «использовать разные контейнеры Tomcat»,

Все приложения Atlassian связаны с Tomcat. Вы также можете загружать приложения в пакетах WAR. Вы можете развернуть эти пакеты на своих серверах приложений, если хотите, но это уже другая история.

Нецелесообразно помещать все приложения в один контейнер Tomcat. Из вашего описания я сделал вывод, что вы не знакомы с запуском нескольких приложений в одном экземпляре Tomcat. Следовательно:

  • Упомянутые вами приложения (Confluence, JIRA, Crowd) имеют разные требования к памяти, особенно когда вы устанавливаете в них плагины. Вы очень легко столкнетесь с ошибками OOM.
  • Обновление приложений намного проще, когда все приложения работают в своих собственных экземплярах Tomcat. С точки зрения безопасности это очень важно.
  • Если вы хотите перенести одно приложение на другой сервер, вы можете просто скопировать весь экземпляр Tomcat как есть с приложением. Требуются только незначительные изменения конфигурации.

Очень краткий рабочий процесс по установке такой среды:

  • Создайте отдельных пользователей для всех приложений.
  • Загрузите приложения (версия пакета Tomcat) и извлеките их.
  • Настроить server.xml чтобы приложения работали в разных портах. Это очень важно. В противном случае только одно приложение может зарезервировать порт TCP для соединителя Tomcat HTTP / AJP. Используйте уникальный порт для каждого приложения.
  • Создавайте виртуальные хосты для всех приложений.
  • Запускайте приложения для каждого пользователя приложения.

Итак, часть 2: контейнеры / докеры linux - приемлемое решение моих проблем?

Это одно решение. Вам следует подумать о своей настройке. Если ваша текущая установка позволяет запускать все приложения в их собственных экземплярах Tomcat, каковы преимущества их запуска в отдельных контейнерах Linux? С Docker очень легко перестроить настройку. Кроме того, если вы не знакомы с Docker, вам придется научиться его использовать.