Хорошо, это вопрос из двух частей.
Я получил неуправляемый 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. Следовательно:
Очень краткий рабочий процесс по установке такой среды:
server.xml
чтобы приложения работали в разных портах. Это очень важно. В противном случае только одно приложение может зарезервировать порт TCP для соединителя Tomcat HTTP / AJP. Используйте уникальный порт для каждого приложения.Итак, часть 2: контейнеры / докеры linux - приемлемое решение моих проблем?
Это одно решение. Вам следует подумать о своей настройке. Если ваша текущая установка позволяет запускать все приложения в их собственных экземплярах Tomcat, каковы преимущества их запуска в отдельных контейнерах Linux? С Docker очень легко перестроить настройку. Кроме того, если вы не знакомы с Docker, вам придется научиться его использовать.