Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

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

사전 준비

  1. NFS 설정 - NFS 설정 참조

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

    Code Block
    languagebash
    $ 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 설정

...

Expand
titleCluster.properties 파일 매개 변수

매개 변수

필수

설명 / 값

jira.node.id

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

jira.shared.home

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

ehcache.peer.discovery

아니오

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

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

Expand
title자동을 선택하면...

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에 복사

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

...

  • JIRA node1 인스턴스 시작

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

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

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

Trouble Shooting

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

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

Code Block
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)과 동일하게 입력>

...