JIRA Data Center 설치

본 설치 가이드는 Jira software 8.13.0 기준으로 작성 되었습니다.

사전 준비

  1. NFS 설정 - NFS 설정 참조

  2. Apache Load Balancer 설정(root 계정 - Ubuntu 설정)

    $ cd /etc/apach2/sites-available $ sudo a2enmod headers proxy_balancer proxy_http proxy lbmethod_byrequests slotmem_shm ## 모듈 활성화 $ vi dcjira.twoseed.co.kr.conf ## 원하는 이름으로 .conf 파일 생성 --------------------------- <VirtualHost *:80> ServerName dcjira.twoseed.co.kr Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED <Proxy balancer://jiracluster> BalancerMember http://***.***.48.220:7180 route=node1 BalancerMember http://***.***.124.236:7180 route=node2 Order Allow,Deny Allow from dcjira.twoseed.co.kr Satisfy Any </Proxy> ProxyPass / balancer://jiracluster/ stickysession=ROUTEID </VirtualHost> ---------------------------- $ sudo a2ensite dcjira.twoseed.co.kr.conf ## 사이트 활성화 $ sudo service apache2 reload ## apach 서버 다시 시작

JIRA Data Center 설정

1. JIRA node1 설정

  • 새 인스턴스 설치 - Jira Linux Installation 참조

    jira Data Center 설치 정보 node1 : twoseed-server(ubuntu) node2 : twoseed-centos install path : /opt/datacenter/atlassian/jira local home path : /home/datacenter/atlassian/jira shared home path : /home/share/atlassian/jira port : 7180/7105 db : dcjiradb/dcjiradbuser/dcjiradbuser service ID : twoseed
  • 인스턴스 종료

    $ cd /opt/datacenter/atlassian/jira/bin $ ./stop-jira.sh
  • Apache 연결 정보 입력

    $ cd /opt/datacenter/atlassian/jira/conf $ vi server.xml ## proxyName, proxyPort, scheme 값 입력 ''' <Connector port="7180" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true" bindOnInit="false" proxyName="dcjira.twoseed.co.kr" proxyPort="80" scheme="http"/> '''
  • 공유폴더에 아래 폴더 복사

    • data, plugins, logos, import, export, caches

      cp -R /home/datacenter/atlassian/jira/{data,plugins,logos,import,export,caches} /home/share/atlassian/jira
  • JIRA 홈디렉토리에 파일 생성  - 공유폴더와 node 아이디 설정

    $ cd /home/datacenter/atlassian/jira $ vi cluster.properties --------------------------- jira.node.id = node1 jira.shared.home = /home/share/atlassian/jira ehcache.listener.hostName = twoseed-server ---------------------------

매개 변수

필수

설명 / 값

매개 변수

필수

설명 / 값

jira.node.id

이 고유 ID는 아파치 구성의 사용자 이름과 밸런서멤버 항목과 일치해야 함

jira.shared.home

모든 Jira 노드에 대한 공유 홈 디렉토리의 위치

ehcache.peer.discovery

아니오

노드가 서로를 찾는 방법 설명:

기본값 – Jira가 노드를 자동으로 검색(권장)
자동 – EhCache의 멀티캐스트 검색을 사용. EhCache가 사용하는 역사적 방법이지만 구성이 어려울 수 있으며, 아틀라시안에서는 권장하지 않음.

ehcache.peer.discovery = automatic을 설정하는 경우 다음 매개 변수를 설정:

* ehcache.multicast.address
* ehcache.multicast.port
* ehcache.multicast.timeToLive
* ehcache.multicast.hostName

매개 변수에 대한 자세한 내용은 Ehcache 설명서를 참조

ehcache.listener.hostName

아니오

캐시 통신을 위한 현재 노드의 호스트 이름. 매개 변수가 설정되지 않은 경우 Jira Data Center에서 내부적으로 확인한다.
네트워크의 호스트 이름을 확인하는데 문제가 있는 경우 이 매개 변수를 설정.

ehcache.listener.port

아니오

노드가 수신할 포트(기본값은 40001)

여러 노드가 동일한 호스트에 있거나 이 포트를 사용할 수 없는 경우 이 매개 변수를 수동으로 설정해야 할 수 있다.

ehcache.object.port

아니오

레지스트리에서 바인딩된 원격 개체가 호출을 수신하는 포트(기본값은 40011).

여러 노드가 동일한 호스트에 있거나 이 포트를 사용할 수 없는 경우 이 매개 변수를 수동으로 설정해야 할 수 있다.

ehcache.listener.socketTimeoutMillis

아니오

기본적으로 이 값은 EhCache 기본값으로 설정

  • Install, Home directory 백업 및 node2에 복사

    $ cd /opt/datacenter/atlassian $ tar cvfz jira_install.tgz jira/ $ cd /home/datacenter/atlassian $ tar cvfz jira_home.tgz jira/

 

2. JIRA node2 설정

  • node1의 백업 파일 동일 위치에 압축 풀기

    $ cd /opt/datacenter/atlassian $ tar xvfz jira_install.tgz $ cd /home/datacenter/atlassian $ tar xvfz jira_home.tgz
  • JIRA 홈디렉토리 파일 수정 - 공유폴더와 node 아이디 설정

    $ cd /home/datacenter/atlassian/jira $ vi cluster.properties --------------------------- jira.node.id = node2 jira.shared.home = /home/share/atlassian/jira ehcache.listener.hostName = twoseed-centos ---------------------------

 

3. JIRA node1 과 JIRA node2 인스턴스 실행

  • JIRA node1 인스턴스 시작

    $ cd /opt/datacenter/atlassian/jira/bin $ ./start-jira.sh
  • JIRA node2 인스턴스 시작

    $ cd /opt/datacenter/atlassian/jira/bin $ ./start-jira.sh
  • Apache 서버에 적용한 URL 접속

  • Administrator > System > Clustering 에서 각 node 상태 확인 가능

Trouble Shooting

클러스터링에서 Node가 하나만 올라와 있는 경우

atlassian-jira.log에서 아래와 같이 에러 발생

localhost-startStop-1 ERROR [c.a.jira.upgrade.PluginSystemLauncher] A fatal error occured during initialisation. JIRA has been locked. com.atlassian.jira.InfrastructureException: Error occurred while starting Plugin Manager. Unable to resolve component: interface com.atlassian.plugin.SplitStartupPluginSystemLifecycle ... at com.atlassian.jira.cluster.distribution.JiraCacheManagerPeerProvider.lambda$wrapCachePeer$4(JiraCacheManagerPeerProvider.java:112) Caused by: java.rmi.NoSuchObjectException: no such object in table at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162) at net.sf.ehcache.distribution.RMICachePeer_Stub.getName(Unknown Source)

setenv.sh 에 아래 구문 추가

-Djava.rmi.server.hostname=<호스트네임(ehcache.listener.hostName)과 동일하게 입력>