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

Хорошо, это - вопрос с двумя частями.

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

До сих пор я установил Слияние (работающий на порте 8090), JIRA (работающий 8080) и Толпа (некоторый другой порт, который я не могу помнить), но я могу только работать по одному. Я пытался настроить обратный прокси, но это, кажется, не работает.

При проведении некоторого исследования я нашел, что, по-видимому, это не возможно: 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/

Так как они, кажется, изолируют выполнение envirnoment и даже позволяют Вам установить сетевую маршрутизацию между контейнером и Вашей ОС.

Так, часть № 2: контейнеры Linux / докер принятое решение моих проблем?

Я честно не испытываю желание арендовать несколько серверов...

1
задан 17 April 2015 в 08:53
3 ответа

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

Вы не упомянули какие-либо системные спецификации вашего 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, вам придется научиться его использовать.

1
ответ дан 3 December 2019 в 18:40

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

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

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

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

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

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

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

1
ответ дан 3 December 2019 в 18:40

На данный момент я использую 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"/>
1
ответ дан 3 December 2019 в 18:40

Теги

Похожие вопросы