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サポートの有効化
PROXYプロトコルが利用できないときにかぎりX-Forwarded-Forプロトコルを利用してください。 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://HOSTNAME/status
HTTPSが有効な場合(デフォルト)http://HOSTNAME/status
HTTPSが無効な場合
ノードが健全でエンドユーザーからのリクエストに応えられる場合、このチェックにはステータスコード200
(OK)が返されます。
ノート: アプライアンスがメンテナンスモードの場合、https://HOSTNAME/status
のURLはステータスコード503
(Service Unavailable)を返します。 詳しい情報については"メンテナンスモードの有効化とスケジューリング"を参照してください。