关于负载均衡器
负载均衡器设计使用网络设备将 Git 和 HTTP 流量引导至各个 GitHub Enterprise Server 设备。 您可以使用负载均衡器限制引导至设备的流量以确保安全,或者在没有 DNS 记录更改的情况下根据需要重定向流量。 我们强烈建议使用支持 PROXY 协议的基于 TCP 负载均衡器。
对 GitHub Enterprise Server 主机名的 DNS 查询应解析为负载均衡器。 我们建议您启用子域隔离。 如果启用了子域隔离,另一个通配符记录 *.HOSTNAME
也应解析到负载均衡器。 有关详细信息,请参阅“启用子域隔离”。
处理客户端连接信息
由于与 GitHub Enterprise Server 的客户端连接来自负载均衡器,因此客户端 IP 可丢失。
如果您的负载均衡器可以支持 PROXY 协议,我们强烈建议您实施该协议。 如果不能提供 PROXY 支持,使用 X-Forwarded-For
标头也可以对 HTTP 和 HTTPS 端口进行负载均衡。
安全警告:启用了 PROXY 支持或 HTTP 转发时,重要的是确保没有外部流量可以直接到达 GitHub Enterprise Server 设备。 如果未能正确阻止外部流量,则源 IP 地址可能被伪造。
警告:在负载均衡器上终止 HTTPS 连接时,从负载均衡器到 GitHub Enterprise Server 的请求也需要使用 HTTPS。 不支持降级到 HTTP 连接。
在 你的 GitHub Enterprise Server 实例 上启用 PROXY 协议支持
强烈建议同时为实例和负载均衡器启用 PROXY 协议支持。 按照您的供应商提供的说明操作,在负载均衡器上启用 PROXY 协议。 有关详细信息,请参阅 PROXY 协议文档。
注意:GitHub Enterprise Server 支持与 AWS 网络负载均衡器不兼容的 PROXY 协议 V1。 如果将 AWS 网络负载均衡器与 GitHub Enterprise Server 配合使用,请不要启用 PROXY 支持。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”。
-
在“设置”边栏中,按下“隐私”并取消选中“隐私模式”。
-
在“外部负载均衡器”下,选择“启用对 PROXY 协议的支持”。
-
在“设置”边栏下,单击“保存设置”。
注意:保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
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 地址。 在某些环境中,实例的审核日志中的客户端 IP 地址可能会错误地显示为 127.0.0.1
。
Warning
如果在 你的 GitHub Enterprise Server 实例 和负载均衡器上配置 X-Forwarded-For
支持,则可能无法连接到 管理控制台。 有关详细信息,请参阅“结合使用 GitHub Enterprise Server 和负载均衡器”。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”。
-
在“设置”边栏中,按下“隐私”并取消选中“隐私模式”。
-
在“外部负载均衡器”下,选择“允许 HTTP X-Forwarded-For 标头” 。
-
在“设置”边栏下,单击“保存设置”。
注意:保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
协议 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 |
配置健康状态检查
如果预配置的检查在该节点上失败,则状态检查允许负载均衡器停止向未响应的节点发送流量。 如果实例因维护或计划外的故障而离线,负载均衡器可以显示状态页面。 在高可用性 (HA) 配置下,负载均衡器可用作故障转移策略的组成部分。 不过,不支持 HA 对的自动故障转移。 在副本示例设备开始为请求提供服务之前,你必须对其进行手动升级。 有关详细信息,请参阅“配置高可用性”。
配置负载均衡器,以检查以下 URL。
http(s)://HOSTNAME/status
如果节点运行正常并且可为最终用户的请求提供服务,则终结点将返回状态代码 200
(正常)。 有关详细信息,请参阅“监视高可用性配置”。
注意: 当设备处于维护模式时,https://HOSTNAME/status
URL 将返回状态代码 503
(服务不可用)。 有关详细信息,请参阅“启用和排定维护模式”。
通过负载均衡器排查连接问题
如果无法通过负载均衡器连接到 你的 GitHub Enterprise Server 实例 上的服务,可以查看以下信息来解决问题。
Note
始终在过渡环境中测试对网络基础结构和实例配置的更改。 有关详细信息,请参阅“设置暂存实例”。
错误:“会话已过期”,无法连接到 管理控制台
如果在实例和负载均衡器上启用对 X-Forwarded-For
标头的支持,则可能无法访问实例的 管理控制台。 有关连接所需的 管理控制台 和端口的详细信息,请参阅“从 Web UI 管理实例”和“网络端口”。
如果 你的 GitHub Enterprise Server 实例 指示通过负载均衡器连接到 管理控制台 时会话已过期,请在负载均衡器上尝试以下配置之一。
- 在端口 8080 和 8443 上禁用连接到实例的
X-Forwarded-For
标头。 - 将负载均衡器配置为在第 4 层上运行,并使用 PROXY 协议(而不是
X-Forwarded-For
)来传递客户端 IP 地址。 有关详细信息,请参阅在“在 你的 GitHub Enterprise Server 实例 上启用 PROXY 协议支持”。
有关详细信息,请参阅负载均衡器文档。
对问题的实时更新和检查运行不起作用
当通过负载均衡器或反向代理访问 你的 GitHub Enterprise Server 实例 时,预期的实时更新(如有关通知标记中问题和更改的新注释或检查运行输出)在页面刷新之前可能不会显示。 当反向代理或负载均衡器在第 7 层模式下运行或不支持所需的 Websocket 协议时,这是最常见的。
若要启用实时更新,可能需要重新配置负载均衡器或代理。 有关详细信息,请参阅负载均衡器文档。