Load Balancer for multi-node GitLab

原文:https://docs.gitlab.com/ee/administration/high_availability/load_balancer.html

Load Balancer for multi-node GitLab

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

SSL

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

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

Application nodes terminate SSL

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

有关管理 SSL 证书和配置 NGINX 的详细信息,请参见NGINX HTTPS 文档 .

Load Balancer(s) terminate SSL without backend SSL

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

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

Load Balancer(s) terminate SSL with backend SSL

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

在这种情况下,负载均衡器和 NGINX 之间的流量也将是安全的. 无需为代理 SSL 添加配置,因为连接将一直保持安全. 但是,需要将配置添加到 GitLab 来配置 SSL 证书. 有关管理 SSL 证书和配置 NGINX 的详细信息,请参见NGINX HTTPS 文档 .

Ports

Basic ports

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

GitLab Pages Ports

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

LB 端口 后端端口 Protocol
80 变化( 1 HTTP
443 变化( 1 TCP( 2
  • 1 ):GitLab 页面的后端端口取决于gitlab_pages['external_http']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 主机名(例如altssh.gitlab.example.com配置 DNS.

LB 端口 后端端口 Protocol
443 22 TCP

Readiness check

强烈建议多节点部署将负载平衡器配置为利用就绪检查,以确保在将流量路由到节点之前准备好接受流量. 在使用 Puma 时,这一点尤其重要,因为在重新启动过程中会有短暂的一段时间,Puma 将不接受请求.


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

  1. Configure the database
  2. Configure Redis
  3. Configure NFS
  4. Configure the GitLab application servers