이 문서는 Confluence의 클러스터링 (node 2개) 설정 가이드를 공유하기 위해 작성되었다.


도구명Confluence Data Center
버전9.2.3
OSLinux(Rocky 8)
비고

PostgreSQL 15

Java 17

목차



0. 클러스터링 준비

1) 클러스터링의 이점

  • 고가용성 및 장애 조치: 클러스터의 한 노드가 다운되면 다른 노드가 로드를 담당하므로 사용자가 중단 없이 Confluence에 액세스할 수 있습니다.
  • 대규모 성능: 클러스터에 추가된 각 노드는 동시 사용자 용량을 늘리고 사용자 활동이 증가함에 따라 응답 시간을 향상시킵니다.
  • 즉각적인 확장성: 다운타임이나 추가 라이선스 비용 없이 클러스터에 새 노드를 추가합니다. 인덱스와 앱은 자동으로 동기화됩니다.
  • 재해 복구: 전체 시스템 중단 시에도 비즈니스 연속성을 위해 오프사이트 재해 복구 시스템을 구축합니다. 공유 애플리케이션 인덱스를 통해 빠르게 백업 및 실행이 가능합니다.
  • 롤링 업그레이드: 다운타임 없이 기능 릴리스의 최신 버그 수정 업데이트로 업그레이드하세요. 사용자에게 Confluence에 대한 중단 없는 액세스를 제공하는 동시에 사이트에 중요한 버그 수정 및 보안 업데이트를 적용하세요.

2) 클러스터링 구성 아키텍처

이 가이드에서는 다음과 같은 구성으로 클러스터링을 설정했습니다.

  • 기존에 사용 중이던 Confluence에 노드를 추가합니다.
    • 기존 서비스를 node 1번으로 하고, 추가 서버를 node 2번으로 지칭합니다.
  • Node 1번에 PostgreSQL DB를 구축하고, Node 2번에서 이 DB에 액세스합니다.
  • 로드 밸런서로써 Node 1번에 설치한 Nginx를 이용합니다.

3) node 1, 2번의 8090번 등 클러스터링을 위한 포트 방화벽 열기

$ sudo firewall-cmd --permanent --add-port=8090/tcp			// Confluence 기본 포트
$ sudo firewall-cmd --permanent --add-port=5701/tcp			// Confluence용 Hazelcast 포트
$ sudo firewall-cmd --permanent --add-port=5801/tcp			// Synchrony용 Hazelcast  포트
$ sudo firewall-cmd --permanent --add-port=25500/tcp		// Synchrony를 위한 클러스터 기반 포트
$ sudo firewall-cmd --reload

1. Confluence 설치

1) node1에 Confluence 설치 및 실행

이미 설치되어 있다면 생략

설치 가이드 참조 backhand index pointing right  Confluence Data Center 설치하기(Linux)

node1

  • Install Directory : /app/atlassian/confluence
  • Local Home Directory : /data/atlassian/confluence-data

2) node2에 JAVA 설치

pushpin node 1번과 같은 경로에, JAVA_HOME 환경 변수도 동일하게 설치

2. 클러스터링 활성화

1) 클러스터링 메뉴 활성화

관리자 메뉴 → 클러스터링 → 클러스터 모드 활성화

2) Confluence node 1번 수동 종료

# 서비스로 중지하는 경우
$ sudo systemctl stop confluence

# stop.sh 파일 실행하는 경우
$ <install-directory>/bin/stop-confluence.sh


attachments 파일을 shared-home으로 이동

$ mv <home-directory>/attachments <home-directory>/shared-home

3) node2에 node1의 설치 디렉토리 및 home 디렉토리 복사

node 2번에 설치 및 home 디렉토리 생성

$ sudo mkdir -p /app/atlassian
$ sudo mkdir -p /data/atlassian


node 1번의 설치 및 로컬 home 디렉토리를 node 2번으로 복사

# node 1번 서버에서 디렉토리를 2번 서버로 복사 전송
$ scp -r /app/atlassian/confluence root@<node2-ip-address>:/app/atlassian/confluence
$ scp -r /data/atlassian/confluence-home root@<node2-ip-address>:/data/atlassian/confluence-home

# node 2번에서 복사된 디렉토리 소유권 변경
$ chown -R confluence:confluence /app/atlassian/confluence/
$ chown -R confluence:confluence /data/atlassian/confluence-home/
  • 로컬 홈 디렉토리를 복사하면 Confluence 검색 인덱스, 데이터베이스 및 클러스터 구성, 기타 모든 설정이 노드 2로 복사됩니다.


confluence.cfg.xml 파일 수정

$ vi /data/atlassian/confluence-home/shared-home/confluence.cfg.xml

# 아래 각 노드에 맞게 추가
<property name="cluster.name">confluence-cluster</property>
<property name="cluster.node.name">node-1</property>				// node-2
<property name="confluence.cluster.node.id">1</property>			// 2
<property name="setupStep">complete</property>

4) 로드밸런싱 설정

  • Confluence 클러스터 앞에 세션 친화성이 있는 load balancer를 사용합니다. 

  • 협업 편집에는 WebSockets 지원도 권장됩니다.

  • 이 문서에서는 Apache loadbalancing을 설정한 가이드를 제공합니다.
    • 로드밸런서가 특정 쿠키를 생성, 동일한 세션의 요청을 동일한 서버로 라우팅하는 방식 

nginx 설정 파일에 로드 밸런서 설정 예시

설정 파일 예시) /etc/nginx/conf.d/confluence.conf
# upstream을 사용한 로드밸런싱
upstream confluence_cluster {
    least_conn;
    server 127.0.0.1:8090 max_fails=3 fail_timeout=10s;
    server <node2-ip-address>:8090 max_fails=3 fail_timeout=10s;
}

server {
    listen 8088;
    server_name confluence.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name confluence.example.com;

    ssl_certificate     /etc/ssl/private/confluence.example.com.crt;
    ssl_certificate_key /etc/ssl/private/confluence.example.com.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://confluence_cluster;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    access_log /var/log/nginx/confluence.access.log;
    error_log  /var/log/nginx/confluence.error.log;
}

5) DB 설정

PostgreSQL이 외부 IP에서 접속 가능한지 확인

$ vi /var/lib/pgsql/15/postgresql.conf

# listen_addresses = 'localhost'로 설정되어 있다면 아래처럼 변경
listen_addresses = '*'

# 방화벽 포트 오픈
$ sudo firewall-cmd --permanent --add-port=5432/tcp
$ sudo firewall-cmd --reload


설정 파일 수정

$ vi /var/lib/pgsql/15/data/pg_hba.conf

# 아래 코드 추가
host    all             all             <node2-ip-address>        md5

# 적용 후 PostgreSQL 재시작
$ sudo systemctl restart postgresql-15

3. Confluence 시작 및 클러스터링 구성 설정

1) Confluence 시작

  • node 1번과 node 2번 차례로 시작
  • 웹브라우저로 Confluence 접근

2) 클러스터 구성에 필요한 정보 입력

3) 클러스터 동작 확인

gear → 일반 환경 설정 → 클러스터링



참조


  • 레이블 없음