버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

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

Section


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

PostgreSQL 15

Java 17

목차

목차
exclude목차
stylenone



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번 등 클러스터링을 위한 포트 방화벽 열기

코드 블럭
languageshell
$ 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 설치 가이드

정보

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번 수동 종료

코드 블럭
languageshell
linenumberstrue
# 서비스로 중지하는 경우
$ sudo systemctl stop confluence

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


attachments 파일을 shared-home으로 이동

코드 블럭
languageshell
$ mv <home-directory>/attachments <home-directory>/shared-home

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

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

코드 블럭
languageshell
$ sudo mkdir -p /app/atlassian
$ sudo mkdir -p /data/atlassian


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

코드 블럭
languageshell
linenumberstrue
# 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 파일 수정

코드 블럭
languageshell
$ 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 설정 파일에 로드 밸런서 설정 예시

코드 블럭
languagenginx
themeEmacs
title설정 파일 예시) /etc/nginx/conf.d/confluence.conf
linenumberstrue
collapsetrue
# 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에서 접속 가능한지 확인

코드 블럭
languageshell
linenumberstrue
$ vi /var/lib/pgsql/15/postgresql.conf

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

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


설정 파일 수정

코드 블럭
languageshell
linenumberstrue
$ 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 → 일반 환경 설정 → 클러스터링



참조