网络考虑� �
对于集群而言,最简单的网络设计是将节点置于单个 LAN 上。 如果群集必须跨子网,我们不建议在网络之间配置任何防火墙规则。 节点之间的延迟应小于 1 毫秒。
为获取高可用性,具有主动节点的网络与具有被动节点的网络之间的延迟必须小于 70 毫秒。 我们不建议在两个网络之间配置防火墙。
最终用户的应用程序端口
应用程序端口为最终用户提供 Web 应用程序和 Git 访问。
端口 | 描述 | � 密 |
---|---|---|
22/TCP | 通过 SSH 访问 Git | 是 |
25/TCP | SMTP | 需要 STARTTLS |
80/TCP | HTTP | 否 (启用 SSL 时,此端口重定向到 HTTPS) |
443/TCP | HTTPS | 是 |
9418/TCP | 简单的 Git 协议端口 (在私有模式下禁用) | 否 |
管理端口
最终用户在使用基本应用程序时不需要管理端口。
端口 | 描述 | � 密 |
---|---|---|
ICMP | ICMP Ping | 否 |
122/TCP | 管理 SSH | 是 |
161/UDP | SNMP | 否 |
8080/TCP | Management Console HTTP | 否 (启用 SSL 时,此端口重定向到 HTTPS) |
8443/TCP | Management Console HTTPS | 是 |
集群通信端口
如果节点之间存在网络级防火墙,则需要访问这些端口。 节点之间的通信未� 密。 这些端口不应从外部访问。
端口 | 描述 |
---|---|
1336/TCP | 内部 API |
3033/TCP | 内部 SVN 访问 |
3037/TCP | 内部 SVN 访问 |
3306/TCP | MySQL |
4486/TCP | 管理者访问 |
5115/TCP | 存储后端 |
5208/TCP | 内部 SVN 访问 |
6379/TCP | Redis |
8001/TCP | Grafana |
8090/TCP | 内部 GPG 访问 |
8149/TCP | GitRPC 文件服务器访问 |
8300/TCP | Consul |
8301/TCP | Consul |
8302/TCP | Consul |
9000/TCP | Git Daemon |
9102/TCP | 页面文件服务器 |
9105/TCP | LFS 服务器 |
9200/TCP | Elasticsearch |
9203/TCP | 语义代� �服务 |
9300/TCP | Elasticsearch |
11211/TCP | Memcache |
161/UDP | SNMP |
8125/UDP | Statsd |
8301/UDP | Consul |
8302/UDP | Consul |
25827/UDP | Collectd |
配置负载均衡器
我们建议使用基于 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 支持。
Note: GitHub Enterprise Server supports PROXY Protocol V1, which is incompatible with AWS Network Load Balancers. If you use AWS Network Load Balancers with GitHub Enterprise Server, do not enable PROXY support.
-
对于您的实例,请使用以下命令:
$ ghe-config 'loadbalancer.proxy-protocol' 'true' && ghe-cluster-config-apply
-
对于负载均衡器,请使用供应商提供的说明。
PROXY 协议 TCP 端口� 射
源端口 | 目� �端口 | 服务描述 |
---|---|---|
22 | 23 | 通过 SSH 访问 Git |
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。
要启用 X-Forwarded-For
� �头,请使用以下命令:
$ ghe-config 'loadbalancer.http-forward' 'true' && ghe-cluster-config-apply
协议 TCP 端口� 射,� 需 PROXY 支持即可使用
源端口 | 目� �端口 | 服务描述 |
---|---|---|
22 | 22 | 通过 SSH 访问 Git |
25 | 25 | SMTP |
80 | 80 | HTTP |
443 | 443 | HTTPS |
8080 | 8080 | Management Console HTTP |
8443 | 8443 | Management Console HTTPS |
配置状态检查
如果预配置的检查在该节点上失败,则状态检查允许负载均衡器停止向未响应的节点发送流量。 如果集群节点出现故障,则与冗余节点配对的状态检查可提供高可用性。
配置负载均衡器以检查以下 URL 之一:
https://HOSTNAME/status
,如果 HTTPS 已启用(默认)http://HOSTNAME/status
,如果 HTTPS 被禁用
如果节点运行正常并且可为最终用户的请求提供服务,则检查将返回状态代� � 200
(OK)。
注意: 当设备处于维护模式时,https://HOSTNAME/status
URL 将返回状态代� � 503
(服务不可用)。 更多信息请参阅“启用和排定维护模式”。
DNS 要求
对 GitHub Enterprise Server 主机名的 DNS 查询应解析为负载均衡器。 我们建议您启用子域隔离。 如果启用了子域隔离,另一个通配符记录 (*.HOSTNAME
) 也应解析为负载均衡器。 更多信息请参阅“启用子域隔离”。