/
Jira AWS ELB와 통합 하기

Jira AWS ELB와 통합 하기

 문제

Jira를 AWS ELB와 통합 하고 싶어요.

 해결책

AWS ELB를, AWS EC2환경에 설치된 JIRA/JIRA 데이터 센터용 리버스 프록시/로드 밸런서로 구성하는 방법을 설명합니다.

  1. AWS Security Groups 을 구성합니다.
    EC2 instance에 대한 AWS Security Groups에서 아래 4가지 포트가 허용되어야 합니다.
    이를 통해 Jira 접근성 테스트를 할 수 있을뿐만 아니라 ELB가 EC2 instance에서 Jira와 통신할 수 있습니다.

    • 8080

    • 8081

    • 8082

    • 80

  2. Tomcat을 설정합니다.

    1. 하나 또는 두 개의 proxy 커넥터 역할을 하고 다른 하나는 proxy 우회용(troubleshooting 용)으로 사용하도록 Tomcat 커넥터를 구성합니다.

      1. 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. 위 커넥터의 복사본을 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"/>
    3. JIRA를 다시 시작하고 다음을 통해 액세스할 수 있는지 확인합니다.(모두 Proxy 우회)

      1. http://ec2-hostname:8080

      2. http://ec2-hostname:8081

      3. http://ec2-hostname:8082

  3. HTTP 액세스를 위한 ELB 구성

    1. EC2 관리에서 대상 그룹으로 이동하여 다음과 같이 새 대상 그룹을 생성합니다.

      • 이름: ELB-HTTP-access

      • 프로토콜: HTTP

      • 포트: 80

    2. 대상 그룹에 대상 추가

      • 위의 대상 그룹 선택 → 대상 탭 열기 → 편집으로 이동합니다.

      • 실행 중인 JIRA instance를 선택합니다.(그렇지 않은 경우 위의 2.3단계를 다시 확인합니다)

      • 포트를 8080 으로 수정합니다.

      • 등록된 항목에 추가합니다.

    3. EC2 관리에서 Load Balancers로 이동하여 아래과 같이 새 Load Balancers를 생성합니다.

      • 유형: Application Load Balancer

      • 이름: JIRA-ELB

      • 로드 밸런서 프로토콜: HTTP

      • 로드 밸런서 포트: 80

      • 가용 영역: EC2 instance와 동일한 VPC 를 선택한 후 2개의 Availability Zones을 선택합니다.

      • 보안 그룹: 적절한 보안 그룹 선택

      • 대상 그룹: 존재하는 대상 그룹

      • 이름: ELB-HTTP-access

      • 검토 및 만들기

  4. HTTPS 액세스를 위한 ELB 구성

    1. EC2 관리에서 대상 그룹으로 이동하여 다음과 같이 새 대상 그룹을 생성합니다.

      • 이름: ELB-HTTPS-access

      • 프로토콜: HTTP

      • 포트: 80

    2. 대상 그룹에 대상 추가:

      • 위의 대상 그룹 선택 → 대상 탭 열기 → 편집으로 이동합니다.

      • 실행 중인 JIRA instance를 선택합니다.(그렇지 않은 경우 위의 2.3단계를 다시 확인합니다)

      • 포트를 8081 로 수정합니다.

      • 등록된 항목에 추가합니다.

    3. EC2 관리에서 Load Balancers로 이동하여 3.3단계에서 생성한 기존 Load Balancers를 편집합니다.

      • Load Balancers 선택 → 리스너 탭 열기 → 리스너 추가

      • 프로토콜: HTTPS

      • 포트: 443

      • 기본 대상 그룹: ELB-HTTPS-access

      • SSL 인증서 선택 또는 업로드

  5. HTTP-HTTPS 리디렉션 구성하기

    • How do I redirect HTTP traffic on my server to HTTPS on my load balancer? 에 따르면 EC2 instance에 추가 프록시 서비스가 설치되어 있어야 합니다. 이 예시에서는 Nginx를 사용합니다.

      1. EC2 instance에 Nginx를 설치합니다. 이것은 JIRA가 설치된 동일한 인스턴스일 수 있습니다. Ubuntu 14.04 LTS에 Nginx를 설치하는 방법을 참고하여 Nginx가 80포트에서 실행되고 있는지 확인할 수 있습니다.

      2. 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; } }
      3. Nginx를 다시 시작합니다.

      4. ELB-HTTP 액세스 대상 그룹을 편집합니다.(3.b 단계 참조):

        • 포트 8080에서 수신 대기 중인 현재 대상을 제거합니다.

        • Nginx가 실행 중인 EC2 instance를 선택합니다.

        • 포트를  80(기본값)으로 수정합니다.

        • 등록된 항목에 추가합니다.

  6. JIRA 데이터 센터를 사용하는 경우

    • JIRA Data Center를 사용하는 경우 3.2단계 및/또는 4.2단계에서와 같이 모든 JIRA 노드를 대상 그룹에 추가할 수 있습니다. 올바른 instances를 선택하고 올바른 Tomcat 포트를 사용하기만 하면 됩니다.
      (모든 노드에 대해 Tomcat을 유사하게 구성할 수 있습니다. 2단계 참조)
      또한, 다음 단계에 따라 Load Balancer Stickiness를 활성화해야 합니다.

      1. 해당 대상 그룹 선택 → 설명 탭 열기 → 속성을 편집 합니다.

      2. Load Balancer generated cookie stickiness를 활성화 합니다.

      3. 저장합니다.

 


허가하여야하는 Port 및 설정 방안이 구성되어있으며 ALB쪽에 인증서가 정상적으로 반영되어있다면
Tomcat의 server.xml 파일에서 reverse proxy 설정을 구성해주시면 정상적으로 서비스가 됩니다.

예시 이미지

 관련 문서

 

Related content

Confluence Page URL 생성 규칙
Confluence Page URL 생성 규칙
Read with this
Jira 생성된 그룹 이름 변경하기
Jira 생성된 그룹 이름 변경하기
More like this
Confluence Page tree가 보이질 않습니다
Confluence Page tree가 보이질 않습니다
Read with this
Jira 플러그인 캐시(plugin cache) 지우는 방법
Jira 플러그인 캐시(plugin cache) 지우는 방법
More like this
Jira Cloud 이슈 보안 설정하기
Jira Cloud 이슈 보안 설정하기
More like this
Jira 사용자 및 역할에 제거된 그룹명(remove groupname)이 표시되는 문제 해결 방법
Jira 사용자 및 역할에 제거된 그룹명(remove groupname)이 표시되는 문제 해결 방법
More like this