Skip to main content

GitHub Enterprise Server でロードバランサを使用する

ロード バランサーを、単一の GitHub Enterprise Server インスタンス、あるいは高可用性構成のインスタンスのペアの前で使ってください。

ロード バランサーについて

ロードバランサの設計では、ネットワークデバイスを使ってGit及びHTTPのトラフィックを個々のGitHub Enterprise Serverアプライアンスに向かわせます。 ロードバランサを使って、セキュリティのためにアプライアンスへの直接のトラフィックを制限したり、必要に応じてDNSのレコードを変更することなくトラフィックをリダイレクトしたりできます。 PROXYプロトコルをサポートするTCPベースのロードバランサを使うことを強くおすすめします。

GitHub Enterprise Serverのホスト名に対するDNSルックアップは、ロードバランサに解決されなければなりません。 Subdomain Isolationを有効化することをおすすめします。 サブドメイン分離が有効化されている場合、追加のワイルドカード レコード (*.HOSTNAME) もロード バランサーに解決されなければなりません。 詳しくは、「Subdomain Isolationの有効化」を参照してください。

クライアントの接続情報の処理

GitHub Enterprise Server へのクライアント接続はロードバランサから来ることになるため、クライアントの IP アドレスは失われることがあります。

使用しているロードバランサがサポートできるなら、PROXYプロトコルの利用を強くおすすめします。 PROXY サポートが利用できない場合でも、X-Forwarded-For ヘッダーを使って HTTP および HTTPS ポートを負荷分散できます。

セキュリティの警告: PROXY サポートあるいは HTTP フォワーディングが有効化されている場合、外部のトラフィックが直接 GitHub Enterprise Server アプライアンスに到達できないことが重要です。 外部トラフィックが適切にブロックされていない場合、ソース IP アドレスが偽造されるかもしれません。

警告: ロード バランサーの HTTPS 接続を終了する場合、ロード バランサーから GitHub Enterprise Server への要求も HTTPS を使用する必要があります。 接続の HTTP へのダウングレードはサポートされません。

お使いの GitHub Enterprise Server インスタンス での PROXY プロトコル サポートの有効化

インスタンスとロード バランサーの両方で PROXY プロトコル サポートを有効にすることを強くおすすめします。 ロードバランサでPROXYプロトコルを有効化する方法については、ベンダーが提供する指示に従ってください。 詳細については、PROXY プロトコルのドキュメントを参照してください。

注: GitHub Enterprise Server は、AWS ネットワーク ロード バランサーと互換性のない PROXY プロトコル V1 をサポートしています。 GitHub Enterprise Server で AWS ネットワーク ロード バランサーを使用する場合は、PROXY サポートを有効にしないでください。

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。

  3. [ サイト管理者] サイドバーで [Management Console] をクリックします。

  4. [設定] サイドバーで、[プライバシー] をクリックし、[プライバシー モード] をオフにします。

  5. [外部ロード バランサー] で、 [PROXY プロトコルのサポートを有効にする] を選択します。

  6. [設定] サイドバーで [設定の保存] をクリックします。

    注: [Management Console] に設定を保存すると、システム サービスが再起動され、ユーザーに表示されるダウンタイムが発生する可能性があります。

  7. 設定の実行が完了するのを待ってください。

PROXYプロトコルのTCPポートマッピング

送信元ポート宛先ポートサービスの説明
2223Git over SSH
8081HTTP
443444HTTPS
80808081Management Console HTTP
84438444Management Console HTTPS
94189419Git

お使いの GitHub Enterprise Server インスタンス での X-Forwarded-For サポートの有効化

X-Forwarded-For プロトコルは、PROXY プロトコルが使用できない場合にのみ使用します。 X-Forwarded-For ヘッダーは HTTP と HTTPS とのみ互換性があります。 SSH経由の Git 接続では、示される IP アドレスは、ロード バランサーの IP を示します。 一部の環境では、インスタンスの監査ログのクライアント IP アドレスが 127.0.0.1 として正しく表示されない場合があります。

