ロード バランサーについて
ロードバランサの設計では、ネットワークデバイスを使ってGit及びHTTPのトラフィックを個々のGitHub Enterprise Serverアプライアンスに向かわせます。 ロードバランサを使って、セキュリティのためにアプライアンスへの直接のトラフィックを制限したり、必要に応じてDNSのレコードを変更することなくトラフィックをリダイレクトしたりできます。 PROXYプロトコルをサポートするTCPベースのロードバランサを使うことを強くおすすめします。
ホスト名 GitHub Enterprise Server の DNS ルックアップは、ロード バランサーを指す必要があります。 Subdomain Isolationを有効化することをおすすめします。 サブドメイン分離が有効化されている場合、追加のワイルドカード レコード (*.HOSTNAME) もロード バランサーに解決されなければなりません。 詳しくは、「サブドメインの分離を有効化する」をご覧ください。
クライアントの接続情報の処理
GitHub Enterprise Serverへのクライアント接続はロード バランサーから行われるため、クライアント IP アドレスが失われる可能性があります。
使用しているロードバランサがサポートできるなら、PROXYプロトコルの利用を強くおすすめします。 PROXY サポートが利用できない場合でも、X-Forwarded-For ヘッダーを使って HTTP および HTTPS ポートを負荷分散できます。
注意事項
PROXY サポートまたは HTTP 転送を有効にしている場合、外部のトラフィックが直接 GitHub Enterprise Server アプライアンスに到達できないことが重要です。 外部トラフィックが適切にブロックされていない場合、ソース IP アドレスが偽造されるかもしれません。
警告
ロード バランサーの HTTPS 接続を終了する場合、ロード バランサーから GitHub Enterprise Server への要求も HTTPS を使用する必要があります。 接続の HTTP へのダウングレードはサポートされません。
で PROXY プロトコルのサポートを有効にする お使いの GitHub Enterprise Server インスタンス
インスタンスとロード バランサーの両方で PROXY プロトコル サポートを有効にすることを強くおすすめします。 ロードバランサでPROXYプロトコルを有効化する方法については、ベンダーが提供する指示に従ってください。 詳細については、PROXY プロトコルのドキュメントを参照してください。
メモ
GitHub Enterprise Server は、AWS ネットワーク ロード バランサーと互換性のない PROXY プロトコル V1 をサポートしています。 GitHub Enterprise Server で AWS ネットワーク ロード バランサーを使用する場合は、PROXY サポートを有効にしないでください。
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ Site admin] サイドバーで、[[Management Console]] をクリックします。
-
[Settings] サイドバーで [Privacy] をクリックして、[Private mode] をオフにします。
-
[外部ロード バランサー] で、 [PROXY プロトコルのサポートを有効にする] を選択します。
-
[設定] サイドバーで [設定の保存] をクリックします。
メモ
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
PROXYプロトコルのTCPポートマッピング
| 送信元ポート | 宛先ポート | サービスの説明 |
|---|---|---|
| 22 | 23 | Git over SSH |
| 80 | 81 | HTTP |
| 443 | 444 | HTTPS |
| 8080 | 8081 | Management Console HTTP |
| 8443 | 8444 | Management Console HTTPS |
| 9418 | 9419 | Git |
お使いの GitHub Enterprise Server インスタンス で X-Forwarded-For サポートを有効にする
X-Forwarded-For プロトコルは、PROXY プロトコルが使用できない場合にのみ使用します。 X-Forwarded-For ヘッダーは HTTP と HTTPS とのみ互換性があります。 SSH経由の Git 接続では、示される IP アドレスは、ロード バランサーの IP を示します。 一部の環境では、インスタンスの監査ログのクライアント IP アドレスが 127.0.0.1 として正しく表示されない場合があります。
警告
X-Forwarded-Forとロード バランサーお使いの GitHub Enterprise Server インスタンスサポートを構成した場合、[Management Console]に接続できない可能性があります。 詳しくは、「GitHub Enterprise Server とロード バランサーの使用」をご覧ください。
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ Site admin] サイドバーで、[[Management Console]] をクリックします。
-
[Settings] サイドバーで [Privacy] をクリックして、[Private mode] をオフにします。
-
[外部ロード バランサー] で、 [HTTP X-Forwarded-For ヘッダーを許可する] を選択します。
-
[設定] サイドバーで [設定の保存] をクリックします。
メモ
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
PROXYサポートなしで使うプロトコルのTCPポートマッピング
| 送信元ポート | 宛先ポート | サービスの説明 |
|---|---|---|
| 22 | 22 | Git over SSH |
| 25 | 25 | SMTP |
| 80 | 80 | HTTP |
| 443 | 443 | HTTPS |
| 8080 | 8080 | Management Console HTTP |
| 8443 | 8443 | Management Console HTTPS |
健全性チェックの設定
ロードバランサは健全性チェックによって、事前に設定されたチェックが失敗するようになったノードがあれば、反応しなくなったノードへのトラフィックの送信を止めます。 メンテナンスもしくは予想外の障害のためにインスタンスがオフラインになっている場合、ロード バランサーでは状態ページを表示できます。 High Availability(HA)設定では、ロードバランサはフェイルオーバーの戦略の一部として利用できます。 ただし、HAペアの自動フェイルオーバーはサポートされていません。 レプリカ インスタンスは、手動で昇格させると要求に応えられるようになります。 詳しくは、「高可用性の構成」をご覧ください。
次の URL をチェックするようにロード バランサーを構成します。
http(s)://HOSTNAME/status
ノードが正常でエンドユーザーからの要求に応えられる場合、このエンドポイントによって状態コード 200 (OK) が返されます。 詳しくは、「高可用性構成の監視」をご覧ください。
メモ
アプライアンスがメンテナンス モードの場合、https://HOSTNAME/status の URL からは状態コード 503 (サービス利用不可) が返されます。 詳しくは、「メンテナンスモードの有効化とスケジューリング」をご覧ください。
ロード バランサーを介した接続のトラブルシューティング
ロード バランサーを介して お使いの GitHub Enterprise Server インスタンス 上のサービスに接続できない場合は、次の情報を確認して問題のトラブルシューティングを行うことができます。
メモ
ステージング環境でネットワーク インフラストラクチャとインスタンス構成に対する変更を常にテストしてください。 詳しくは、「ステージングインスタンスのセットアップ」をご覧ください。
エラー: "[Management Console] への接続でセッションの有効期限が切れています"
インスタンスとロード バランサーで X-Forwarded-For ヘッダーのサポートを有効にした場合、インスタンスの [Management Console]にアクセスできない可能性があります。 接続に必要な [Management Console] とポートの詳細については、 Web UI からインスタンスを管理する と ネットワーク ポート を参照してください。
ロード バランサーを介してお使いの GitHub Enterprise Server インスタンスに接続するときにセッションの有効期限が切れたことが[Management Console]示されている場合は、ロード バランサーで次のいずれかの構成を試してください。
- ポート 8080 と 8443 でインスタンスへの接続の
X-Forwarded-Forヘッダーを無効にします。 - レイヤー 4 で動作するようにロード バランサーを構成し、クライアント IP アドレスのパススルーの
X-Forwarded-Forではなく PROXY プロトコルを使用します。 詳細については、お使いの GitHub Enterprise Server インスタンスでの PROXY プロトコルのサポートの有効化を参照してください。
詳しくは、ロード バランサーのドキュメントを参照してください。
issue とチェックの実行に対するライブ更新が機能しない
ロード バランサーまたはリバース プロキシ経由で お使いの GitHub Enterprise Server インスタンス にアクセスすると、問題に関する新しいコメントや通知バッジの変更や実行出力の確認など、予想されるライブ更新が、ページが更新されるまで表示されない場合があります。 これは、リバース プロキシまたはロード バランサーがレイヤー 7 モードで実行されているか、必要な Websocket プロトコルをサポートしていない場合によくあります。
ライブ更新を有効にするには、ロード バランサーまたはプロキシを再構成する必要がある場合があります。 詳しくは、ロード バランサーのドキュメントを参照してください。