Jira / Jira Data Center を AWS ELB と連携する

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

この記事は Jira Server (Jira Data Center を含む) にのみ適用され、Jira Cloud に適用することはできません。

アトラシアン アプリケーションの製品内でリバース プロキシを使用できますが、アトラシアン サポートはその設定についての支援は行いません。つまり、アトラシアンではリバース プロキシに関するあらゆるサポートの提供が保証されません。

設定でサポートが必要な場合、アトラシアン コミュニティに質問を登録してください。

tip/resting Created with Sketch.

この記事では、AWS EC2 環境にインストールされた Jira / Jira Data Center 向けに AWS ELB をリバース プロキシ / ロード バランサとして構成する方法について説明します。

Jira を Apache または Nginx と連携したことがある場合、および自身のシステム環境に Jira Data Center をインストールしたことがある場合、この記事をスムーズに読み進めることができます。

この記事ではコンテキスト パスを持たないサンプル URL (https://jira.aws.elb、HTTP の場合は http://jira.aws.elb) を使用しています。Jira URL にコンテキスト パスがあるかどうかは影響しませんが、使用するドメイン名 (この例では jira.aws.elb) が AWS ELB で解決可能である必要があります。

1. AWS セキュリティ グループの構成

この記事のコンテキストでは、EC2 インスタンスの AWS セキュリティ グループで次のポートが許可されている必要があります。

  1. 8080
  2. 8081
  3. 8082
  4. 80

これによって Jira の接続性をテストできるようにするとともに、ELB が EC2 インスタンス内の Jira とやり取りできるようにします。

2. Tomcat の構成

  1. Tomcat Connector を構成して、1 つまたは 2 つを Proxy Connector に、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 つ作成し、3 つすべてを次のように変更します。

    <!--
    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 を再起動し、次のようにアクセスできる (すべてプロキシをバイパス) ことを確認します。

3. HTTP アクセス用の ELB 構成

  1. EC2 管理で [Target Groups] に移動し、次のように新しいターゲット グループを作成します。
    • Name: ELB-HTTP-access
    • Protocol: HTTP
    • Port: 80

  2. ターゲット グループにターゲットを追加します。
    • 上述のターゲット グループを選択し、[Targets] タブを開いて [Edit] をクリックします。
    • 実行中の Jira インスタンスを選択します (見つからない場合は前述のステップ 2.3 をご確認ください)。
    • ポートを 8080 に変更します。
    • Add to registered

  3. EC2 管理で [Load Balancers] に移動し、次のように新しいロード バランサを作成します。
    • Type: Application Load Balancer

      - [Next] -
    • Name: JIRA-ELB
    • Load Balancer Protocol: HTTP
    • Load Balancer Port: 80
    • Availability Zones: EC2 インスタンスと同じ VPC を選択し、[2 Availability Zones] を選択

      - [Next] -
    • Security Groups: 適切なセキュリティ グループを選択

      - [Next] -
    • Target group: Existing target group
    • Name: ELB-HTTP-access

      - [Next] -
    • 確認して作成

  4. ドメイン名 (この例では jira.aws.elb) からロード バランサにアクセスできることを確認します。この構成方法はこの記事の対象外であり、アトラシアン サポートのサポート対象でもありません。
tip/resting Created with Sketch.

これが完了したら、http://jira.aws.elb 経由で Jira にアクセスできるようになり、そこでリクエストが http://ec2-hostname:8080 に転送されます。

4. HTTPS アクセス用の ELB 構成

  1. EC2 管理で [Target Groups] に移動し、次のように新しいターゲット グループを作成します。
    • Name: ELB-HTTPS-access
    • Protocol: HTTP
    • Port: 80

  2. ターゲット グループにターゲットを追加します。
    • 上述のターゲット グループを選択し、[Targets] タブを開いて [Edit] をクリックします。
    • 実行中の Jira インスタンスを選択します (見つからない場合は前述のステップ 2.3 をご確認ください)。
    • ポートを 8081 に変更します。
    • Add to registered

  3. EC2 管理で [Load Balancers] に移動し、ステップ 3.3 で作成した既存のロード バランサを編集します。
    • ロード バランサを選択し、[Listeners] タブを開き、[Add listener] を選択します。

      - [Next] -
    • Protocol: HTTPS
    • Port: 443
    • Default Target Group: ELB-HTTPS-access
    • SSL 証明書を選択するか、アップロードします。
tip/resting Created with Sketch.

これが完了したら、http://jira.aws.elb 経由で Jira にアクセスできるようになり、そこでリクエストが http://ec2-hostname:8081 に転送されます。


5. HTTP - HTTPS リダイレクトの構成

これを ELB 内で構成することは簡単ではありません。「ELB の Classic Load Balancer で HTTP トラフィックを HTTPS にリダイレクトする方法を教えてください。」によると、EC2 インスタンスにインストールされた追加のプロキシ サービスが必要になります。この例では Nginx を使用することを推奨します。

  1. EC2 インスタンスに Nginx をインストールします。Jira がインストールされているのと同じインスタンスにすることができます。「How To Install Nginx on Ubuntu 14.04 LTS」の手順を利用できます。Nginx がポート 80 で実行されていることを確認します。

  2. Nginx 構成を変更し、HTTP から HTTPS にリクエストをリダイレクトするようにします (必要に応じて 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-access ターゲット グループ (ステップ 3.2 を参照) を編集します。
    • ポート 8080で現在リッスンしているターゲットを削除します。
    • Nginx が実行されている EC2 インスタンスを選択します。
    • ポートを 80 (既定) に変更します。
    • Add to registered
tip/resting Created with Sketch.

これが完了したあとも引き続き、https://jira.aws.elb に直接アクセスできます。http://jira.aws.elb にアクセスすると次のようになります。

  • http://jira.aws.elb はポート 80 の Nginx にルートされます
  • Nginx がプロトコルを HTTP から HTTPS に書き換えます。これにより、https://jira.aws.elb に到達します
  • https://jira.aws.elb はポート 8081 の Jira にルートされます (ステップ 4 に従う)

つまり、HTTP は HTTPS にシームレスにリダイレクトされます。

6. Jira Data Center について

Jira Data Center を使用している場合、ステップ 3.2 や ステップ 4.2 ですべての Jira ノードをターゲット グループに追加できます。適切なインスタンスを選択し、適切な Tomcat ポートを使用するだけです (すべてのノードに対して Tomcat を同様に構成することをおすすめします。ステップ 2 を参照)。

また、次の手順でロード バランサのスティッキー セッションを有効化する必要があります。

  1. それぞれのターゲット グループを選択し、[Description] タブを開いて [Edit attributes] をクリックします。
  2. Enable load balancer generated cookie stickiness
  3. 保存します。
tip/resting Created with Sketch.

これが完了すると、ユーザーはロード バランシングに基づいて登録済みのターゲット (Jira ノード) にルートされます。

注意

  • ほとんどの場合、HTTPS 経由での Jira へのアクセスを実現し、HTTP を HTTPS に自動的にリダイレクトすることが要件となります。その場合、ステップ 3 をスキップしてステップ 4 および 5 に注力します。次の補足をご利用ください。
    • ステップ 3.3 のロード バランサの作成手順 - ロード バランサのプロトコルとポートに必要な変更を行う必要があります
    • ステップ 3.1 および ステップ 3.2 のターゲット グループの作成方法をステップ 5.4 で使用します
  • リスナー (ステップ 4.3) およびターゲット グループは要件に合わせていつでも再構成できます。
  • リダイレクトは使用せずに HTTPS のみを実現したい場合、ステップ 5 はスキップしてかまいません。

最終更新日 2019 年 9 月 25 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.