多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Load Balancer for multi-node GitLab > 原文:[https://docs.gitlab.com/ee/administration/high_availability/load_balancer.html](https://docs.gitlab.com/ee/administration/high_availability/load_balancer.html) * [SSL](#ssl) * [Application nodes terminate SSL](#application-nodes-terminate-ssl) * [Load Balancer(s) terminate SSL without backend SSL](#load-balancers-terminate-ssl-without-backend-ssl) * [Load Balancer(s) terminate SSL with backend SSL](#load-balancers-terminate-ssl-with-backend-ssl) * [Ports](#ports) * [Basic ports](#basic-ports) * [GitLab Pages Ports](#gitlab-pages-ports) * [Alternate SSH Port](#alternate-ssh-port) * [Readiness check](#readiness-check) # Load Balancer for multi-node GitLab[](#load-balancer-for-multi-node-gitlab "Permalink") 在多节点 GitLab 配置中,您将需要一个负载平衡器才能将流量路由到应用程序服务器. 有关使用负载均衡器或进行确切配置的细节超出了 GitLab 文档的范围. 我们希望,如果您要管理像 GitLab 这样的 HA 系统,那么已经选择了负载均衡器. 一些示例包括 HAProxy(开源),F5 Big-IP LTM 和 Citrix Net Scaler. 本文档将概述需要在 GitLab 上使用哪些端口和协议. ## SSL[](#ssl "Permalink") 您将如何在多节点环境中处理 SSL? 有几种不同的选择: * 每个应用程序节点终止 SSL * 负载平衡器终止 SSL,并且负载平衡器与应用程序节点之间的通信不安全 * 负载平衡器终止 SSL,并且负载平衡器与应用程序节点之间的通信是*安全*的 ### Application nodes terminate SSL[](#application-nodes-terminate-ssl "Permalink") 将您的负载均衡器配置为以" TCP"而不是" HTTP(S)"协议的形式在端口 443 上传递连接. 这会将连接保持不变地传递到应用程序节点 NGINX 服务. NGINX 将具有 SSL 证书并在端口 443 上侦听. 有关管理 SSL 证书和配置 NGINX 的详细信息,请参见[NGINX HTTPS 文档](https://docs.gitlab.com/omnibus/settings/nginx.html) . ### Load Balancer(s) terminate SSL without backend SSL[](#load-balancers-terminate-ssl-without-backend-ssl "Permalink") 将您的负载均衡器配置为使用" HTTP(S)"协议而不是" TCP". 然后,负载均衡器将负责管理 SSL 证书和终止 SSL. 由于负载均衡器和 GitLab 之间的通信将不安全,因此需要一些其他配置. 有关详细信息,请参见[NGINX 代理的 SSL 文档](https://docs.gitlab.com/omnibus/settings/nginx.html) . ### Load Balancer(s) terminate SSL with backend SSL[](#load-balancers-terminate-ssl-with-backend-ssl "Permalink") 将您的负载均衡器配置为使用" HTTP(S)"协议而不是" TCP". 负载平衡器将负责管理最终用户将看到的 SSL 证书. 在这种情况下,负载均衡器和 NGINX 之间的流量也将是安全的. 无需为代理 SSL 添加配置,因为连接将一直保持安全. 但是,需要将配置添加到 GitLab 来配置 SSL 证书. 有关管理 SSL 证书和配置 NGINX 的详细信息,请参见[NGINX HTTPS 文档](https://docs.gitlab.com/omnibus/settings/nginx.html) . ## Ports[](#ports "Permalink") ### Basic ports[](#basic-ports "Permalink") | LB 端口 | 后端端口 | Protocol | | --- | --- | --- | | 80 | 80 | HTTP( *1* ) | | 443 | 443 | TCP 或 HTTPS( *1* )( *2* ) | | 22 | 22 | TCP | * ( *1* ): [Web 终端](../../ci/environments/index.html#web-terminals)支持要求您的负载平衡器正确处理 WebSocket 连接. 当使用 HTTP 或 HTTPS 代理,这意味着负载平衡器必须被配置为通过`Connection`和`Upgrade`逐跳头. 有关更多详细信息,请参见[Web 终端](../integration/terminal.html)集成指南. * ( *2* ):当对端口 443 使用 HTTPS 协议时,需要向负载均衡器添加 SSL 证书. 如果您想在 GitLab 应用程序服务器上终止 SSL,请使用 TCP 协议. ### GitLab Pages Ports[](#gitlab-pages-ports "Permalink") 如果您使用具有自定义域支持的 GitLab 页面,则将需要一些其他端口配置. GitLab 页面需要一个单独的虚拟 IP 地址. 配置 DNS,将`pages_external_url`的`/etc/gitlab/gitlab.rb`指向新的虚拟 IP 地址. 有关更多信息,请参见[GitLab 页面文档](../pages/index.html) . | LB 端口 | 后端端口 | Protocol | | --- | --- | --- | | 80 | 变化( *1* ) | HTTP | | 443 | 变化( *1* ) | TCP( *2* ) | * ( *1* ):GitLab 页面的后端端口取决于`gitlab_pages['external_http']`和`gitlab_pages['external_https']`设置. 有关更多详细信息,请参见[GitLab Pages 文档](../pages/index.html) . * ( *2* ):GitLab 页面的端口 443 应该始终使用 TCP 协议. 用户可以使用自定义 SSL 配置自定义域,如果 SSL 在负载均衡器处终止,则不可能. ### Alternate SSH Port[](#alternate-ssh-port "Permalink") 某些组织有禁止打开 SSH 端口 22 的策略.在这种情况下,配置允许用户在端口 443 上使用 SSH 的备用 SSH 主机名可能会有所帮助.与其他 GitLab 相比,备用 SSH 主机名将需要一个新的虚拟 IP 地址.上面的 HTTP 配置. 为备用 SSH 主机名(例如`altssh.gitlab.example.com`配置 DNS. | LB 端口 | 后端端口 | Protocol | | --- | --- | --- | | 443 | 22 | TCP | ## Readiness check[](#readiness-check "Permalink") 强烈建议多节点部署将负载平衡器配置为利用[就绪检查,](../../user/admin_area/monitoring/health_check.html#readiness)以确保在将流量路由到节点之前准备好接受流量. 在使用 Puma 时,这一点尤其重要,因为在重新启动过程中会有短暂的一段时间,Puma 将不接受请求. * * * 阅读更多有关高可用性配置的信息: 1. [Configure the database](../postgresql/replication_and_failover.html) 2. [Configure Redis](redis.html) 3. [Configure NFS](nfs.html) 4. [Configure the GitLab application servers](gitlab.html)