Jira / Jira Data Center を AWS ELB と連携する
この記事は Jira Server (Jira Data Center を含む) にのみ適用され、Jira Cloud に適用することはできません。
アトラシアン アプリケーションの製品内でリバース プロキシを使用できますが、アトラシアン サポートはその設定についての支援は行いません。つまり、アトラシアンではリバース プロキシに関するあらゆるサポートの提供が保証されません。
設定でサポートが必要な場合、アトラシアン コミュニティに質問を登録してください。
この記事では、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 セキュリティ グループで次のポートが許可されている必要があります。
- 8080
- 8081
- 8082
- 80
これによって Jira の接続性をテストできるようにするとともに、ELB が EC2 インスタンス内の Jira とやり取りできるようにします。
2. Tomcat の構成
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 つ作成し、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"/>
Jira を再起動し、次のようにアクセスできる (すべてプロキシをバイパス) ことを確認します。
3. HTTP アクセス用の ELB 構成
- EC2 管理で [Target Groups] に移動し、次のように新しいターゲット グループを作成します。
- Name: ELB-HTTP-access
- Protocol: HTTP
- Port: 80
- ターゲット グループにターゲットを追加します。
- 上述のターゲット グループを選択し、[Targets] タブを開いて [Edit] をクリックします。
- 実行中の Jira インスタンスを選択します (見つからない場合は前述のステップ 2.3 をご確認ください)。
- ポートを 8080 に変更します。
- Add to registered
- 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] - - 確認して作成
- Type: Application Load Balancer
- ドメイン名 (この例では jira.aws.elb) からロード バランサにアクセスできることを確認します。この構成方法はこの記事の対象外であり、アトラシアン サポートのサポート対象でもありません。
これが完了したら、http://jira.aws.elb 経由で Jira にアクセスできるようになり、そこでリクエストが http://ec2-hostname:8080 に転送されます。
4. HTTPS アクセス用の ELB 構成
- EC2 管理で [Target Groups] に移動し、次のように新しいターゲット グループを作成します。
- Name: ELB-HTTPS-access
- Protocol: HTTP
- Port: 80
- ターゲット グループにターゲットを追加します。
- 上述のターゲット グループを選択し、[Targets] タブを開いて [Edit] をクリックします。
- 実行中の Jira インスタンスを選択します (見つからない場合は前述のステップ 2.3 をご確認ください)。
- ポートを 8081 に変更します。
- Add to registered
- EC2 管理で [Load Balancers] に移動し、ステップ 3.3 で作成した既存のロード バランサを編集します。
- ロード バランサを選択し、[Listeners] タブを開き、[Add listener] を選択します。
- [Next] - - Protocol: HTTPS
- Port: 443
- Default Target Group: ELB-HTTPS-access
- SSL 証明書を選択するか、アップロードします。
- ロード バランサを選択し、[Listeners] タブを開き、[Add listener] を選択します。
これが完了したら、http://jira.aws.elb 経由で Jira にアクセスできるようになり、そこでリクエストが http://ec2-hostname:8081 に転送されます。
5. HTTP - HTTPS リダイレクトの構成
Application Load Balancer
Please follow this guide on how to configure HTTP to HTTPS redirection on the Application Load Balancer.
6. Jira Data Center について
Jira Data Center を使用している場合、ステップ 3.2 や ステップ 4.2 ですべての Jira ノードをターゲット グループに追加できます。適切なインスタンスを選択し、適切な Tomcat ポートを使用するだけです (すべてのノードに対して Tomcat を同様に構成することをおすすめします。ステップ 2 を参照)。
また、次の手順でロード バランサのスティッキー セッションを有効化する必要があります。
- それぞれのターゲット グループを選択し、[Description] タブを開いて [Edit attributes] をクリックします。
- Enable load balancer generated cookie stickiness
- 保存します。
これが完了すると、ユーザーはロード バランシングに基づいて登録済みのターゲット (Jira ノード) にルートされます。
注意
- ほとんどの場合、HTTPS 経由での Jira へのアクセスを実現し、HTTP を HTTPS に自動的にリダイレクトすることが要件となります。その場合、ステップ 3 をスキップしてステップ 4 および 5 に注力します。次の補足をご利用ください。
- ステップ 3.3 のロード バランサの作成手順 - ロード バランサのプロトコルとポートに必要な変更を行う必要があります
- ステップ 3.1 および ステップ 3.2 のターゲット グループの作成方法をステップ 5.4 で使用します
- リスナー (ステップ 4.3) およびターゲット グループは要件に合わせていつでも再構成できます。
- リダイレクトは使用せずに HTTPS のみを実現したい場合、ステップ 5 はスキップしてかまいません。