GitHub Enterprise Server でロードバランサを使用する
ロードバランサを、単一の GitHub Enterprise Server アプライアンス、あるいは High Availability 構成のアプライアンスのペアの前で使ってください。
ロードバランサの設計では、ネットワークデバイスを使って Git や HTTP のトラフィックを個々の GitHub Enterprise Server アプライアンスに送ります。セキュリティ上の目的で、あるいは必要な場合に DNS レコードを変更することなくトラフィックをリダイレクトするために、ロードバランサを使ってアプライアンスへの直接のトラフィックを制限できます。PROXY プロトコルをサポートする TCP ベースのロードバランサの利用を強くおすすめします。
GitHub Enterprise Server のホスト名への DNS ルックアップは、ロードバランサに解決されなければなりません。Subdomain Isolation を有効化することをおすすめします。Subdomain Isolation が有効化されている場合、追加のワイルドカードレコード (*.HOSTNAME
) もロードバランサに解決されなければなりません。詳細は「Subdomain Isolation を有効化する」を参照してください。
このガイドの内容
クライアントの接続情報の処理
GitHub Enterprise Server へのクライアント接続はロードバランサから来ることになるため、クライアントの IP アドレスは失われることがあります。
ロードバランサがサポートできるなら、PROXY プロトコルの実装を強くおすすめします。PROXY プロトコルのサポートがない場合でも、X-Forwarded-For
ヘッダを使って HTTP および HTTPS ポートをロードバランスすることができます。
セキュリティの警告: PROXY サポートあるいは HTTP フォワーディングが有効化されている場合、外部のトラフィックが直接 GitHub Enterprise Server アプライアンスに到達できないことが重要です。外部トラフィックが適切にブロックされていない場合、ソース IP アドレスが偽造されるかもしれません。
GitHub Enterprise Server インスタンスでのPROXYプロトコルサポートの有効化
アプライアンスとロードバランサの両方でPROXYプロトコルサポートを有効化することを強くおすすめします。 ロードバランサでPROXYプロトコルを有効化する方法については、ベンダーが提供する指示に従ってください。 詳しい情報についてはPROXY プロトコルのドキュメンテーションを参照してください。
-
任意のページの右上の隅で をクリックしてください。
-
左サイドバーで [Management Console] をクリックします。
-
左サイドバーで [Privacy] をクリックします。
-
External load balancers(外部ロードバランサ)の下でEnable support for PROXY protocol(PROXYプロトコルサポートの有効化)を選択してください。
左のサイドバーの下で、[Save settings(設定の保存)] をクリックしてください。
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 になります。
警告: HTTPS 接続をロードバランサでターミネートしている場合、ロードバランサからの GitHub Enterprise Server へのリクエストも HTTPS を使わなければなりません。接続の HTTP へのダウングレードはサポートされません。
-
任意のページの右上の隅で をクリックしてください。
-
左サイドバーで [Management Console] をクリックします。
-
左サイドバーで [Privacy] をクリックします。
-
External load balancers(外部ロードバランサ)の下でAllow HTTP X-Forwarded-For header(HTTP X-Forwarded-Forヘッダの許可)を選択してください。
左のサイドバーの下で、[Save settings(設定の保存)] をクリックしてください。
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ペアの自動フェイルオーバーはサポートされていません。 レプリカインスタンスは、手動で昇格させるとリクエストに応えられるようになります。 詳細は「High Availability 用に GitHub Enterprise Server を設定する」を参照してください。
以下の URL のいずれかをチェックするようにロードバランサを設定します:
- HTTPSが有効な場合 (デフォルト) は
https://HOSTNAME/status
- HTTPS が無効な場合は
http://HOSTNAME/status
ノードが健全でエンドユーザのリクエストに応えることができるのであれば、このチェックにはステータスコード 200
(OK) が返されます。
メモ: アプライアンスがメンテナンスモードになっている場合、URL の https://HOSTNAME/status
はステータスコード 503
(Service Unavailable) を返します。詳しい情報については「メンテナンスモードの有効化とスケジューリング」を参照してください。