Skip to main content

群集网络配置

GitHub Enterprise Server 群集需要正确的 DNS 名称解析、负载均衡以及节点间通信。

谁可以使用此功能?

GitHub 确定聚类分析的资格,并且必须为实例的许可证启用配置。 聚类分析需要仔细规划和额外的管理开销。 有关详细信息,请参阅“关于集群”。

关于 GitHub Enterprise Server 群集的网络

GitHub Enterprise Server 群集中的每个节点都必须能够通过网络与群集中的所有其他节点通信。 可以查看最终用户、管理以及节点之间的通信所需的端口和协议。 若要在前端节点之间分配流量,GitHub 建议配置外部负载均衡器。

网络注意事项

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

主节点和副本节点之间的延迟不得超过 70 毫秒。 我们不建议在两个节点之间配置防火墙。

最终用户的应用程序端口

应用程序端口为最终用户提供 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 服务的节点。 这些是提供外部客户端请求的唯一节点。
  • 不应启用粘性会话。

Warning

在负载均衡器上终止 HTTPS 连接时,从负载均衡器到 GitHub Enterprise Server 的请求也需要使用 HTTPS。 不支持降级到 HTTP 连接。

处理客户端连接信息

由于客户端与集群的连接来自负载均衡器,因此客户端 IP 地址可能会丢失。 要正确捕获客户端连接信息,需要考虑其他因素。

如果您的负载均衡器可以支持 PROXY 协议,我们强烈建议您实施该协议。 如果不能提供 PROXY 支持,使用 X-Forwarded-For 标头也可以对 HTTP 和 HTTPS 端口进行负载均衡。

Caution

启用了 PROXY 支持或 HTTP 转发时,重要的是确保没有外部流量可以直接到达 GitHub Enterprise Server 设备。 如果未能正确阻止外部流量,则源 IP 地址可能被伪造。

在 GitHub Enterprise Server

上启用 PROXY 支持

我们强烈建议您为实例和负载均衡器启用 PROXY 支持。

Note

GitHub Enterprise Server 支持与 AWS 网络负载均衡器不兼容的 PROXY 协议 V1。 如果将 AWS 网络负载均衡器与 GitHub Enterprise Server 配合使用,请不要启用 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 地址。 在某些环境中,实例的审核日志中的客户端 IP 地址可能会错误地显示为 127.0.0.1

若要启用 X-Forwarded-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。

http(s)://HOSTNAME/status

如果节点运行正常并且可为最终用户的请求提供服务,则终结点将返回状态代码 200(正常)。 有关详细信息,请参阅“监视高可用性配置”。

Note

当设备处于维护模式时,https://HOSTNAME/status URL 将返回状态代码 503(服务不可用)。 有关详细信息,请参阅“启用和排定维护模式”。

DNS 要求

对 GitHub Enterprise Server 主机名的 DNS 查询应解析为负载均衡器。 我们建议您启用子域隔离。 如果启用了子域隔离,另一个通配符记录 *.HOSTNAME 也应解析到负载均衡器。 有关详细信息,请参阅“启用子域隔离”。