3. 본 세션에서 다루는 내용
• 아틀라시안 활용에 있어서 자주 발생하는 문제점에 대한 해결
• 가상화/클라우드 기반의 아틀라시안 솔루션 데이터 센터 구축
4. 강연자 소개
• 웹 애플리케이션 서버를 만드는 외국계 회사에서 근무했습
니다
• 리눅스 파는 외국계 회사에 근무했습니다
• 기술 관련 번역을 수행하고 몇 권의 책이 서점과 고객사에
있습니다
• 년에 오픈소스 컨설팅이 만들어지고 식구 들와 좋은
회사를 만들지 고민하고 있습니다
• 클라우드 기반 최신 오픈소스 기술에 대
한 전파를 주로 하고 있습니다
5. 프로세스
통합 대시보드
표준 규격화
업무 메타 관리
개발 진행 관리
등
배포 도구
문서
빌드
요구사항 개발 빌드 배포 운영
소스
소스 추적
코드 리뷰작업 관리 및
이슈 트래킹
기업 애플리케이션 협업 관리
요구사항현업 담당자
요구사항 입력
각 기능 별 모듈 분리 및 상호 기반 연동
시스템 관리자
운영 관리 모니터링
소스 품질
상호 기반
연동
상호 기반 연동
프로젝트 배포 승인
개발자
품질 관리자
품질 관리
통합 계정 관리
전사 업무 메시징
8. 오픈소스컨설팅 특징
• 아틀라시안 파트너 공통
•
• 오픈소스컨설팅 전문성 분야
• 오픈 소스 통합 환경 구성 및 기술 지원
• 인프라 컨설팅 및 트러블슈팅 리눅스 가상화 클라우드
• 미들웨어 컨설팅 및 트러블슈팅
• 오픈 소스 애플리케이션 소스 코드 패치 및 플러그인 제작
• 기반
9. 불안한 한 대의 서버
• 서버가 죽으면 현업에서 난리가 나요
• 아파치 웹 서버를 두고 로 연결하면 되는거 아닌가요
• 세션 클러스터링을 하면 되는 것 아닌가요
• 여러 고객사에서 이중화를 시도
10. 솔루션 내부 구조는 보셨나요
• 기반의 애플리케이션으로 되어 있습니다
• 기반의 도 사용합니다
• 당연한 플러그인 기반으로 움직입니다
13. 이중화는 어떻게 하나요?
JIRA
(Active)
MySQL
(jiradb)
IIS Web Server
isapi_redirect.dll
Crowd
(Active)
MySQL
(crowd)
Confluence
(Active)
MySQL
(confluence)
Crowd
(Standby)
Confluence
(Standby)
JIRA
(Standby)
isapi_redirect.properties
uriworkermap.properties
/jira=jiraworker
File System
Attachments
File System
Attachments
Active Servers (10.10.10.X)
Standby Server (10.10.20.X)
External Storage
• Confluence, JIRA의
Attachments 파일의 이중화는
외장 스토리지, NFS, RSYNC
등을 통해 구성
14. 절차 내용
서버 준비 제품들을 설치할 장비 준비 및 환경 구성
제품 설치
서버
제품 설치
구성
서버에 설치된 의 구성을 기존 서버로 설
정
설정
외장 스토리지의 경우
기존 디렉토리의 내용을 외장 스토리지로 복제하고
서버에 및 구성 변경
설정
의 경우
서버에서 구성을 통해 디렉토리 공유
서버에서 및 구성
에 설정 변경 서버 간 모드로 동작하도록 구성 변경
테스트 간 전환 테스트
이중화는 어떻게 하나요?
15. 부하는 여전히 못견뎌요
• 안정성은 조금 확보했으나 사용자 콘텐츠 증가에 대한 대책
• 다운타임이 발생할 가능성이 있어요
• 성능 스케일업은 한계가 있어요 최대 성능은 스케일 아웃에서 나와요
16. 고민해야 할 문제들
다운타임의 유형
계획되지 않은
다운타임
프로세스 다운 등
프로세스 멈춤
노드 다운
네트워크 통신 장애
과 부하로 인한 성능 저하
데이터베이스 장애
스토리지 장애
계획된 다운타임
업그레이드
패치
작업
17.
18. 서버 동시 운영
•
• 예 웹서버 를 통해서 요청을 개 이상의
또는 시스템으로 분배 및 페일오버
• 서버 간에 클러스터링 컨텍스트
등 공유
19. 파일 데이터베이스 레이어
• 데이터베이스 및 스토리지 공유
• 개 이상의 서버가 클러스터링 형태로 동작하며 공유 데이터베이스
와 스토리지에 접속
• 노드 정보 플러그인 인덱스 첨부파일 등의 데이터를 공유
응답시간개선
20. 데이터센터 아키텍처 로드밸런싱 레이어
• 같은 하드웨어 장비 사용 가능
• 등과 사용 가능
• 등의 모듈을 통해서
요청을 분배 및 페일오버
애플리케이션 레이어
• 복수 서버 기반 들 동작
• 노드 간에 또는 자체
프로토콜을 통해 클러스터링 컨텍스트
정보 등 공유
• 동적인 노드 제거 또는 새로운 노드 추가
공유 자원 레이어
• 복수 서버가 데이터베이스 및
스토리지 공유해서 사용 빠른
• 등의 자원을 공유
통신통신
등 공유 등 공유
21. 고가용성 아키텍처
• 관리 모니터링 기능이 내장
• 클러스터링 기능을 통한 고가용성을 유지하기 위해 각종 기능의 정상 동작 여부
를 상시 체크 및 조치 경고 발생
• 이러한 백그라운드 클러스터링 서비스들을 통해 클러스터 전체 또는 노드 별 안
정성 유지
기능 내용
검색 결과 예 가 즉 일부 노드에서 결과가 다름 일 경우 를 노드 간에 복제 함
노드 중에서 플러그인 또는 사용에 문제 예 가 안됨 가 있는지 모니터링
문제가 있을 경우 해당 노드에 대한 경고를 발생
의 각종 정보 동기화를 위한 스케줄러 정상 여부를 체크
클러스터 컨텍스트와 캐시 정보를 노드 간에 복제하기 위한 서비스 체크
특정 노드에서 문제가 발생할 경우 경고를 발생 함
클러스터 노드 간에 시간 불일치를 막기 위한 시간 동기화 서비스
여러 노드가 공유 스토리지의 을 정상적으로 공유하는지 체크
22. 데이터 센터
• 가상화 기반의 스케일 아웃형 데이터 센터 아키텍처 구성
• 성능 저하에 대한 확장을 수평적으로 진행
23.
24.
25. 가상화 클라우드 하면 뭐가 좋은가요
• 가상화 적용시 목적별 노드 가감 방법 및 대비 편의성
• 의 경우 을 통한 데이터센터 구성이 분 이내
• 백업 데이터 스냅샷을 통해 문제 발생 시 신규 인스턴스 즉시 생성 및 서비스 수
입 가능
• 즉 인스턴스 생성 및 서비스 투입을 최소화 시킴
26. 목적에 따라 분리가 가능해요
• 서버들을 용도에 맞게 구분
• 일반 프로젝트 관리 및 을 위한 노드와 전용 노드를 구분
• 에서 를 구분하여 해당 노드로 라우팅
• 데이터베이스 스토리지 공유를 통해서 동일한 내용 제공 가능
27. 목적에 따라 분리가 가능해요
• 목적에 따라 노드를 분리하여 분산형태로 사용 가능
노드 일반 노드
관리자 노드 파워유저 노드
28. •
• 헬스케어분야에서 연 조 매출
• 이상의 직원
• 사용자 폭발적 증가로 인한 심각한 성능 저하와 심각한 가용성 저하
• 분산된 개 노드에서 프로젝트 관리 많은 중복 요소
29. •
• 용도에 따라 인스턴스를 구분
• 개의 전용 노드 각종 관리 작업 수행
• 개의 일반 사용자 개발자 용 노드
• 개의 전용 노드
• 효과
• 년 연간 시간 가용성 에 이르던 다운타임
• 년 현재 수준으로 개선 이상 가용성 연간 시간 이내
32. 결국 트러블 슈팅은 노하우
• 아틀라시안 소스 코드를 볼 수 있는 능력
• 미들웨어에서 발생하는
• 구간의 전반적인 구성
• 다양한 서포트 케이스 및 해결 경험의 중요성
33. 변경하고 로그인이 안되네요
• 발생 원인
• 기존에 다른 디렉토리로부터 계정정보를 받아올 경우 해당 서버의 정보 변경
에 의해 발생 가능
• 해결 방법
• 권한회복 및 사용자 디렉토리 순서조절
34. 로 아예 들어가질 못해요
• 원인
• 때문에 로그인을 못하는 경우 와 의 그림
문자가 깨져서 입력할 수 없는 경우
• 해결방법
• 에서 쿼리를 통해 를 초기화
• 는 기반으로 동작하나 가 서버 설정을 따라서 에
러가 발생할 수 있으므로 실행 옵션 자체에 명시적으로 추가
35. 세션이 자주 끊겨요
• 원인
• 와 같은 다른 어플리케이션을 같이 사용 시 도메인이나 가 같은
상태에서 포트만 다르게 쓰면 발생 가능
• 해결방안
• 를 통한 설정이나 를 설정 설정에서 세션
쿠키명을 바꿔주는 방법 등이 있음
36. 보드에서 에러가 나요
• 문제 상황
• 보드에서 를 클릭 시 에러가 발생하는 경우
• 원인
• 보드의 설정이
• 하나의 이슈에 대해 여러 개의 이 설정된 경우
• 문제 상황
• 로 모든 이슈들이 각각 하나의 만 가지도록 설정
37. 페이지에서
• 요청
• 페이지 마크다운 플러그인 사용하여 커스터마이징하고 싶어요
• 마크다운 내 스크립트 사용
• <link rel="stylesheet"
href="http://localhost:8888/owl.carousel.css"> <script
type="text/javascript" src="https://code.jquery.com/jquery-
1.12.3.min.js"></script> <script> var jq11223 =
jQuery.noConflict(); </script> <script type="text/javascript"
src="http://localhost:8888/owl.carousel.js"></script> <script> //
alert($().jquery); // alert(AJS.$().jquery);
38. 매크로에서 한글 그룹 검색이 안되요
• 요청
• Confluence User List 매크로 사용 시 한글 그룹이 검색이 안됩니다.
• 원인
• 한글 요청에 대한 NginX 웹 서버 proxy 세팅이 잘못된 경우 발생
• 해결
• {…
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
39. 가 계속 돌아요
• 원인
• 첨부파일 개수가 많은 페이지가 지속적으로 쌓이는 경우
• 해결방안
• 데이터베이스를 통해 페이지의 첨부파일 개수가 특정 수를 넘는 것을 확인 후 삭제
• 페이지 내 첨부파일 개수 확인 쿼리
SELECT * FROM (
select r.pageid, r.spaceid, s.spacename, r.username, r.pageTitle, count(r.title) as attachment_count from (
SELECT DISTINCT c.pageid, c.spaceid, u.username, c.title, co.title AS pageTitle
FROM CONTENT AS c
JOIN user_mapping AS u
ON u.user_key = c.creator
JOIN CONTENT AS co
ON c.pageid = co.contentid
JOIN CONTENTPROPERTIES AS cn