Jira Data Center 用の CDN 設定
ユーザーが世界中に分散していて、Jira Software Data Center または Jira Software Data Center を使用する際に遅延が発生している場合、コンテンツ デリバリ ネットワーク (CDN) を使用してエクスペリエンスを改善できる可能性があります。一般的な CDN としては、AWS CloudFront、Cloudflare、Azure CDN、Akamai などが挙げられます。
「Atlassian Data Center アプリで CDN を使用する」で、アトラシアン製品の CDN 機能や、それがユーザー エクスペリエンスを向上させるかどうかを評価する方法をご確認ください。
CDN の使用を開始する準備が整ったら、次の 3 つの主な手順を実行します。
- インターネット向けロード バランサを構成します (オプション)。
- CDN を構成します。
- Jira アプリケーションで CDN 機能を有効にします。
ZDU (ゼロ ダウンタイムのアップグレード) を実行している場合は、アップグレードの前に CDN を無効にしてクラスターが安定した状態になった後で有効にすることを強くお勧めします。それ以外の場合は、CDN のパフォーマンスに関連する問題が発生する可能性があります。
インターネット向けロード バランサの構成 (オプション)
インターネット向けロード バランサの追加
インターネット向けロード バランサをセットアップに追加します。これはプライマリ ロード バランサに追加されます。CDN は、このロード バランサとやり取りする唯一のエンティティです。次の内容を推奨します。
- HTTPS を有効にします。このロード バランサからのトラフィックはパブリック インターネット経由で送信され、暗号化される必要があります。
- HTTP/1.1 を有効にします。現在、キャッシング プロキシと CDN は送信元への転送時に HTTP/2 を正常に (あるいはまったく) 処理できません。
- AWS デプロイの場合、インターネット向けのアプリケーション ロード バランサをセットアップします。
インターネット向けロード バランサのためのファイアウォール ルールの更新
プライマリ ロード バランサとは異なり、CDN がキャッシュ可能なデータのみを取得できるようにインターネット向けロード バランサをロックダウンする必要があります。ファイアウォール ルールを次のように構成することをおすすめします。
- 構成は"/s/"で始まるパスの要求のみを許可します。アプリケーションがコンテキスト パスを使用してデプロイされている場合 (例: yoursite.com/wiki または yoursite.com/jira)、これをパスに含める必要があります。他の要求はすべてブロックされる必要があります。
- 許可される HTTP メソッドを GET、HEAD、OPTIONS に制限することもできます。
AWS デプロイの場合、アプリケーション ロード バランサに接続された Web アプリケーション ファイアウォールで Web アクセス コントロール リスト (Web ACL) を構成します。"URI" に "文字列一致条件" を適用する条件を使用します。
セットアップが安全かどうかを確認するには、以下の手動テストを実施します。
https://internet-facing-proxy/
の GET は "403 FORBIDDEN" を返す必要があります。https://internet-facing-proxy/s
の GET は "403 FORBIDDEN" を返す必要があります。https://internet-facing-proxy/s/
の GET は "404 NOT FOUND" を返す必要があります。https://internet-facing-proxy/s/
の GET は "403 FORBIDDEN" を返す必要があります。https://internet-facing-proxy/s/../s/
の GET は "404 NOT FOUND" を返す必要があります。
アセットをキャッシュするための CDN 構成
最小限の労力で Amazon CloudFront を構成できるよう、CloudFormation テンプレートをご用意しました。https://bitbucket.org/atlassian/atlassian-aws-deployment/src/master/templates/cdn/ リポジトリ、すべての AWS デプロイ リソースをご確認いただけます。
アトラシアンのテンプレートを使用しない場合、CDN 構成で次のように定義します。この例は AWS CloudFront に基づきます。
Origin domain name | アトラシアン アプリケーションのベース URL です。コンテキスト パスを構成済みの場合はそれを含めます。 例: mycompany.com/confluence |
---|---|
Origin path | 空欄のままにします。パスを指定する必要はありません。 |
Allowed HTTP methods | 任意で次に制限: GET、HEAD、OPTIONS |
Viewer protocol policy | HTTP を HTTPS にリダイレクト |
Object caching | Use origin cache headers |
Forward cookies | None これは、静的アセットがユーザー コンテキストなしでキャッシュされるようにするために重要です。 |
Query String Forwarding and Caching | Forward all, cache based on all |
HTTP protocols | HTTP/2 を含める必要があります。 |
Error pages/Error Caching Minimum TTL (seconds) | CloudFront でのエラー ページの既定のキャッシュ時間は 5 分です。停止から回復までに必要な時間を短縮するために 10 ~ 30 秒の範囲の値に下げることを検討してください。 |
Compress Objects Automatically | はい |
他のほとんどの設定はデフォルトのままで問題ありません。
この情報はご利用の CDN プロバイダに合わせて調整する必要があります。使用されている用語は CDN プロバイダによって異なります。詳細についてはご利用の CDN のマニュアルを参照してください。
Jira アプリケーションで CDN を有効化
CDN を構成したら、Jira アプリケーションで CDN オプションを有効化できます。
CDN を有効化するには、次の手順を実行します。
- 上部のナビゲーション バーから [管理者 ] > [システム] を選択します。
- [コンテンツ デリバリ ネットワーク] を選択し、[設定] タブに移動します。
- ステータスを [オン] にします。
- CDN によって生成されたURLをURLフィールドに貼り付け、[検証] をクリックします。
- 正常に実行できたら変更を保存します。
エンド ユーザーが Jira にアクセスすると、最も近いエッジ サーバーに静的アセットがキャッシュされ、有効期限が切れるまでそこから提供されます。つまり、ユーザーがオンラインになるタイミングや、各拠点でサイトにアクセスするタイミングによっては、CDN による影響の確認に時間がかかる可能性があります。
REST API 経由で Jira の CDN を構成
<base-url>/rest/static-asset-caching/configuration
- GET -現在の CDN ステータスとURLを返します。
- DELETE -既存の構成を削除し、デフォルトの状態に戻します (CDN 無効、URL なし)。キャッシュの問題が原因で UI にアクセスできない場合に有用です。
PUT - CDN URL とステータスを次のように、リクエストの本文で渡される値に設定します。
{ “enabled”: true, “url”: “https://yourcdnurl.com” }
トラブルシューティング
- HTTPS CDN URL のみが許可される場合
Azure CDN を使用している場合、これは特に重要です。Azure CDN は発信元のリクエストと同じプロトコルをミラーリングするため、Data Center アプリケーションを HTTPS でプロビジョニングする必要があります。 Data Center アプリケーションの UI にアクセスできない、または機能しない
可能性は低いですが、CDN の構成ミスや CDN サービスの停止によってアプリケーションの UI にアクセスできないことがあります。この場合、以下のように REST API を使用して CDN 機能を無効にする必要があります。curl -v -u <admin username>:<admin password> -X DELETE http://<your-base-url>/rest/static-asset-caching/configuration
この例では Curl を使用しますが、任意の言語を使用できます。ユーザー名、パスワード、ベース URL のプレースホルダーをご自身の情報に置き換えてください。
- HTTP/2 が無効
ロード バランサ、ファイアウォール、またはリバース プロキシで HTTP/2 トラフィックを許可している必要があります。 HTTP/2 を使用することにより、エンド ユーザーに最適なパフォーマンスを提供できます。詳細については、「HTTP/2 CDN 構成でヘルス チェックに失敗する」を参照してください。 - ユーザーがインストールしたアプリとの互換性がない可能性
この警告は、Marketplace アプリまたはユーザーがインストールしたその他のアプリが非推奨のメソッドを使用していることが検出されると表示されます。これによってアセットが正常にキャッシュされない可能性があります。この警告が表示された場合の対処方法の詳細については、「CDN の構成時にユーザーがインストールしたアプリのヘルスチェックに失敗する」を参照してください。
よくある質問
キャッシュされる静的アセットを制御することはできますか?
いいえ、これはアプリケーションが制御します。静的アセットへのすべてのリクエストがすべて CDN に転送されます。非静的アセットのリクエストは製品に直接転送されます。
個人を特定可能な情報はキャッシュされますか?
ユーザーが作成したコンテンツ、ユーザー名、メンション、アバターなどは静的アセットではないため、キャッシュされません。Cookie がストリップされた製品からコンテンツを取得するように CDN を構成して、ユーザー コンテキストなしで動作するようにする必要があります。
batch.js
などの動的コンテンツはキャッシュされますか?
batch.js
は動的に生成されますが、静的コンテンツと見なされるため、キャッシュされます。