Хорошо, это - вопрос с двумя частями.
Я получил неуправляемый 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 / докер принятое решение моих проблем?
Я честно не испытываю желание арендовать несколько серверов...
Я столкнулся с проблемой, заключающейся в том, что при запуске второго приложения первое начинает давать сбой.
Вы не упомянули какие-либо системные спецификации вашего VPS. Для меня это звучит так, будто у вас заканчивается память. Вы имеете в виду, что при сбое приложения JVM больше не отображается в списке процессов? Вы должны проверить вывод dmesg
, чтобы увидеть, была ли JVM убита убийцей OOM.
Я нахожу это странным, так как я думал, что каждое приложение Atlassian поставляется со своим собственным Tomcat ... так что я интересно, нужно ли мне просто найти способ «использовать разные контейнеры Tomcat»
. Все приложения Atlassian связаны с Tomcat. Вы также можете загружать приложения в пакетах WAR. Вы можете развернуть эти пакеты на своих серверах приложений, если хотите, но это уже другая история.
Нецелесообразно помещать все приложения в один контейнер Tomcat. Из вашего описания я сделал вывод, что вы не знакомы с запуском нескольких приложений в одном экземпляре Tomcat. Поэтому:
Очень короткий рабочий процесс для установки такой среды:
] server.xml
, чтобы приложения работали на разных портах. Это очень важно. В противном случае только одно приложение может зарезервировать порт TCP для коннектора Tomcat HTTP / AJP. Используйте уникальный порт для каждого приложения. Итак, часть № 2: являются ли контейнеры / докер Linux принятым решением моих проблем?
] Это одно решение. Вам следует подумать о своей настройке. Если ваша текущая установка позволяет запускать все приложения в их собственных экземплярах Tomcat, каковы преимущества их запуска в отдельных контейнерах Linux? Очень легко перестроить настройку с помощью Docker. Кроме того, если вы не знакомы с Docker, вам придется научиться его использовать.
Конечно, это возможно, но вы будете использовать три разных контейнера 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. Позвоните, если вам это нужно; это экономит время при установке исправлений.
На данный момент я использую 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"/>