432.md 5.8 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
# 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)