[Jira Server/Data Center] AWS ELB와 통합 하기
문제
Jira를 AWS ELB와 통합 하고 싶어요.
해결책
AWS ELB를, AWS EC2환경에 설치된 JIRA/JIRA 데이터 센터용 리버스 프록시/로드 밸런서로 구성하는 방법을 설명합니다.
AWS Security Groups 을 구성합니다.
EC2 instance에 대한 AWS Security Groups에서 아래 4가지 포트가 허용되어야 합니다.
이를 통해 Jira 접근성 테스트를 할 수 있을뿐만 아니라 ELB가 EC2 instance에서 Jira와 통신할 수 있습니다.8080
8081
8082
80
Tomcat을 설정합니다.
하나 또는 두 개의 proxy 커넥터 역할을 하고 다른 하나는 proxy 우회용(troubleshooting 용)으로 사용하도록 Tomcat 커넥터를 구성합니다.
JIRA_Install/conf/server.xml
파일에서 설정이 가능합니다.<Connector port="8080" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true"/>
위 커넥터의 복사본을 2개 만들고, 아래 세 가지의 내용을 모두 수정합니다.
<!-- 1. Add proxyName and proxyPort to the original connector that uses port 8080 - This connector is to be used for HTTP access via AWS ELB --> <Connector port="8080" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true" proxyName="jira.aws.elb" proxyPort="80"/> <!-- 2. Add proxyName, proxyPort, scheme, and secure to the second connector - modify it to use port 8081 - This connector is to be used for HTTPS access via AWS ELB --> <Connector port="8081" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true" proxyName="jira.aws.elb" proxyPort="443" scheme="https" secure="true"/> <!-- 3. Modify the third connector to use port 8082 without adding anything else - This connector is to be used for bypassing proxy e.g. JIRA can be accessed directly via http://ec2-hostname:8082 --> <Connector port="8082" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true"/>
JIRA를 다시 시작하고 다음을 통해 액세스할 수 있는지 확인합니다.(모두 Proxy 우회)
HTTP 액세스를 위한 ELB 구성
EC2 관리에서 대상 그룹으로 이동하여 다음과 같이 새 대상 그룹을 생성합니다.
이름: ELB-HTTP-access
프로토콜: HTTP
포트: 80
대상 그룹에 대상 추가
위의 대상 그룹 선택 → 대상 탭 열기 → 편집으로 이동합니다.
실행 중인 JIRA instance를 선택합니다.(그렇지 않은 경우 위의 2.3단계를 다시 확인합니다)
포트를 8080 으로 수정합니다.
등록된 항목에 추가합니다.
EC2 관리에서 Load Balancers로 이동하여 아래과 같이 새 Load Balancers를 생성합니다.
유형: Application Load Balancer
이름: JIRA-ELB
로드 밸런서 프로토콜: HTTP
로드 밸런서 포트: 80
가용 영역: EC2 instance와 동일한 VPC 를 선택한 후 2개의 Availability Zones을 선택합니다.
보안 그룹: 적절한 보안 그룹 선택
대상 그룹: 존재하는 대상 그룹
이름: ELB-HTTP-access
검토 및 만들기
HTTPS 액세스를 위한 ELB 구성
EC2 관리에서 대상 그룹으로 이동하여 다음과 같이 새 대상 그룹을 생성합니다.
이름: ELB-HTTPS-access
프로토콜: HTTP
포트: 80
대상 그룹에 대상 추가:
위의 대상 그룹 선택 → 대상 탭 열기 → 편집으로 이동합니다.
실행 중인 JIRA instance를 선택합니다.(그렇지 않은 경우 위의 2.3단계를 다시 확인합니다)
포트를 8081 로 수정합니다.
등록된 항목에 추가합니다.
EC2 관리에서 Load Balancers로 이동하여 3.3단계에서 생성한 기존 Load Balancers를 편집합니다.
Load Balancers 선택 → 리스너 탭 열기 → 리스너 추가
프로토콜: HTTPS
포트: 443
기본 대상 그룹: ELB-HTTPS-access
SSL 인증서 선택 또는 업로드
HTTP-HTTPS 리디렉션 구성하기
How do I redirect HTTP traffic on my server to HTTPS on my load balancer? 에 따르면 EC2 instance에 추가 프록시 서비스가 설치되어 있어야 합니다. 이 예시에서는 Nginx를 사용합니다.
EC2 instance에 Nginx를 설치합니다. 이것은 JIRA가 설치된 동일한 인스턴스일 수 있습니다. Ubuntu 14.04 LTS에 Nginx를 설치하는 방법을 참고하여 Nginx가 80포트에서 실행되고 있는지 확인할 수 있습니다.
HTTP에서 HTTPS로 요청을 리디렉션하도록 Nginx구성을 수정합니다.(
server_name
을 수정합니다)server { listen 80; server_name jira.aws.elb; if ($http_x_forwarded_proto != "https") { rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent; } }
Nginx를 다시 시작합니다.
ELB-HTTP 액세스 대상 그룹을 편집합니다.(3.b 단계 참조):
포트 8080에서 수신 대기 중인 현재 대상을 제거합니다.
Nginx가 실행 중인 EC2 instance를 선택합니다.
포트를 80(기본값)으로 수정합니다.
등록된 항목에 추가합니다.
JIRA 데이터 센터를 사용하는 경우
JIRA Data Center를 사용하는 경우 3.2단계 및/또는 4.2단계에서와 같이 모든 JIRA 노드를 대상 그룹에 추가할 수 있습니다. 올바른 instances를 선택하고 올바른 Tomcat 포트를 사용하기만 하면 됩니다.
(모든 노드에 대해 Tomcat을 유사하게 구성할 수 있습니다. 2단계 참조)
또한, 다음 단계에 따라 Load Balancer Stickiness를 활성화해야 합니다.해당 대상 그룹 선택 → 설명 탭 열기 → 속성을 편집 합니다.
Load Balancer generated cookie stickiness를 활성화 합니다.
저장합니다.
허가하여야하는 Port 및 설정 방안이 구성되어있으며 ALB쪽에 인증서가 정상적으로 반영되어있다면
Tomcat의 server.xml 파일에서 reverse proxy 설정을 구성해주시면 정상적으로 서비스가 됩니다.
관련 문서