Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
Info

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

사전 준비

...

  1. NFS 설정 - NFS 설정 참조

...

JIRA Software 설치 후 인스톨 폴더와 home 폴더를 서버 2번으로 복사

  • JIRA Software 서비스 중지

Code Block
./stop-jira.sh
  • 인스톨 폴더와 home 폴더 백업

Code Block
cd /opt/atlassian/postgres
tar cvf jira.tar jira
cd /home/atlassian/postgres
tar cvf jira-home.tar jira
  • 백업한 두 파일을 JIRA Server2에 이동, JIRA Server1번과 동일한 위치에 압축해제

Code Block
cd /opt/atlassian
tar xvf jira.tar
cd /home/atlassian
tar xvf jira-home.tar
  • JIRA 서비스 실행하여 정상적으로 접속하는지 확인

    • 압축해제 후 서비스만 실행하여 정상 실행 여부 확인

    • 정상 접속 확인 후 서비스 중지

JIRA Data Center 설정

1. JIRA Server 1 설정

  1. 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 설정

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

    Code Block
    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
  • 인스턴스 종료

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

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

      Code Block
      languagebash
      cp -R /home/datacenter/atlassian

...

    • /jira/{data,plugins,logos,import,export,caches} /home/share/

...

    • atlassian/jira
  • JIRA 홈디렉토리에 파일 생성  - 공유폴더와 node 아이디 설정

...

  • Code Block
    language

...

  • bash

...

  • $ 

...

  • cd /home/datacenter/atlassian/jira
    $ vi cluster.properties
    ---------------------------
    jira.node.id = node1
    

...

2. JIRA Server 2 설정

  • JIRA 홈디렉토리에 파일 생성  - 공유폴더와 node 아이디 설정

vi cluster.properties

...

languageactionscript3

...

  • jira.shared.home = /home/share/atlassian/jira
    ehcache.listener.hostName = twoseed-server
    ---------------------------
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/

2. JIRA node2 설정

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

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

    Code Block
    languagebash
    $ 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 Server1 서비스 시작

  • JIRA Server1 URL 접근하여 Data Center 라이선스 입력 후 서비스 재시작

  • JIRA Server2 서비스 시작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 접속

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

    Image Added

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

...