此版本的 GitHub Enterprise 已停止服务 2021-06-09. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

群集网络配置

GitHub Enterprise Server 集群依靠正确的 DNS 名称解析、负载均衡以及节点之间的通信来正常运行。

网络考虑因素

对于集群而言,最简单的网络设计是将节点置于单个 LAN 上。 如果群集必须跨子网,我们不建议在网络之间配置任何防火墙规则。 节点之间的延迟应小于 1 毫秒。

最终用户的应用程序端口

应用程序端口为最终用户提供 Web 应用程序和 Git 访问。

端口描述加密
22/TCP通过 SSH 访问 Git
25/TCPSMTP需要 STARTTLS
80/TCPHTTP
(启用 SSL 时,此端口重定向到 HTTPS)
443/TCPHTTPS
9418/TCP简单的 Git 协议端口
(在私有模式下禁用)

管理端口

最终用户在使用基本应用程序时不需要管理端口。

端口描述加密
ICMPICMP Ping
122/TCP管理 SSH
161/UDPSNMP
8080/TCPManagement Console HTTP
(启用 SSL 时,此端口重定向到 HTTPS)
8443/TCPManagement Console HTTPS

集群通信端口

如果节点之间存在网络级防火墙,则需要访问这些端口。 节点之间的通信未加密。 这些端口不应从外部访问。

端口描述
1336/TCP内部 API
3033/TCP内部 SVN 访问
3037/TCP内部 SVN 访问
3306/TCPMySQL
4486/TCP管理者访问
5115/TCP存储后端
5208/TCP内部 SVN 访问
6379/TCPRedis
8001/TCPGrafana
8090/TCP内部 GPG 访问
8149/TCPGitRPC 文件服务器访问
8300/TCPConsul
8301/TCPConsul
8302/TCPConsul
9000/TCPGit Daemon
9102/TCP页面文件服务器
9105/TCPLFS 服务器
9200/TCPElasticsearch
9203/TCP语义代码服务
9300/TCPElasticsearch
11211/TCPMemcache
161/UDPSNMP
8125/UDPStatsd
8301/UDPConsul
8302/UDPConsul
25827/UDPCollectd

配置负载均衡器

我们建议使用基于 TCP 的外部负载均衡器,它支持 PROXY 协议来跨节点分配流量。 请考虑以下负载均衡器配置:

  • 应将 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 支持。

  • 对于您的实例,请使用以下命令:

    $ ghe-config 'loadbalancer.proxy-protocol' 'true' && ghe-cluster-config-apply
  • 对于负载均衡器,请使用供应商提供的说明。

    PROXY 协议 TCP 端口映射
源端口目标端口服务描述
2223通过 SSH 访问 Git
8081HTTP
443444HTTPS
80808081Management Console HTTP
84438444Management Console HTTPS
94189419Git

在 GitHub Enterprise Server 上启用 X-Forwarded-For 支持

当 PROXY 协议不可用时才使用 X-Forwarded-For 协议。 X-Forwarded-For 标头仅适用于 HTTP 和 HTTPS。 基于 SSH 的 Git 连接报告的 IP 地址将显示负载均衡器 IP。

要启用 X-Fowarded-For 标头,请使用以下命令:

$ ghe-config 'loadbalancer.http-forward' 'true' && ghe-cluster-config-apply
协议 TCP 端口映射,无需 PROXY 支持即可使用
源端口目标端口服务描述
2222通过 SSH 访问 Git
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 查询应解析为负载均衡器。 我们建议您启用子域隔离。 如果启用了子域隔离,另一个通配符记录 (*.HOSTNAME) 也应解析为负载均衡器。 更多信息请参阅“启用子域隔离”。