Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2023-01-18. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせく� さい

クラスタのネットワーク設定

GitHub Enterprise Server クラスタリングが適切に動作するためには、DNS の名前解決、ロードバランシング、ノード間の通信が適切に行われなければなりません。

ネットワークに関する考慮事� �

クラスタリングのための最もシンプルなネットワーク設計は、ノード群を単一のLANに置くことです。 クラスタがサブネットワークにまたがる必要がある� �合は、ネットワーク間にファイアウォールルールを設定することはお勧めしません。 ノード間の遅延は 1 ミリ秒未満である必要があります。

高可用性を実現するには、アクティブ ノードを備えたネットワークとパッシブ ノードを備えたネットワーク間の待ち時間が 70 ミリ秒未満である必要があります。 2 つのネットワーク間にファイアウォールを設定することはお勧めしません。

エンドユーザーのためのアプリケーションポート

アプリケーションのポートは、エンドユーザーにWebアプリケーションとGitへのアクセスを提供します。

Port説明Encrypted
22/TCPGit over SSHYes
25/TCPSMTPSTARTTLSが必要
80/TCPHTTPNo
(SSL が有効になっている� �合、このポートは HTTPS にリダイレクトされます)
443/TCPHTTPSYes
9418/TCP単純な Git プロトコル ポート
(プライベート モードでは無効)
No

管理ポート

管理ポートは、エンドユーザが基本的なアプリケーションを利用するためには必要ありません。

Port説明Encrypted
ICMPICMP PingNo
122/TCP管理SSHYes
161/UDPSNMPNo
8080/TCPManagement Console HTTPNo
(SSL が有効になっている� �合、このポートは HTTPS にリダイレクトされます)
8443/TCPManagement Console HTTPSYes

クラスタ通信ポート

ネットワークレベルのファイアウォールがノード間にある� �合は、これらのポートがアクセス可能である必要があります。 ノード間の通信は暗号化されていません。 これらのポートは外部からアクセスできません。

Port説明
1336/TCP内部 API
3033/TCP内部 SVN アクセス
3037/TCP内部 SVN アクセス
3306/TCPMySQL
4486/TCPGovernor アクセス
5115/TCPストレージ バックエンド
5208/TCP内部 SVN アクセス
6379/TCPRedis
8001/TCPGrafana
8090/TCP内部 GPG アクセス
8149/TCPGitRPC ファイルサーバーアクセス
8300/TCPConsul
8301/TCPConsul
8302/TCPConsul
9000/TCPGit デーモン
9102/TCPPages ファイルサーバー
9105/TCPLFS サーバー
9200/TCPElasticsearch
9203/TCPセマンティックコードサービス
9300/TCPElasticsearch
11211/TCPMemcache
161/UDPSNMP
8125/UDPStatsd
8301/UDPConsul
8302/UDPConsul
25827/UDPCollectd

ロードバランサの設定

ノード間のトラフィックの分配には、PROXY プロトコルをサポートする TCP ベースの外部ロードバランサをおすすめします。 以下のロードバランサ設定を検討してく� さい:

  • TCP ポート (以下に示す) は、web-server サービスを実行しているノードに転送する必要があります。 これらは、外部クライアント要求を処理する唯一のノードです。
  • スティッキーセッションは有効化してはなりません。

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

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

クラスタへのクライアント接続はロードバランサから行われるため、クライアントの IP アドレスが失われる可能性があります。 クライアント接続情� �を正しく取り込むには、追� の検討が必要です。

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

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

GitHub Enterprise Serverでの PROXY サポートの有効化

インスタンスとロードバランサの双方でPROXYサポートを有効化することを強くおすすめします。

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

  • インスタンスにはこのコマンドを使用してく� さい:

    $ ghe-config 'loadbalancer.proxy-protocol' 'true' && ghe-cluster-config-apply
  • ロードバランサでは、ベンダーから提供された手� �書に従ってく� さい。

    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を示します。

X-Forwarded-For ヘッダーを有効にするには、次のコマンドを使用します。

$ ghe-config 'loadbalancer.http-forward' 'true' && ghe-cluster-config-apply

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

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

ヘルスチェックの設定

ロードバランサは健全性チェックによって、事前に設定されたチェックが失敗するようになったノードがあれば、反応しなくなったノードへのトラフィックの送信を止めます。 クラスタのノードに障害が起きた� �合、冗長なノードと組み合わさったヘルスチェックが高可用性を提供してくれます。

以下のURLのいずれかをチェックするようにロードバランサを設定してく� さい。

  • https://HOSTNAME/status HTTPS が有効な� �合 (既定)
  • http://HOSTNAME/status HTTPS が無効な� �合

ノードが正常でエンドユーザーからの要求に応えられる� �合、このチェックによって状態コード 200 (OK) が返されます。

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

DNS の要件

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