{{< details >}}

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: 私有化部署

{{< /details >}}

在一个多节点的极狐GitLab 配置中,你需要一个负载均衡器来将流量路由到应用服务器。关于使用哪种负载均衡器或具体配置的细节超出了极狐GitLab 文档的范围。我们希望,如果你正在管理像极狐GitLab 这样的高可用系统,你已经有了一个负载均衡器的选择。一些示例包括 HAProxy(开源)、F5 Big-IP LTM 和 Citrix NetScaler。本文档概述了与极狐GitLab 一起使用的端口和协议。

SSL

你想如何在你的多节点环境中处理 SSL?有几种不同的选项:

  • 每个应用节点终止 SSL
  • 负载均衡器终止 SSL,负载均衡器和应用节点之间的通信不安全
  • 负载均衡器终止 SSL,负载均衡器和应用节点之间的通信是安全的

应用节点终止 SSL

将你的负载均衡器配置为以 ‘TCP’ 而不是 ‘HTTP(S)’ 协议通过 443 端口连接。这将连接传递给应用节点的 NGINX 服务不变。NGINX 拥有 SSL 证书并监听 443 端口。

查看 HTTPS 文档 以了解管理 SSL 证书和配置 NGINX 的详细信息。

负载均衡器终止 SSL 而没有后端 SSL

将你的负载均衡器配置为使用 HTTP(S) 协议而不是 TCP。负载均衡器负责管理 SSL 证书和终止 SSL。

由于负载均衡器和极狐GitLab 之间的通信不安全,因此需要一些额外的配置。查看 代理 SSL 文档 以获取详细信息。

负载均衡器终止 SSL 并具有后端 SSL

将你的负载均衡器配置为使用 HTTP(S) 协议而不是 TCP。负载均衡器负责管理终端用户看到的 SSL 证书。

在这种情况下,负载均衡器和 NGINX 之间的流量是安全的。由于连接是全程安全的,因此无需为代理 SSL 添加配置。但是,必须在极狐GitLab 中添加配置以配置 SSL 证书。查看 HTTPS 文档 以了解管理 SSL 证书和配置 NGINX 的详细信息。

端口

基本端口

LB 端口 后端端口 协议
80 80 HTTP (1)
443 443 TCP 或 HTTPS (1) (2)
22 22 TCP
  • (1): Web 终端 支持要求你的负载均衡器正确处理 WebSocket 连接。使用 HTTP 或 HTTPS 代理时,这意味着你的负载均衡器必须配置为通过 ConnectionUpgrade hop-by-hop 头。查看 Web 终端 集成指南以获取更多详细信息。
  • (2): 使用 443 端口的 HTTPS 协议时,你必须向负载均衡器添加 SSL 证书。如果你希望在极狐GitLab 应用服务器终止 SSL,请使用 TCP 协议。

极狐GitLab Pages 端口

如果你使用极狐GitLab Pages 并支持自定义域名,则需要一些额外的端口配置。极狐GitLab Pages 需要一个单独的虚拟 IP 地址。将 DNS 配置指向 /etc/gitlab/gitlab.rb 中的 pages_external_url 到新的虚拟 IP 地址。查看 极狐GitLab Pages 文档 以获取更多信息。

LB 端口 后端端口 协议
80 变化 (1) HTTP
443 变化 (1) TCP (2)
  • (1): 极狐GitLab Pages 的后端端口取决于 gitlab_pages['external_http']gitlab_pages['external_https'] 设置。查看 极狐GitLab Pages 文档 以获取更多详细信息。
  • (2): 极狐GitLab Pages 的 443 端口应始终使用 TCP 协议。用户可以配置自定义域名和自定义 SSL,如果 SSL 在负载均衡器终止则无法实现。

替代 SSH 端口

一些组织有政策反对打开 SSH 端口 22。在这种情况下,配置允许用户在 443 端口上使用 SSH 的替代 SSH 主机名可能会有所帮助。替代 SSH 主机名需要一个与上述其他极狐GitLab HTTP 配置不同的新虚拟 IP 地址。

为替代 SSH 主机名配置 DNS,例如 altssh.gitlab.example.com

LB 端口 后端端口 协议
443 22 TCP

准备检查

强烈建议多节点部署配置负载均衡器以使用 准备检查,以确保节点准备好接受流量,然后再将流量路由到它。这对于使用 Puma 时尤其重要,因为在重启期间有一个短暂的时间 Puma 不接受请求。

{{< alert type=”warning” >}}

在极狐GitLab 版本 15.4 到 15.8 中使用 all=1 参数进行准备检查可能导致 增加 Praefect 内存使用 并导致内存错误。

{{< /alert >}}

故障排除

健康检查通过负载均衡器返回 408 HTTP 代码

极狐GitLab 版本的默认加密可以查看 files/gitlab-cookbooks/gitlab/attributes/default.rb 文件并选择与你的目标极狐GitLab 版本相关的 Git 标签(例如 15.0.5+ee.0)。如果你的负载均衡器需要,你可以为 NGINX 定义 自定义 SSL 加密

一些页面和链接被下载而不是在浏览器中渲染

一些极狐GitLab 功能需要使用 WebSocket。在某些没有启用负载均衡器上的 WebSocket 支持的情况下,你可能会遇到一些链接或页面被下载而不是在浏览器中渲染。下载的文件可能包含如下内容:

One or more reserved bits are on: reserved1 = 1, reserved2 = 0, reserved3 = 0

你的负载均衡器必须能够支持 HTTP WebSocket 请求。如果链接以这种方式下载,请检查你的负载均衡器配置并确保启用了 HTTP WebSocket 请求。