Load Balancer for multi-node GitLab

Load Balancer for multi-node GitLab

在多节点 GitLab 配置中,您将需要一个负载平衡器才能将流量路由到应用程序服务器. 有关使用负载均衡器或进行确切配置的细节超出了 GitLab 文档的范围. 我们希望,如果您要管理像 GitLab 这样的 HA 系统,那么已经选择了负载均衡器. 一些示例包括 HAProxy(开源),F5 Big-IP LTM 和 Citrix Net Scaler. 本文档将概述需要在 GitLab 上使用哪些端口和协议.

您将如何在多节点环境中处理 SSL? 有几种不同的选择:

  • 负载平衡器终止 SSL,并且负载平衡器与应用程序节点之间的通信不安全
  • 负载平衡器终止 SSL,并且负载平衡器与应用程序节点之间的通信是安全

将您的负载均衡器配置为以” TCP”而不是” HTTP(S)”协议的形式在端口 443 上传递连接. 这会将连接保持不变地传递到应用程序节点 NGINX 服务. NGINX 将具有 SSL 证书并在端口 443 上侦听.

Load Balancer(s) terminate SSL without backend SSL

将您的负载均衡器配置为使用” HTTP(S)”协议而不是” TCP”. 然后,负载均衡器将负责管理 SSL 证书和终止 SSL.

由于负载均衡器和 GitLab 之间的通信将不安全,因此需要一些其他配置. 有关详细信息,请参见 .

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

Basic ports

  • 1 ): 支持要求您的负载平衡器正确处理 WebSocket 连接. 当使用 HTTP 或 HTTPS 代理,这意味着负载平衡器必须被配置为通过和Upgrade逐跳头. 有关更多详细信息,请参见Web 终端集成指南.
  • 2 ):当对端口 443 使用 HTTPS 协议时,需要向负载均衡器添加 SSL 证书. 如果您想在 GitLab 应用程序服务器上终止 SSL,请使用 TCP 协议.

如果您使用具有自定义域支持的 GitLab 页面,则将需要一些其他端口配置. GitLab 页面需要一个单独的虚拟 IP 地址. 配置 DNS,将的/etc/gitlab/gitlab.rb指向新的虚拟 IP 地址. 有关更多信息,请参见 .

  • 1 ):GitLab 页面的后端端口取决于和gitlab_pages['external_https']设置. 有关更多详细信息,请参见GitLab Pages 文档 .
  • 2 ):GitLab 页面的端口 443 应该始终使用 TCP 协议. 用户可以使用自定义 SSL 配置自定义域,如果 SSL 在负载均衡器处终止,则不可能.

Alternate SSH Port

某些组织有禁止打开 SSH 端口 22 的策略.在这种情况下,配置允许用户在端口 443 上使用 SSH 的备用 SSH 主机名可能会有所帮助.与其他 GitLab 相比,备用 SSH 主机名将需要一个新的虚拟 IP 地址.上面的 HTTP 配置.

为备用 SSH 主机名(例如配置 DNS.


阅读更多有关高可用性配置的信息:

  1. Configure the database
  2. Configure NFS