参考架构:支持高达 20 RPS 或 1,000 名用户
- 版本:免费版、专业版、旗舰版
- 产品:GitLab 自我管理版
本参考架构旨在支持每秒 20 次请求(RPS)的峰值负载。根据实际数据,此负载通常对应于最多 1,000 名用户,包括手动操作和自动化交互。
如需完整的参考架构列表,请参阅可用的参考架构。
- 目标负载:API:20 RPS,Web:2 RPS,Git (拉取):2 RPS,Git (推送):1 RPS
- 高可用性:否。如需高可用性环境,请遵循经过修改的 3K 参考架构。
- 云原生混合:否。对于云原生混合环境,您可以遵循经过修改的混合参考架构。
- 不确定使用哪种参考架构? 如需更多信息,请参阅决定从哪种架构开始。
| 用户数 | 配置 | GCP 示例1 | AWS 示例1 | Azure 示例1 |
|---|---|---|---|---|
| 高达 1,000 名用户或 20 RPS | 8 vCPU, 16 GB 内存 | n1-standard-82 |
c5.2xlarge |
F8s v2 |
脚注:
- 此处提供的机器类型示例仅用于说明目的。这些类型已在验证和测试中使用,但并非旨在作为硬性规定。支持切换到满足所列要求的其他机器类型,包括可用的 ARM 变体。更多信息请参阅支持的机器类型。
- 对于 GCP,我们选择了与推荐配置(8 vCPU 和 16 GB RAM)最接近且等效的标准机器类型。如果需要,也可以使用自定义机器类型。
下图显示,虽然 GitLab 可以安装在单个服务器上,但其内部由多个服务组成。当实例进行扩展时,这些服务会根据其特定需求被分离并独立扩展。
在某些情况下,您可以将某些服务利用 PaaS (平台即服务) 来实现。例如,您可以将云对象存储用于某些文件系统。为了实现冗余,某些服务会变成节点集群并存储相同的数据。
在水平扩展的 GitLab 配置中,需要各种辅助服务来协调集群或发现资源。例如,用于 PostgreSQL 连接管理的 PgBouncer,或用于 Prometheus 端点发现的 Consul。
@startuml 1k
card "**Prometheus**" as monitor #7FFFD4
package "GitLab 单服务器" as gitlab-single-server {
together {
card "**GitLab Rails**" as gitlab #32CD32
card "**Gitaly**" as gitaly #FF8C00
card "**PostgreSQL**" as postgres #4EA7FF
card "**Redis**" as redis #FF6347
card "**Sidekiq**" as sidekiq #ff8dd1
}
card "本地存储" as local_storage #white
}
gitlab -[#32CD32]--> gitaly
gitlab -[#32CD32]--> postgres
gitlab -[#32CD32]--> redis
gitlab -[#32CD32]--> sidekiq
gitaly -[#32CD32]--> local_storage
postgres -[#32CD32]--> local_storage
sidekiq -[#32CD32]--> local_storage
gitlab -[#32CD32]--> local_storage
monitor .[#7FFFD4]u-> gitlab
monitor .[#7FFFD4]u-> sidekiq
monitor .[#7FFFD4]-> postgres
monitor .[#7FFFD4]-> gitaly
monitor .[#7FFFD4,norank]--> redis
@enduml
要求
在继续之前,请查看参考架构的要求。
测试方法
20 RPS / 1k 用户参考架构旨在满足大多数常见工作流程。GitLab 会定期针对以下端点吞吐量目标进行冒烟测试和性能测试:
| 端点类型 | 目标吞吐量 |
|---|---|
| API | 20 RPS |
| Web | 2 RPS |
| Git (拉取) | 2 RPS |
| Git (推送) | 1 RPS |
这些目标基于实际客户数据,反映了指定用户数下的总环境负载,包括 CI 流水线和其他工作负载。
有关我们测试方法的更多信息,请参阅验证和测试结果部分。
性能注意事项
如果您的环境存在以下情况,您可能需要进行额外调整:
在这些情况下,请参阅扩展环境以获取更多信息。如果您认为这些注意事项可能适用于您,请根据需要联系我们以获取额外指导。
设置说明
要为此默认参考架构安装 GitLab,请使用标准的安装说明。
您还可以选择性地将 GitLab 配置为使用外部 PostgreSQL 服务或外部对象存储服务。这可以提高性能和可靠性,但会增加复杂性。
配置高级搜索
- 版本:专业版、旗舰版
- 产品:GitLab 自我管理版
您可以利用 Elasticsearch 并启用高级搜索,以便在整个 GitLab 实例中进行更快、更高级的代码搜索。
Elasticsearch 集群的设计和要求取决于您的数据。有关如何与您的实例一同设置 Elasticsearch 集群的建议最佳实践,请参阅选择最佳集群配置。
使用 Helm Charts 的云原生混合参考架构
在云原生混合参考架构的设置中,选定的无状态组件会使用我们官方的 Helm Charts 部署在 Kubernetes 中。有状态组件则通过 Linux 软件包部署在计算虚拟机中。
可在 Kubernetes 中使用的最小参考架构是 2k 或 40 RPS GitLab 云原生混合(非高可用)和 3k 或 60 RPS GitLab 云原生混合(高可用)。
对于服务用户数较少或 RPS 较低的环境,您可以降低节点规格。您可以根据用户数量,按需降低所有建议的节点规格。但是,不应低于通用要求。
后续步骤
现在,您拥有一个全新的 GitLab 环境,其核心功能已相应配置完毕。根据您的需求,您可能需要配置其他可选的 GitLab 功能。更多信息请参阅安装 GitLab 后的步骤。
根据您的环境和需求,设置其他功能可能需要额外的硬件要求或调整。更多信息请参阅各个功能页面。