Atlassian Confluence, AWS 에서 Synchrony 설정 방법
Atlassian 의 Confluence 는 매우 유용한 협업 툴이다. 단, Amazon Web Service(이하 AWS)에서의 사용은 간단하지 않다. Confluence 의 문제라기 보단 AWS 의 서비스가 가상화 환경 또는 소프트웨어적으로 동작하다 보니, 필요요구사항을 충족하지 못하기 때문이다.
얼마전 발표된 Confluence 6는 ‘공동편집 기능, Synchrony’ 이 추가됐다. 복수의 사용자가 한 문서를 사용할 때 Confluence 5 는 각각의 서로 다른 환경에서 작업하고 병합(Merge) 하는 형태였다면 Confluence 6 는 Google Drive 와 같이 실시간 공동 편집 작업을 지원하게 된 것. 다음은 Google Drive 의 Spreadsheet의 예제다.
누군가가 동일한 문서를 편집할 때 그 내용이 실시간으로 편집 화면이 갱신되고 있는 것을 확인할 수 있다.
WebSocket 을 응용한 이 기술은 아주 새롭지는 않지만 상당히 편리하다. 단지, AWS 에서 를 사용하기는 쉽지 않은데, ELB(Elastic Load Balancer)가 Web Socket 을 완벽하게 지원하지 않기 때문. Layer 7의 HTTP / HTTPS만 지원하던 ELB 가 Layer 4 TCP Balancing을 지원하게 된것도 이와 결코 무관하지는 않다. 자, WebSocket 기반 공동 편집 기능 Synchrony를 AWS 에서 사용해 보자.
1. Application Load Balancer, ALB의 도입
지난 8월(2016년), AWS 는 새로운 형태의 Balancer, ALB(Application Load Balancer)를 도입하게 된다. ALB의 특징은 AWS Document 에서 잘 설명 되어 있으므로 생략. 중요한 것은 두가지.
WebSocket 의 지원
Contents-based Routing 지원
이 두가지가 없었다면 ELB/EC2 환경의 AWS 에서는 공동편집 기능을 사용할 수 없었을 것이다. 이를 사용해야 하는 이유는 다음과 같다.
- Synchrony는 8091의 개별 TCP 포트 뿐만 아니라, 일부 Script 을 원 도메인에서 Alias 형태로 서비스 하기 때문
- Synchrony는 WSS (WebSocket over SSL)을 사용하기 때문
이 중 1번의 이슈 때문에 기존 ELB(=Classic Load Balancer)에서는 Synchrony 를 사용할 수 없다. 자, ALB 를 추가하자
(1) Target Groups 생성
Default Setting | |||
Target group name | wiki-for-http | wiki-for-ssl | WIKI for Synchrony |
Protocol | HTTP | HTTP | HTTP |
Port | 80 | 8090 | 8091 |
VPC | yours | yours | yours |
Health Check Setting | |||
Protocol | HTTP | HTTP | HTTP |
Path | / | / | / |
- 대부분 8090(Confluence 기본 포트, 8080 = JIRA) / 8091 만 등록하면 된다.
- 본인의 경우 80 으로 유입되는 사용자가 443(=8090)으로 Redirect 되는구조
(2) Application Load balancer 생성
A. Load Balancers 메뉴의 [Create Load Balancer] 버튼을 클릭해 ALB 를 생성한다.
B. ALB 의 이름을 설정하고 Listeners 의 포트를 추가한다. 이 포트는 ‘외부’에서 접근 가능한 포트로 다음과 같이 포트 맵핑(Port Mapping )할 예정이다.
- 80 => 80
- 443 => 8090
- 8091 => 8091
C. SSL 을 사용한다면 인증서를 선택하자. (ACM 을 사용하면 SSL을 무료로 사용할 수 있는 만큼, 이를 통해 Confluence Traffic 을 보호하자.) HTTPS 를 사용하지 않는다면 이 화면은 보이지 않을 것이다
D. Target group 을 선택한다. 이는 앞서 “Target Groups” 메뉴에서 생성한 Target 을 선택한다. 참고로 이 화면에서는 ‘기본’의 Target group 을 지정하는 화면이며, 실제 설정은 생성 완료 후 추가 하게 된다.
E. Load Balancer 목록에 새로운 ALB 가 추가됐다
F. ALB 를 선택하고, Listeners Tab을 선택해 모든 Rule을 펼치자.
- 모두 앞서 선택한 Target Group이 기본 선택 되어 있을 것이다.
- 기본 포트(본인의 경우 443) 와 Synchrony 포트(default:8091) 설정에 대해서만 변경하자
G. 그리고, Add rule을 통해 Synchrony 하위 폴더에 대한 요청을 8091 Target Group 으로 맵핑하자. 매우 중요!!!!!!!!
H. 이제 ALB 추가가 완료됐다. 주의할 것은 Security Group에 본인이 사용하고자 할 포트 및 8091 이 개방 되어 있어야 한다는 것
(3) Confluence 공동작업 기능 재시작
ALB 가 추가 되었다면 Confluence 공동작업 기능의 재시작을 권장한다. Confluence 6 을 설치하고, 기본 상태는 Synchrony Enable 이며, Heartbeat signal 을 보내고 있었기 때문이다. 새로운 Balancer가 추가 되었지만, Confluence 는 System Caching 된 정보를 사용하고 있을 것이기 때문.
‘끔’ 상태로 변경하고 다시 ‘켬’ 상대로 변경하자. 그럼에도 불구하고 반영되지 않는다면 Instance를 Reboot 하자.
(4) 동작 확인
하단 상태바에 ‘실행할 준비 완료(한글버전)’라는 글이 보이면 공동편집 기능이 동작하는 것.
한번 같은 문서를 동시에 작업해보자.
Welcome!