警告: お使いの GitHub Enterprise Server インスタンス とロード バランサーの X-Forwarded-For サポートを構成すると、[Management Console] に接続できない可能性があります。 詳しくは、「GitHub Enterprise Server でロードバランサを使用する」を参照してください。

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。

  3. [ サイト管理者] サイドバーで [Management Console] をクリックします。

  4. [設定] サイドバーで、[プライバシー] をクリックし、[プライバシー モード] をオフにします。

  5. [外部ロード バランサー] で、 [HTTP X-Forwarded-For ヘッダーを許可する] を選択します。

  6. [設定] サイドバーで [設定の保存] をクリックします。

    注: [Management Console] に設定を保存すると、システム サービスが再起動され、ユーザーに表示されるダウンタイムが発生する可能性があります。

  7. 設定の実行が完了するのを待ってください。

PROXYサポートなしで使うプロトコルのTCPポートマッピング

送信元ポート宛先ポートサービスの説明
2222Git over SSH
2525SMTP
8080HTTP
443443HTTPS
80808080Management Console HTTP
84438443Management Console HTTPS

健全性チェックの設定

ロードバランサは健全性チェックによって、事前に設定されたチェックが失敗するようになったノードがあれば、反応しなくなったノードへのトラフィックの送信を止めます。 メンテナンスもしくは予想外の障害のためにインスタンスがオフラインになっている場合、ロード バランサーでは状態ページを表示できます。 High Availability(HA)設定では、ロードバランサはフェイルオーバーの戦略の一部として利用できます。 ただし、HAペアの自動フェイルオーバーはサポートされていません。 レプリカ インスタンスは、手動で昇格させると要求に応えられるようになります。 詳しくは、「高可用性の構成」を参照してください。

次の URL をチェックするようにロード バランサーを構成します。

http(s)://HOSTNAME/status

ノードが正常でエンドユーザーからの要求に応えられる場合、このエンドポイントによって状態コード 200 (OK) が返されます。 詳しくは、「High Availability 設定の監視」を参照してください。

注: アプライアンスがメンテナンス モードの場合、https://HOSTNAME/status URL は状態コード 503 (サービス利用不可) を返します。 詳しくは、「メンテナンスモードの有効化とスケジューリング」を参照してください。

ロード バランサーを介した接続のトラブルシューティング

ロード バランサーを介して お使いの GitHub Enterprise Server インスタンス 上のサービスに接続できない場合は、次の情報を確認して問題のトラブルシューティングを行うことができます。

: ステージング環境でネットワーク インフラストラクチャとインスタンス構成に対する変更を常にテストします。 詳しくは、「ステージングインスタンスのセットアップ」を参照してください。

エラー: [Management Console] への接続の "セッションの有効期限が切れています"

インスタンスとロード バランサーで X-Forwarded-For ヘッダーのサポートを有効にした場合、インスタンスの [Management Console] にアクセスできない可能性があります。 [Management Console] と接続に必要なポートについて詳しくは、「Web UI からインスタンスを管理する」と「ネットワーク ポート」を参照してください。

お使いの GitHub Enterprise Server インスタンス により、ロード バランサーを介して [Management Console] に接続したときにセッションの有効期限が切れたことが示されている場合は、ロード バランサーで次のいずれかの構成を試してください。

詳しくは、ロード バランサーのドキュメントを参照してください。

issue とチェックの実行に対するライブ更新が機能しない

お使いの GitHub Enterprise Server インスタンス にロード バランサーまたはリバース プロキシ経由でアクセスすると、issue に関する新しいコメントや通知バッジの変更、実行出力の確認などの予想されるライブ更新が、ページが更新されるまで表示されない場合があります。 これは、リバース プロキシまたはロード バランサーがレイヤー 7 モードで実行されているか、必要な Websocket プロトコルをサポートしていない場合によくあります。

ライブ更新を有効にするには、ロード バランサーまたはプロキシを再構成する必要がある場合があります。 詳しくは、ロード バランサーのドキュメントを参照してください。