关于负载均衡器
负载均衡器设计使用网络设备将 Git 和 HTTP 流量引导至各个 GitHub Enterprise Server 设备。 您可以使用负载均衡器限制引导至设备的流量以确保安全,或者在没有 DNS 记录更改的情况下根据需要重定向流量。 我们强烈建议使用支持 PROXY 协议的基于 TCP 负载均衡器。
对 GitHub Enterprise Server 主机名的 DNS 查询应解析为负载均衡器。 我们建议您启用子域隔离。 如果启用了子域隔离,另一个通配符记录 *.HOSTNAME
也应解析到负载均衡器。 有关详细信息,请参阅“启用子域隔离”。
处理客户端连接信息
由于与 GitHub Enterprise Server 的客户端连接来自负载均衡器,因此客户端 IP 可丢失。
如果您的负载均衡器可以支持 PROXY 协议,我们强烈建议您实施该协议。 如果不能提供 PROXY 支持,使用 X-Forwarded-For
标头也可以对 HTTP 和 HTTPS 端口进行负载均衡。
Caution
启用了 PROXY 支持或 HTTP 转发时,重要的是确保没有外部流量可以直接到达 GitHub Enterprise Server 设备。 如果未能正确阻止外部流量,则源 IP 地址可能被伪造。
Warning
在负载均衡器上终止 HTTPS 连接时,从负载均衡器到 GitHub Enterprise Server 的请求也需要使用 HTTPS。 不支持降级到 HTTP 连接。
在 你的 GitHub Enterprise Server 实例 上启用 PROXY 协议支持
强烈建议同时为实例和负载均衡器启用 PROXY 协议支持。 按照您的供应商提供的说明操作,在负载均衡器上启用 PROXY 协议。 有关详细信息,请参阅 PROXY 协议文档。
Note
GitHub Enterprise Server 支持与 AWS 网络负载均衡器不兼容的 PROXY 协议 V1。 如果将 AWS 网络负载均衡器与 GitHub Enterprise Server 配合使用,请不要启用 PROXY 支持。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”。
-
在“设置”边栏中,按下“隐私”并取消选中“隐私模式”。
-
在“外部负载均衡器”下,选择“启用对 PROXY 协议的支持”。
-
在“设置”边栏下,单击“保存设置”。
Note
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
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 标头” 。
-
在“设置”边栏下,单击“保存设置”。
Note
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
协议 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
(正常)。 有关详细信息,请参阅“监视高可用性配置”。
Note
当设备处于维护模式时,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 协议时,这是最常见的。
若要启用实时更新,可能需要重新配置负载均衡器或代理。 有关详细信息,请参阅负载均衡器文档。